如果一个函数的代码巨长,对有些局部变量的值有疑问,然后想检查其中的局部变量的值,大家一般都是怎么做的呢? edebugger 只能找到出错的位置,但是没有办法显示变量的值。我现在的做法是对感觉可疑的变量做如下处理:
(some-fuction (prog1 var (message "%s" var)))
就是在 some-fuction
调用 var
变量之前,显示一下 var
的值,大家是怎么做的呢?
如果一个函数的代码巨长,对有些局部变量的值有疑问,然后想检查其中的局部变量的值,大家一般都是怎么做的呢? edebugger 只能找到出错的位置,但是没有办法显示变量的值。我现在的做法是对感觉可疑的变量做如下处理:
(some-fuction (prog1 var (message "%s" var)))
就是在 some-fuction
调用 var
变量之前,显示一下 var
的值,大家是怎么做的呢?
C-u C-M-x
(Edebug)
想观察 some-fuction
的参数可用 trace-function
遇到奇怪的问题,在Mac中,trace-function没有输出,同样的操作在Linux中有输出。
是不是,在Mac环境中要进行特殊设置?
跟平台没关系,被 trace 了的函数只要调用了,就会给出参数和返回值。
有时候其实直接print最方便
我最常用的就是 (message ...)
。
配合 advice (:before / :after / :around / :overide) 各种「截胡」手段。
不过如果在post-command-hook打印信息会堵塞minibuffer导致无法使用,这时候就要用用自制函数打印到其他buffer。
给我的scratch 打打广告
Stop your spam advertising
打广告就算了,还要让别人自己搜索。小伙子做人要厚道
M-x trace-function
也是用 Advice 实现的,打印参数和返回值,想想应该很容易实现。
谢谢你记得我
找bug比找链接可难多了
用这个更好吧? debug-on-variable-change
嗯,不过用的都是add-variable-watcher
,之前说的限制还在。
这个的文档还有个拼写错误,watcher写成watch了。
edebug
不能满足你需求吗?message
也是最常用手段。
嗯,这是只有26+才行。最近用了些,不知道效率如何。