如何解决如何使用breakpoint启动PyCharm的调试器
我知道我可以通过设置sys.breakpointhook()
来设置启动哪个调试器,但是为了启动PyCharm的IDE,我将其设置为什么?
为澄清起见,我希望PyCharm的调试器在遇到内置breakpoint()
时启动,尤其是当我从PyCharm运行程序时。
如果您想知道“为什么只能从调试器运行,为什么要这样做?”我正在尝试调试一些在使用调试器启动时响应不同的代码。
解决方法
PyCharm使用pydevd调试器https://pypi.org/project/pydevd-pycharm/。因此,假设您要调试在PyCharm外部启动的Python应用程序,则有两个选择:
- 附加流程,请参见https://www.jetbrains.com/help/pycharm/attaching-to-local-process.html#attach-to-local或
- 启动Pycharm作为调试服务器,然后从您的应用程序连接到它,请参阅https://www.jetbrains.com/help/pycharm/remote-debugging-with-product.html。
第二个选项可能更接近您的想法,即,您可以使用sys.breakpointhook
安装调试器,而不是使用pydevd_pycharm.settrace(...)
来设置调试器,然后连接到PyCharm(您可以在其中设置源文件中的断点)。
通过将sys.breakpointhook指向pydevd断点钩子(即指向“ Pycharm调试器”)来安装自定义断点钩子,将由pydevd(确切地说是https://github.com/fabioz/PyDev.Debugger/blob/37d804c7ac968694ce29c93392e3bed6fda641f0/pydevd.py#L95,第117行)完成。
,Ueli的回答使我有99%的解决方法。这是摘要。
如果您想启动PyCharm调试器,请all you need to do is import it。有几种方法:
您可以使用PyCharm安装(
pydevd-pycharm.egg
)中的<PyCharm directory>/debug-egg/pydevd-pycharm.egg
或使用pip安装pydevd-pycharm
软件包。
如果在本地运行,最简单的就是添加
sys.path.append("<PyCharm directory>/debug-egg/pydevd-pycharm.egg")
import pydevd_pycharm
您正在调试的程序中的某个地方。
如果您要在远程计算机上进行调试,则需要安装pydevd-pycharm
:
pip install pydevd-pycharm~=<version of PyCharm on the local machine>
添加之前
import pydevd_pycharm
程序中的某个地方。
如何导入pydevd_pycharm
的说明摘自https://www.jetbrains.com/help/pycharm/remote-debugging-with-product.html#remote-debug-config的第4步(在Ueli的答案中已链接)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。