在调试过程中深入了解变量

8

我正在使用Python调试代码。我已经有一段时间没有使用Python了。我在一个整数变量上设置了一些断点。假设这个变量是X = 10。我该如何:

  • 查看变量中的内容?(我可以高亮显示,然后会出现一个黄色框,但如果有很多信息,这样显示并不实用)
  • 对变量进行操作,例如我想执行X+2并得到结果?

我不知道Eclipse中的Python,但在普通的Eclipse中有一个“变量”窗口,允许您仅查看变量及其值(菜单窗口,显示视图,其他,调试,变量)。 - Dominique
如果其他方法都失败了,在大多数情况下,一个快速而简单的方法就是在控制台中打印变量:
print X print type(x)
如果必要的话,可以在此之后立即停止程序:
sys.exit()
- carrdelling
5个回答

3

正如评论中所指出的,有许多可以使用的Python集成开发环境(IDE)。原始问题特别涉及Eclipse,因此我的答案重点介绍了使用该IDE的解决方案。如果您喜欢其他环境,则可能存在其他解决方案...

首先,您需要确定在Eclipse中使用哪个插件。您有几个选项,如Python Wiki所示。看起来PyDev更受欢迎, 但您也可以选择其他插件。

假设您选择了PyDev,您可以使用此处描述的监视工具来评估任何表达式。或者,您可以使用控制台调试器直接在调试器中评估代码。

编辑:根据评论,您也可以使用 Window > Show View > Other > Debug > Expressions 打开表达式窗口。这与用于观察功能的窗口相同,其内容可以直接编辑。


值得一提的是,在Eclipse中使用PyDev,实现这个目标的更简单方法是打开“表达式”窗口,路径为“Window > Show View > Other > Debug > Expressions”。在这里,当访问断点时,您将可以访问所有本地变量,因为它们此时正处于那个时间点,这使得测试变量甚至可调用函数非常容易。 - Murphy4
@Murphy4 谢谢 - 我已经将它添加到答案中了。 - Peter Brittain
这是一种相当困难的方法,除非您熟悉Eclipse,否则我建议使用PyCharm,因为它在手把手指导初学者方面非常出色,其编码提示非常有帮助。 - Amias
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Peter Brittain
当然,只是指出有比使用Eclipse更简单的方法来完成这个任务。对此帖子的编辑稍微有些混淆,因为问题中提到Eclipse的部分已被删除。 - Amias
好的,我已经添加了一条注释来强调这一点,并为人们提供了探索其他路线的选择。 - Peter Brittain

1

我相信每个人都有自己的看法,但我觉得Eclipse的Python工具相当复杂。如果你没有被绑定到Eclipse IDE,可以尝试使用PyCharm。它有非常好的工具,可以做到你想要的,并且有很多教程视频。这个视频展示了如何做到你所要求的:https://www.youtube.com/watch?v=QJtWxm12Eo0


1
Pycharm拥有出色的调试器集成,不像其他IDE那样妨碍开发。我已经使用它几年了,强烈推荐。好处是一旦你学会了一个JetBrains IDE,你可以很容易地切换到另一个使用不同语言的IDE,并且非常快速地提高生产力。 - Amias

1

我认为你不可能仅仅使用Eclipse完成这个任务,除非你安装了大量的插件。但是,有一些非常好的Python调试工具可供选择。

如果你愿意动手,内置的Python调试器pdb可以完成你想要的所有操作。导入pdb,在你想要中断的地方插入pdb.set_trace(),然后你就可以进入一个交互式调试器。如果你以前使用过gdb,那么这个调试器会非常熟悉。

如果你想使用更加专注于IDE的工具,我建议使用Immunity Debugger。它真的非常好用,并且有很多文档。不过,这可能比你想要的还要多一些。


0

尝试使用开源免费的VS Code(带有Python插件)。它具有流畅的智能感知功能,您可以查看、检查变量并对其进行调试。该编辑器基于node.js并可以在任何平台上运行。我认为Eclipse对于Python开发来说过于复杂了。


0

ipdb 是 Python 调试的一个方便工具:

ipdb 导出了访问 IPython 调试器的函数,它具有选项卡补全、语法高亮、更好的回溯、与 pdb 模块相同接口的更好的内省等特性。

要安装 ipdb,只需在 shell 中运行 pip install ipdb --user

要设置断点,请在您想要跳转到调试器的行之前添加 import ipdb; ipdb.set_trace()。例如:

import ipdb; ipdb.set_trace()
X=10

当你运行程序python myfunc.py时,将会触发一个类似IPython的交互式shell,你可以在其中运行Python命令。例如:

ipdb> p X
10
ipdb> X+2
12

这是一个简单的教程:Python调试入门

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接