【问题标题】:Python debugging in Eclipse+PyDevEclipse+PyDev中的Python调试
【发布时间】:2011-02-11 21:26:01
【问题描述】:

我在一些工作中尝试了 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],或转置操作与其他数组观察结果,实验等...

希望有更好的解决方案。

【问题讨论】:

  • 我已经使用 PyDev 几个月了,不知道你能做到这一点。 (我猜从不需要它)。我在想什么?
  • 好的,有些看起来很有用。尽管如此,调试控制台并没有给出使用 Python 解释器的实际感觉,您可以在其中轻松方便地完成选项卡并与变量/内容交互。

标签: python eclipse pydev


【解决方案1】:

更新:

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


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

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

干杯,

法比奥

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 感谢您的建议。它只是一点点违背了使用 Eclipse 的目的:) 跳入函数/方法的定义是 Eclipse 中的一个很棒的特性,它越来越敦促我呆在那里而不是使用基于 IPython + VIM 的开发周期。我相信有人(也许是 Fabio :))会建议一种在 Eclipse 中调试时将我的变量注入本地/全局命名空间的方法。
    • 请注意,您可以在 PyDev 中的断点上下文中执行相同操作(请参阅pydev.org/manual_adv_debug_console.html)。
    • 我不会说它违背了目的......但我明白你的意思。我检查了 pdb 在 PyDev 中工作正常,当 PyDev 看到行号注释时,它确实会链接到源。抱歉,PyDev 还没有赶上 Eclipse 的一般可用性,尽管我怀疑它会在一年后更远。
    猜你喜欢
    • 2021-08-11
    • 2010-10-28
    • 2016-10-18
    • 2022-10-06
    • 2011-10-07
    • 2018-12-25
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多