繁体   English   中英

在 Python 中,如何使用交互式命令行(和可视断点?)进行调试

[英]In Python, how do I debug with an interactive command line (and visual breakpoints?)

我最近从 Matlab 转移到 Python。 Python 是一种更好的语言(从计算机科学家的角度来看),但是 Python IDE 似乎都缺少一个重要的东西:

一个合适的交互式调试器。

我在找:

  • 通过在编辑器中的一行代码旁边单击来以图形方式设置断点的能力。

  • 在调试器中停止时运行任何代码的能力,包括从我的代码调用函数、显示新窗口、播放音频等。

  • 发生错误时,调试器应自动在错误行打开交互式控制台。

  • 完成交互式控制台后,您可以恢复正常执行。

Matlab 具有所有这些功能,并且它们的运行非常好,但是我在 Python 工具中找不到它们。

我试过了:

  • PyCharm:交互式控制台笨拙,经常无法出现,并且一直崩溃(我尝试了几个不同的版本和操作系统)。

  • IPython:无法设置断点 - 以编程方式启动 Python 控制台:您必须停止代码,插入额外的代码行,然后从头开始再次运行才能执行此操作。 此外,如果不重新导入,您将无法访问已导入的函数。

能够在问题第一次出现时进行调试和修复对我来说非常重要,因为我在处理通常需要几十分钟才能重新运行的程序(计算神经科学)。

结论:目前没有办法在 Python 中完成所有这些。 让我们希望 PyLab 的发展加速。

许多Python IDE 这是一个主题: 用于Python的IDE是什么?

  • “通过单击编辑器中的一行代码旁边以图形方式设置断点的功能。”

PyDev有这个。 双击灰色边距栏。

  • “能够在调试器中停止运行任何代码,包括从我的代码调用函数,显示新窗口,播放音频等。”

PyDev有这个 这不是唯一的一个。 PyScripter的声明功能似乎包含了这一点。

  • “发生错误时,调试器应自动在错误行打开交互式控制台。”

PyDev这样做。 (我想。或者在最坏的情况下,您是否需要双击控制台消息,指出错误在代码中的位置?)

  • “完成交互式控制台后,您可以恢复正常执行。”

PyDev有这个。 它被称为“简历”。 它就是工具栏中绿色的“游戏”三角形。 其他一些软件称此功能为“继续”。

在代码的顶部,写

import pdb

在您的代码中,在您想要调试的任何地方使用以下语句。

pdb.set_trace()

每当满足set_trace()语句时,您将拥有一个交互式shell。

然后,您可以使用step(s)next(n)continue(c)等来检查执行流程,并打印变量值,例如print var

有关pdb的更多详细信息, 请参阅此处

我一直在寻找相同的,但不幸的是,Python IDE在这一点上并不像Matlab那样功能齐全。 对于科学编程,您还希望图形/绘图在完全不同的线程中运行,因此IPython集成至关重要。 据我所知,Matlab IDE功能从调试器更改工作区,然后影响随后运行的代码,这是非常独特的。 某些 IDE中存在每个功能,但并不存在:

  • Spyder与科学工具有很好的集成,但它的调试仅限于内置的pdb ,它缺乏执行任何代码的要求,并且在继续之后使这些代码影响命名空间。
  • PyDevPyCharm以及其他一些人都有不错的调试功能,但我认为它与科学工具没有很好的集成。 这意味着,如果您进行绘图,则会失去对提示的访问权限。 不好。

据我所知,最接近Wing IDE 它是一种支持产品,但是如果您从Matlab转换89美元/年用于非商业用途应该是可接受的(您可以先评估它)。 但对我来说,我最终决定改变我的工作流程,而不是使用任何复杂的IDE。 几年前我看的时候,情况也许有所改善。

您可能还会对2013年4月的“ 为科学Python评估IDE”这篇文章感兴趣。 它也没有真正得出结论。

您可以在iPython Notebook中完成所有这些操作。 使用magic命令%pdb停止出错。

看到你是从Matlab来的,我建议你看看

蟒(X,Y)

该页面描述如下:

Python(x,y)是一个免费的科学和工程开发软件,用于基于Python编程语言,Qt图形用户界面和Spyder交互式科学开发环境的数值计算,数据分析和数据可视化。

它不会满足你的所有愿望,但当我开始使用Python时,它确实让我感到很舒服,来自Matlab。

希望能帮助到你

如果使用命令行,

alias ipythondebug='ipython --InteractiveShell.pdb true'

在你的 ~/.profile 中会给你像 Matlab 这样的错误调试。 这当然需要安装 ipython。

不确定恢复部分。

如果您希望错误时的调试是永久性的,您还可以编辑 ipython 配置文件。 https://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-pdb

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM