解决一个神出鬼没的 Bug

一句话说明问题

升级 org-zettel-ref-mode 的数据库格式导致加载数据库的函数无法读取正确的数据库,结果引发内存错误链。报错信息仅显示 “let*: End of file during parsing”,未提供具体细节。

辛苦的过程

  1. 起初以为是代码括号匹配问题,检查后无果。
  2. Emacs 群中请教后仍未找到问题。
  3. 尝试将所有 let* 改为 let,但问题依旧。

灵光一闪

总结经验后怀疑是别处问题。直接运行导致报错的函数,终于获得详细的错误报告,从而顺利解决问题。

问题分析

关键错误:

  • read 函数失败返回 nil
  • 后续试图从 nil 中获取 :entries,导致问题传递。

调用链分析:

  1. org-zettel-ref-db-load()
  2. 内部 let* 执行失败,触发错误。