如果一个函数的代码巨长,对有些局部变量的值有疑问,然后想检查其中的局部变量的值,大家一般都是怎么做的呢? 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比找链接可难多了
我记得之前看到过emacs加了一个跟踪变量的功能,找了一下:Watching variables。
读完以后发现这个功能限制很多,用处不是很大。
用这个更好吧? debug-on-variable-change
嗯,不过用的都是add-variable-watcher,之前说的限制还在。
这个的文档还有个拼写错误,watcher写成watch了。
edebug不能满足你需求吗?message也是最常用手段。
嗯,这是只有26+才行。最近用了些,不知道效率如何。