Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Pycharm中暂停程序执行(暂停按钮不工作)?_Python_Multithreading_Debugging_Pycharm_Suspend - Fatal编程技术网

Python 如何在Pycharm中暂停程序执行(暂停按钮不工作)?

Python 如何在Pycharm中暂停程序执行(暂停按钮不工作)?,python,multithreading,debugging,pycharm,suspend,Python,Multithreading,Debugging,Pycharm,Suspend,在Pycharm 5.0.4中调试我的Python 3.5 pogram时,我试图点击暂停按钮来查找程序挂起的原因/位置(在Visual Studio中可以这样做) 但是,什么也不会发生:暂停按钮不会变为灰色,恢复按钮保持灰色,并且在调试器工具窗口中,“帧不可用” 我在Linux和Windows上尝试了不同的基本程序,但都没有成功 这是一个bug还是我遗漏了Pycharm调试的工作原理 我还注意到,当遇到断点时,只有一个线程被挂起,我无法挂起其他线程来检查它们的堆栈帧。我也很想知道如何实现这个特

在Pycharm 5.0.4中调试我的Python 3.5 pogram时,我试图点击暂停按钮来查找程序挂起的原因/位置(在Visual Studio中可以这样做)

但是,什么也不会发生:暂停按钮不会变为灰色,恢复按钮保持灰色,并且在调试器工具窗口中,“帧不可用”

我在Linux和Windows上尝试了不同的基本程序,但都没有成功

这是一个bug还是我遗漏了Pycharm调试的工作原理


我还注意到,当遇到断点时,只有一个线程被挂起,我无法挂起其他线程来检查它们的堆栈帧。我也很想知道如何实现这个特定于线程的挂起。

在PyCharm中,有一个调试选项,它允许您逐步完成代码,这可能更有用,而不是试图暂停程序

最初需要在代码中插入断点;只需单击要打断的线处的灰色栏:

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

启动调试模式后,单击红色圆圈突出显示的按钮-这将使您能够逐步完成代码,查看变量及其赋值,以及是否收到任何错误

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


HTH

听起来你的程序好像挂在睡眠或类似的东西上,或者挂在一些本机代码上

如果它是一个常规的python循环,那么暂停python就可以工作了。 我相信问题在于python本身,而不是您正在使用的调试工具

暂停python程序时,暂停interperter,因此在interperter上下文中运行的所有线程都将暂停,您可以在frames窗口中看到它们。显示消息“Frames not available in non-suspended state”(帧在非挂起状态下不可用)的任何线程都不会挂起,因为您暂停程序时它正在休眠

有关如何调试c代码,请参见此

断点对于任意挂起执行并确定哪些行在死锁情况下挂起不是很有用。