Pycharm调试器不在断点处停止。

33

我有一个Flask项目需要调试(几个小时前还能正常工作),当我在调试这个项目时,我看到了以下内容:

Connected to pydev debugger (build 135.1057)
/Users/vantani/cp/bin/python /Applications/PyCharm.app/helpers/pydev/pydevd.py --multiproc --save-  
signatures --client 127.0.0.1 --port 49223 --file /Users/vantani/cp/unnamed/manage.py server
pydev debugger: process 484 is connecting

/Users/vantani/cp/lib/python2.7/site-packages/flask_cache/__init__.py:152: UserWarning: Flask-  
Cache: CACHE_TYPE is set to null, caching is effectively disabled.
warnings.warn("Flask-Cache: CACHE_TYPE is set to null, "
* Running on http://127.0.0.1:5000/
* Restarting with reloader
pydev debugger: process 498 is connecting

像我说的那样,这个设置一直很好用。现在,调试器不会停在断点处,而且调试窗口是空的。我发现 PyDev 创建了两个进程,我想这可能是导致问题的原因。我已经重启了我的机器,现在只有一个 PyCharm 进程在运行。


1
当您的程序在调试模式下运行时,如果您按左侧的“暂停程序”按钮会发生什么?如果它正常工作,您应该能够看到您按下该按钮时程序所在的帧。 - Arnaud P
这里也有同样的问题,使用PyCharm远程调试让我头疼不已。 - Nathan B
20个回答

33
有时候这可能是因为其他模块正在使用与调试器相同的跟踪API(sys.settrace),例如Coverage.py。解决方案是进入您的Rub/Debug Configurations并将--no-cov标志添加到Additional Arguments
或者,您可能希望在pytest设置(即pytest.ini)中删除所有--cov,或者使用--no-cov标志运行测试。
    pytest test.py --no-cov

这也可能是由于文件名错误引起的,例如您的文件/目录中包含特殊字符或空格。尝试将它们移除或更改为下划线(_)。


谢谢,这个答案对我很有帮助! - mathfac
没错!如果启用了覆盖率,调试就无法正常工作。 - Mikaelblomkvistsson
你如何“进入Rub/Debug Configurations并将--no-cov标志添加到附加参数中”?这是偏好设置中的某个框还是我要在终端中输入的内容? - Shep Bryan
1
@ShepBryan 注意,该问题是关于PyCharm未停在断点处。此设置在PyCharm中此处可用。如果您没有使用PyCharm,则需要在pytest中添加--no-cov标志来运行测试(请参阅我的答案)。对于VSCode,请将"env": {"PYTEST_ADDOPTS": "--no-cov"}添加到相关的launch.json配置中。 - Tomasz Bartkowiak
我已经被困在这个问题里很久了,谢谢! - singe3
感谢提到 --no-cov 标志。 - Junaed

23

最近在PyCharm中调试器存在一个问题。我使用Mac平台和PyCharm 2020.2版本,在运行Django开发服务器时,尽管调试器能够停留在测试代码处,但无法停留在开发服务器上。

对我而言,在Preferences > Build, Execution, Deployment中禁用Gevent compatible选项有所帮助。 enter image description here

需要注意的是,有些人建议启用该选项,而有些人则建议禁用该选项 - 所以值得尝试一下每种方法,看看是否能解决你的问题。


6
PyCharm 2020.3.3(专业版)。取消选中“Gevent兼容”有所帮助。 - ekon
1
这对我也起作用了,gevent兼容选项有什么用? - Marios Mourelatos
它对我也起作用了。 - David Lasry
为什么会发生这种情况?我打开了这个选项,以便在 gevent 线程内使用调试器,一开始是可以工作的。但后来就出现了这个问题。 - Shubham Rath

10

只需要将Flask的调试模式关闭即可,例如:

app.run(debug=False)

2
谢谢,这对我来说不是很明显。 - Michael Küller
2
你把这行代码复制到哪里?我是不是要把它放在我想运行的文件顶部? - Shep Bryan
这就是我的问题。 - didando8a

4

检查你的Python调试器设置,并清除缓存,这对我有帮助


在此输入图片描述


3

我没有一个Flask项目,但我遇到了相同的问题。在我的情况下,我不得不改变项目路径!路径中有一些特殊字符(如ü,ä,ö)。通过移除这些字符,断点重新生效。


3

2
以下解决方法可能会有所帮助。我曾经在一份简单的Python脚本中遇到过同样的问题。PyCharm调试器无法在一个简单的断点处停下来,而只是运行到最后。
感谢Gabriel的答案,我检查了我的脚本路径,并发现它包含了俄语字母。因为我使用的是俄罗斯Windows,它使用俄语字母创建名为“Administrator”的管理员用户。
我将项目路径中的俄语字母更改为只使用英语字母(只需将PyCharm项目文件夹复制到磁盘根目录并从新位置重新加载我的项目,其他内容均未更改!)。然后调试器立即开始正常工作并停止在断点处!
看起来这是PyCharm调试器无法处理路径中的不同国家字母的错误。这在非英语系国家非常普遍。

2

对于 Sanic 案例,请运行 go_fast(..auto_reload=False,..)


1
在我的情况下,PyCharm断点昨天在一个特定的程序上工作,但今天在同一个程序上却没有工作(没有其他明显的更改)。
另一个线程建议通过环境变量设置PyCharm的调试选项,记录执行我的程序时PyCharm看到的信息:PYCHARM_DEBUG=True。设置了此选项后,PyCharm记录了它识别了我的断点,但仍然越过了断点。
我发现解决方法是安装一个新的Python解释器并将PyCharm指向该解释器。
我发现调试器在新的解释器下有效。
虽然这不是一个令人满意的解决方案,但在经过数小时的挫败后,我会接受任何可以得到的东西。

感谢@ahinkle的发布。这对我帮助很大。真的是非常令人沮丧的问题。我安装了最新版本的Python解释器,然后断点又开始工作了。 - kmiklas

1
最近我也遇到了同样的问题(2021年7月,PyCharm 2021.1.3 CE),尝试了网上能找到的所有方法都没用。然后在“文件”-->“管理IDE设置”-->“恢复默认设置”下发现解决了我的问题。

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