我处于基于 Linux 的开发环境中,没有超级用户权限。
我的基本问题是,我通过 pdb 在 emacs 中设置的断点从不起作用。调试器从不会在这些断点处停止。
在调查了这个问题之后,我怀疑这是因为断点的路径与文件的真实路径不匹配。
首先,我从命令行看到的路径如下:
/home/me/a/b
但管理员已将其设置为 /home/me 实际上是指向隐藏挂载的符号链接
/.hidden/x/me/a/b
当我从启动 emacs/home/me/a/b
并尝试通过发出然后test.py
在此目录中进行调试时,缓冲区上的标题显示文件的完整路径是M-x pdb
pdb test.py
gud
/.hidden/x/me/a/b/test.py
然后,当我尝试使用在 python 文件中设置断点时M-x space
,我在缓冲区中看到的提示gud
是
Breakpoint X at /home/me/a/b/test.py:Y
因此,断点位于 下方,/home/me/a/b/test.py
但缓冲区标题处的文件路径gud
是 /.hidden/x/me/a/b/test.py
。并且调试器永远不会在断点处停止,这非常烦人。
cd
当我明确进入/.hidden/x/me/a/b/
并启动 emacs时,我的怀疑得到了证实。然后我可以设置断点,调试器确实会停在这些断点上。
目前,我的解决方案是明确cd
进入正确的路径并启动 emacs。
但是有更好的解决方案吗?是通过 emacs、bash 还是 python?
答案1
你可以强制 emacs 总是使用绝对实名打开文件:
(setq find-file-visit-truename t)