你怎么能去调试一个涉及defadvice的错误?
搜索解决方案我能找到的只是建议不要使用 defadvice,因为调试困难。阿门,但其他人的坏习惯无处不在,我总是遇到我什至无法开始追踪的错误。
你怎么能去调试一个涉及defadvice的错误?
搜索解决方案我能找到的只是建议不要使用 defadvice,因为调试困难。阿门,但其他人的坏习惯无处不在,我总是遇到我什至无法开始追踪的错误。
我还能想到的另一件事:
临时重命名defadvice
为defadvice-old
.
写下这个新版本defadvice
:
(defmacro defadvice (function args &rest body)
`(progn
(put ',(cadr args) 'source-position
(cons byte-compile-current-file byte-compile-read-position))
(defadvice-old ,function ,args ,@body)))
(symbol-plist <<name of advice>>)
一旦您需要它,它将在使用宏的文件的文件中具有位置。一种选择是让通知主体调用一个函数来完成它的工作,然后您可以改为调试该函数。
请注意,您可以评估(ad-deactivate 'function)
以停用指定的所有建议function
(这会将函数恢复为其未建议状态)。如果某些建议在您尝试追踪它时给您造成严重问题,这可能会有所帮助。