如何在Mac OS X上修复Aquamacs中的pdb?

2 投票
3 回答
674 浏览
提问于 2025-04-16 01:59

我正在用Aquamacs开发一个Django应用,但自从把Emacs升级到23.2.1后,Pdb就不工作了,我用的是Python 2.6.1。当我这样调用Pdb的时候:

M-x pdb
Run pdb (like this): pdb ./manage.py runserver

会出现一个gud-manage.py的窗口,里面只有这条信息(没有其他内容) -

Current directory is /path/to/my/source/

这个窗口对键盘输入没有反应,不过我可以右键点击发送退出或杀死信号。看起来Emacs没有正确捕捉到Pdb的输出。

有没有人遇到过这个问题,并且(希望)解决了它?我觉得这可能和gud-pdb-marker-regexp变量有关(链接中的第2点)。

相关问题

  1. 看起来这个问题从2007年就存在了
  2. 有一个人在Windows上提供了这个问题的解决方案(在Pdb脚本中的Python命令后面加上-u)。我试过这个方法,但对我来说并没有用。

3 个回答

0

我也遇到过同样的问题。在23.1版本的时候我修好了这个问题(可以查看这个链接:http://debbugs.gnu.org/db/56/5653.html),但在23.2版本中,这个修复似乎不再有效,或者至少对我来说是这样。我刚刚向Emacs提交了一个bug报告,详细说明了这个问题,希望能尽快解决。

一个临时的解决办法是通过Emacs的命令行来运行pdb:

打开命令行:按下M-x,然后输入shell 在命令行中输入:pdb

这样就能在命令行中正常使用pdb了。

2

我不确定你是不是也遇到这个问题,但我想提一下:在Emacs中,当源代码的路径里有空格时,PDB会卡住。如果我把Python文件移动到一个名字里没有空格的文件夹里,它就能正常工作了(我用的是Emacs 23.1.1)。

2

我在使用emacs 23.2的时候也遇到了同样的问题,提示“当前目录是...”。正如你提到的,这个问题是由于换行符(CR/LF)引起的,可以通过设置gud-pdb-marker-regexp来解决。

我在gud-pdb-marker-regexp中添加了CR(\r)。你可以试着在你的.emacs文件中添加以下这一行,然后看看效果。

(setq gud-pdb-marker-regexp "^> \\([-axx-zA-Z0-9_/.:\\]*\\|<string>\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|<module>\\)()\\(->[^\n\r]*\\)?[\n\r]")

撰写回答