7

我为我的一些工作尝试了 Eclipse+PyDev 对。(Eclipse v3.5.0 + PyDev v1.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],或者与其他数组进行转置操作观察结果、实验等...

希望会有更好的解决方案。

4

2 回答 2

8

更新:

在最新的 PyDev 版本中,可以右键单击堆栈中的框架并选择 PyDev > 调试控制台,以在调试会话期间使交互式控制台具有与上下文相关联的更多功能。


不幸的是,实际的交互式控制台,这将是玩代码的首选方式(代码完成等 - http://pydev.org/manual_adv_interactive_console.html)现在与调试会话没有连接(这是计划但仍未实施)。

尽管如此,有了“更简单”的控制台,您仍然可以交互式地检查和使用断点范围内可用的变量:http: //pydev.org/manual_adv_debug_console.html(与您使用的相同) pdb——只要在断点被命中后在可用的控制台中输入代码)。

干杯,

法比奥

于 2010-04-29T17:16:18.497 回答
2

对于这种探索性调试,我喜欢使用 pdb,它是包含电池的调试器。我没有在 PyDev 中使用它,所以我不知道它是如何组合在一起的。我的猜测是它会做你所期望的。其用法示例:

import pdb

def myfunc(x):
    pdb.set_trace()
    return x**x

这将在执行 return 语句之前中断,它允许您使用完整的 Pythonic 语句来弄清楚发生了什么。我使用它就像一个交互式打印语句:设置我想潜入的地方,检查值和计算结果,然后逐步观察它的发生。也许这是一种懒惰的调试方式,但有时您需要更多信息才能做出不那么懒惰的决定:-)

我通常参考的页面是Python Conques The Universe,它还链接了其他一些信息源。

于 2010-04-28T16:07:05.607 回答