PyCharm:如何在ipython交互式控制台中进行事后调试?

18

我刚开始使用不错的PyCharm社区版IDE,但是我无法做一个在我的常规Python工作流程中的简单事情。

我已经启动了一个ipython控制台,可以导入我的模块并交互式运行命令。在PyCharm中执行函数调用时,它会像在单独的进程中运行一样执行。即使在执行完成之前,控制台提示符也可以使用。这很好,但阻止了我进行后期调试。

在PyCharm之外的shell中运行ipython时,当出现异常时,我可以运行pdb的post mortem功能并调查问题:

import pdb;pdb.pm()

我希望在PyCharm中实现同样的功能:当我在交互式调试问题时发生异常时,启动事后调试。


也许这个可以行?https://dev59.com/IGfWa4cB1Zd3GeqPeCEI#11931827 - Smit Johnth
即使是PyDev也可以做到 https://stackoverflow.com/questions/18579714/pydev-how-to-pause-on-exception - Smit Johnth
3个回答

4
考虑到您正在使用 PyCharm,为什么不使用内置调试器呢?有充足的文档介绍如何使用它来设置自己的断点、浏览堆栈、配置调试器选项等。 文档 特别针对您的用例,如果您想在异常情况下中断,则可以使用 Ctrl + Shift + F8 打开断点配置屏幕。 Breakpoints 然后,您可以检查 Python Exception Breakpoint 的 Any exception 即可实现中断。这会使您在发生异常时可以访问异常和整个堆栈(在Frames部分)、上下文、变量等。

3
有时候你需要与你的代码、想法和数据进行交互式实验。在这些交互式会话中,我希望能够进行事后调试。这是一个不同的使用情况。 - neves
我明白了,可能误解了你的问题。希望你能找到实现你想要的功能的方法。如果你正在使用WSGI开发某个项目,那么Werkzeug(http://werkzeug.pocoo.org/docs/0.11/)是否适合你? - Vlad B
在PyCharm调试器中,有一个交互式的ipython控制台,但它有点难找--你必须点击“打开调试命令行”。将此与pycharm调试器中的帧/变量视图相结合,您就可以拥有与pdb.pm大致相同的功能。https://www.jetbrains.com/help/pycharm/using-debug-console.html 我建议编辑这个答案以添加调试控制台信息,然后我认为它应该被标记为正确的。 - foobarbecue
嗯,想了想,那个答案还是不够正确。我找不到在交互式会话中输入命令后进入调试器的方法。这真的很麻烦。 - foobarbecue
1
顺便提一下,要使这个工作正常,您需要点击两个按钮。首先,切换到调试器控制台选项卡,然后单击“显示Python提示符”以使控制台交互起来。 - foobarbecue
我不明白它是如何工作的。你有更多关于它的信息吗? - Smit Johnth

2
在IPython中,可以使用%pdb命令
只需要在IPython中使用%pdb命令,当出现错误时,您将进入一个带有错误的Post Mortem的ipdb会话。
我不确定这是否适用于PyCharm。
(我之前在这里找到了这个答案)

0
由于缺乏答案,我认为不可能实现。如果有人在这里发布答案,我会接受它。
顺便说一下,如果您安装了Jupyter,它将为您提供一个奇妙的终端,如果您运行jupyter qtconsole,即使在Windows中也可以很好地工作。魔术命令%debug将自动启动调试器。

实际上,在Ipython中,如果有异常抛出,%debug魔术命令将会进入异常现场。 - KFL
是因为PyCharm使用PyDev的调试器而不是pdb吗? - Smit Johnth
有人发布了一个答案。我认为你应该接受它。 - alvitawa

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