【问题标题】:How to pause program execution in Pycharm (pause button not working)?如何在 Pycharm 中暂停程序执行(暂停按钮不起作用)?
【发布时间】:2016-06-09 13:11:38
【问题描述】:

在 Pycharm 5.0.4 中调试我的 Python 3.5 程序时,我试图点击暂停按钮以查找程序为何/在何处挂起(可以在 Visual Studio 中完成)。

但是,什么都没有发生:暂停按钮没有变成灰色,恢复按钮保持灰色,并且在调试器工具窗口中,“框架不可用”。

我在 Linux 和 Windows 上尝试了不同的基本程序,但无济于事。

这是一个错误还是我错过了 Pycharm 调试应该如何工作的一些东西?

我还注意到,当一个断点被击中时,只有一个线程被挂起,我看不出有什么办法可以挂起其他线程来检查它们的堆栈帧。我也很想知道如何实现这种特定于线程的暂停。

【问题讨论】:

    标签: python multithreading debugging pycharm suspend


    【解决方案1】:

    在 PyCharm 中,有一个调试选项,可让您逐步执行代码,这可能更有用,而不是尝试暂停程序。

    最初需要在代码中插入断点;只需单击要中断的行的灰色条:

    然后您可以按 Alt+Shift+F9,或单击菜单中的Run > Debug 以从该点开始逐步执​​行代码:

    启动调试模式后,单击红色圆圈突出显示的按钮 - 这将使您能够单步执行代码,查看变量、它们的分配以及是否收到任何错误。

    如果您需要在任何时候停止,只需点击调试窗口左侧的红色停止按钮即可。
    控制台选项卡将允许您查看正在打印到屏幕上的内容(如果有的话),以及在什么时候,您可以节省大量的打印语句,就像使用 Idle 或类似 IDE 进行调试时一样

    HTH

    【讨论】:

    • 断点对于任意暂停执行并确定哪些行像死锁一样挂起并不是很有用。
    【解决方案2】:

    听起来您的程序正处于睡眠状态或类似的状态,或者可能是某些本机代码。

    如果它是一个常规的 python 循环,则暂停 python 将起作用。 我认为问题出在 python 本身,而不是您使用的调试工具。

    当你暂停一个 python 程序时,你会暂停 interperter,因此在 interperter 的上下文中运行的所有线程都会暂停,你可以在框架窗口中看到它们。任何显示消息“Frames not available in non-suspended state”的线程都不会被挂起,因为在您暂停程序时它正在休眠。

    查看这个了解如何调试 c 代码 Not working python breakpoints in C thread in pycharm or eclipse+pydev

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 2015-03-05
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多