启动emacs时出现以下错误:(如 messages 缓冲区所示):
c-font-lock-fontify-region: Symbol's function definition is void: nil
如何在此功能中追踪导致错误的确切原因? debug-on-error是真的,但它仍然没有提供更多的信息。
答案 0 :(得分:6)
符号为nil
。
它没有命名函数。
一般来说,要调试错误,您需要将debug-on-error
设置为t
并查看*Backtrace*
缓冲区。
如果没有出现*Backtrace*
缓冲区(这种情况就是这种情况),这意味着发出错误信号的函数的调用者会捕获错误。您需要追踪代码condition-case
并禁用它。祝你好运: - (
查看c-font-lock-fontify-region
中的progmodes/cc-mode.el
定义,我看到了
(funcall (default-value 'font-lock-fontify-region-function)
new-beg new-end verbose)
如果(default-value 'font-lock-fontify-region-function)
为nil
,则很容易导致错误。
答案 1 :(得分:2)
即使错误被condition-case
捕获,为了获得回溯,您也可以尝试(setq debug-on-signal t)
。这会触发很多不是bug的情况,因此只能偶尔使用它,因为它确实会妨碍它,但在这种特殊情况下它可能会有所帮助。