Tom*_*lis 9 python emacs google-app-engine
我使用emacs来满足我的所有代码编辑需求.通常情况下,我会使用Mx编译来运行我的测试运行器,我会说我得到了大约70%的我需要做的事情,以保持代码正常,但最近我一直想知道如何使用Mx 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/
Run Code Online (Sandbox Code Playgroud)
其中.../bin/python是解释器buildout使用为所有egg设置的路径.
〜/ 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$
Run Code Online (Sandbox Code Playgroud)
.../bin/devappserver是buildout配方为gae项目制作的dev_appserver脚本,而.../parts/hydrant-app是app.yaml的路径
我第一次收到提示
Current directory is /Users/twillis/bin/
C-c C-f
Run Code Online (Sandbox Code Playgroud)
什么都没发生,但是
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$
Run Code Online (Sandbox Code Playgroud)
事情正在发生
C-x [space]
Run Code Online (Sandbox Code Playgroud)
将报告已设置断点.但我无法让事情顺利进行.
感觉我在这里遗漏了一些明显的东西.我呢?
那么,emacs中的交互式调试值得吗?可以互动调试谷歌appengine应用程序吗?关于我如何使这个工作的任何建议?
唔。你做这件事的方式和我有点不同。我没有尝试过你的方法。我直接使用 pdb 库模块,没有包装脚本,只是使用“-m”python 命令行选项告诉 python 将模块作为脚本运行。
为了过于彻底,这是我的操作顺序:
我想可能有某种原因导致它不能很好地与应用程序引擎配合使用。我建议首先使用一个简单的 Python 程序让它工作,一旦你知道它可以工作,就尝试升级到完整的应用程序。
在实践中,我很少使用 pdb 进行 python 调试。我的大部分调试本质上是“printf 调试”,将 print 语句插入到我的单元测试中并(偶尔)插入到实际代码中。