如何在Mac OS X上修复Aquamacs中的pdb?
我正在用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点)。
相关问题
- 看起来这个问题从2007年就存在了
- 有一个人在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]")