【问题标题】:How to launch PyCharm's debugger with breakpoint()如何使用 breakpoint() 启动 PyCharm 的调试器
【发布时间】:2020-08-21 07:03:34
【问题描述】:

我知道我可以通过设置sys.breakpointhook() 来设置启动哪个调试器,但是为了启动 PyCharm 的 IDE,我应该设置什么?

澄清一下,我希望 PyCharm 的调试器在遇到 breakpoint() 内置函数时启动,尤其是当我从 PyCharm 运行程序时。

如果您想知道“既然可以从调试器运行,为什么还要这样做?”我正在尝试调试一些在使用调试器启动时响应不同的代码。

【问题讨论】:

  • 如果您从 PyCharm 运行应用程序,并在 PyCharm 中设置断点,那么它将在 PyCharm 中停止。你的情况如何?

标签: python pycharm


【解决方案1】:

PyCharm 使用 pydevd 调试器 https://pypi.org/project/pydevd-pycharm/。因此,假设您要调试在 PyCharm 之外启动的 Python 应用程序,您有两种选择:

第二个选项可能更接近您的想法,即不是使用sys.breakpointhook 设置调试器,而是使用pydevd_pycharm.settrace(...) 安装调试器,然后连接到 PyCharm(您可以在源代码中设置断点文件)。

通过将 sys.breakpointhook 指向 pydevd 断点挂钩(即指向“Pycharm 调试器”)来安装自定义断点挂钩将由 pydevd 完成(准确地说是https://github.com/fabioz/PyDev.Debugger/blob/37d804c7ac968694ce29c93392e3bed6fda641f0/pydevd.py#L95,第 117 行)。

【讨论】:

  • 谢谢,这当然很有帮助,我可以用它来实现我的目标。澄清一下,您是说没有办法将 sys.breakpointhook 指向 PyCharm 调试器?
  • sys.breakpointhook 将被 pydevd 调用,我相应地修改了答案。
【解决方案2】:

Ueli 的回答让我成功了 99%。这是摘要。

如果您希望 PyCharm 调试器启动,all you need to do is import it。有几种方法:

您可以使用 PyCharm 安装 (<PyCharm directory>/debug-egg/pydevd-pycharm.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 的答案中链接)。

【讨论】:

    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2018-03-29
    相关资源
    最近更新 更多