在Python中使用控制台中的断点进行调试

use*_*844 7 python debugging matlab ipython

我正在尝试从Matlab迁移到python.Matlab的一个好处是,在调试时我可以在某些代码中放置一个断点,然后从命令行调用该代码.使用PyCharm + IPython我还没有找到在Python中执行此操作的方法.我似乎必须在调试模式下运行整个脚本来执行任何调试,而不是通过简单的命令来执行此操作.我想我可以用我感兴趣的命令编写一行脚本,但似乎应该有更好的方法.这样做的Python方法是什么?

Tim*_*Rae 5

我想推荐使用Visual Studio 的 Python 工具。它是免费且开源的,虽然Visual Studio本身显然不是开源的,但免费版本功能非常强大,并且允许商业用途。此外,大多数学术机构的学生和工作人员通常可以免费访问 Visual Studio Ultimate。

如果您的程序在断点处停止,您可以打开“Python Debug Interactive”(从工具 -> python 工具),这将打开一个交互式 python shell,可以访问断点处程序命名空间中可用的所有变量,与在 Matlab 中执行的操作相同。

将鼠标悬停在源代码中的变量上也会显示值,调出“局部”窗口或多或少模拟了 Matlab 中的工作区查看器,您还可以“观察”特定变量。我不知道通过这个界面编辑变量是否安全,请谨慎使用!

不幸的是 PTVS 没有嵌套断点,这在 Matlab 调试器中是一个非常有用的功能。因此,如果您在断点处停止并从调试交互窗口调用方法,则该方法中的任何断点都将不起作用。请参阅此相关问题

与 Matlab 或 ipython 相比,调试 shell 中基于箭头键的命令历史记录相当原始,并且 Intellisense 不如原生 .net 语言那么好,但我在过去的半年或中一直在扎实地使用它。所以现在,除了优秀的文档之外,我并没有真正感觉自己从 Matlab 中错过了太多东西。

另一件需要注意的事情是,在调试模式下的代码执行性能要慢得多,因此我建议在没有调试模式的情况下运行代码(使用“Ctrl+F5”而不是“F5”)以获得最佳性能,或者如果您需要断点和良好的性能,请使用新的混合模式调试器。


aru*_*lmr 4

尝试使用python 调试器

b(reak) [[filename:]lineno | function[, condition]]
Run Code Online (Sandbox Code Playgroud)

或者

pdb.set_trace();
Run Code Online (Sandbox Code Playgroud)

更详细的教程可以在这里找到