我将这个问题发布在programmers.stackexchange.com上,但我认为在SO上更加合适。
我使用emacs进行所有的编程工作。通常情况下,我会使用M-x compile运行测试运行程序,这大约可以满足我完成代码调试的70%需求,但最近我一直在思考如何在需要时使用M-x pdb来打断点并进行检查。
在我的搜索中,我找到了一些资料表明这是有用/可能的。然而,我没有找到能够完全理解并使其正常工作的方法。
我不知道是buildout + appengine的组合使得它更加困难,但当我尝试执行类似以下操作时
M-x pdb
Run pdb (like this): /Users/twillis/projects/hydrant/bin/python /Users/twillis/bin/pdb /Users/twillis/projects/hydrant/bin/devappserver /Users/twillis/projects/hydrant/parts/hydrant-app/
这里的“.../bin/python”是使用路径设置所有依赖包后由buildout生成的解释器。
“~/bin/pdb”是一个简单的脚本,用于调用当前Python解释器中的pdb.main函数。
HellooKitty:hydrant twillis$ cat ~/bin/pdb
#! /usr/bin/env python
if __name__ == "__main__":
import sys
sys.version_info
import pdb
pdb.main()
HellooKitty:hydrant twillis$
.../bin/devappserver是gae项目生成的buildout recipe脚本,.../parts/hydrant-app是app.yaml的路径。
我首先会看到一个提示。
Current directory is /Users/twillis/bin/
C-c C-f
什么也不发生,但是
HellooKitty:hydrant twillis$ ps aux | grep pdb
twillis 469 100.0 1.6 168488 67188 s002 Rs+ 1:03PM 0:52.19 /usr/local/bin/python2.5 /Users/twillis/projects/hydrant/bin/python /Users/twillis/bin/pdb /Users/twillis/projects/hydrant/bin/devappserver /Users/twillis/projects/hydrant/parts/hydrant-app/
twillis 477 0.0 0.0 2435120 420 s000 R+ 1:05PM 0:00.00 grep pdb
HellooKitty:hydrant twillis$
有事情正在发生
C-x [space]
将报告已设置断点。但我无法使事情进展。
感觉好像我错过了什么显而易见的东西。是吗?
那么,在emacs中进行交互式调试是否值得?在google appengine应用程序中进行交互式调试是否可行?您有任何建议,我如何使其工作?