在Eclipse+PyDev中调试Python
我在工作中尝试使用Eclipse和PyDev的组合。(Eclipse版本3.5.0和PyDev版本1.5.6)我找不到方法把我所有的变量都显示在PyDev控制台里(通过PyDev控制台 -> 当前活动编辑器的控制台选项)。我用一段简单的代码来说明这个问题。当我逐步调试代码时,我无法从控制台访问我的“x”变量。虽然在变量标签中可以看到它,但这并不是我想要的。
任何帮助都非常感谢。
可以查看我的截图以更好地理解:
编辑:
假设我在代码中添加一个简单的函数,比如:
def myfunc(x):
return x**x
当我在代码中添加这个函数进行调试时,我可以很容易地从控制台访问myfunc。(输入myfunc,它会在这个自动执行后可用:
>>> from part2.test import myfunc
>>> myfunc
然后当我执行myfunc(5)时,它的表现就像在Python解释器中一样。能够以类似的方式访问变量来调试我的代码会非常有用。我有很大的数组,在调试过程中会进行各种测试和操作。比如:获取我的x并执行x.sum(),然后执行x[::10],或者与其他数组进行转置操作观察结果,进行实验等等……
希望能有更好的解决方案。
2 个回答
对于这种探索性的调试,我喜欢使用pdb,这是一个自带功能的调试工具。我还没有在PyDev中使用过它,所以不太清楚它是怎么结合在一起的。不过我猜它会按照你的预期工作。下面是一个使用它的例子:
import pdb
def myfunc(x):
pdb.set_trace()
return x**x
这个例子会在执行返回语句之前暂停,这样你就可以用完整的Python语句来弄清楚发生了什么。我把它当作一种互动的打印语句来用:设置我想要深入查看的地方,检查变量的值,弄清楚结果,然后一步一步地观察事情是怎么发生的。也许这是一种懒惰的调试方式,但有时候在做出不那么懒惰的决定之前,你需要更多的信息 :-)
我通常参考的页面是 Python Conquers The Universe,上面还链接了一些其他的信息来源。
更新:
在最新的PyDev版本中,你可以右键点击堆栈中的某个框架,然后选择PyDev > 调试控制台,这样就能打开一个互动控制台,里面有更多与调试会话相关的功能。
不过,现在的互动控制台其实并不能和调试会话连接在一起(虽然这是计划中的功能,但还没有实现)。这意味着你不能像理想中那样使用这个控制台来玩代码(比如代码补全等功能,详细信息可以查看http://pydev.org/manual_adv_interactive_console.html)。
尽管如此,你还是可以使用一个“简单”的控制台,来互动检查和操作在断点范围内的变量:详细信息可以查看http://pydev.org/manual_adv_debug_console.html(这和你用pdb时的体验是一样的——只需在断点被触发后,在可用的控制台中输入代码即可)。
祝好,
Fabio