【问题标题】:Step through C++ code with CLion while PyCharm plugin is enabled在启用 PyCharm 插件时使用 CLion 单步执行 C++ 代码
【发布时间】:2018-06-01 23:10:46
【问题描述】:

启用 PyCharm 插件后,我在 CLion 中遇到问题。我就是这样做的:

  1. 从 shell 运行 Python 程序。该程序创建了多个进程(如工作线程),其中 Python 代码调用我要调试的 C++ 代码。
  2. 从 CLion,附加到原始的主要 Python 进程。
  3. 在一个或多个创建的进程中遇到 C++ 断点后单步执行代码。

通常,这可以正常工作。但是如果我启用了 PyCharm 插件,CLion 似乎会以不同的方式处理主进程,并且不会遇到我的任何 C++ 断点。

有谁知道我如何让 C++ 断点工作,即使启用了 PyCharm 插件?

【问题讨论】:

    标签: pycharm clion


    【解决方案1】:

    我刚刚找到了一个适合我的需要的解决方案,也许是你的。

    这已在 Clion 2019.3 上使用 Ubuntu 18.04、Python 3 和 GDB 进行了测试。 我有一个生成 C++ 进程的 Python 进程,我想同时调试这两个进程。 条件是知道子进程的名称或 PID,并有时间手动附加到子进程(就像主进程中的“等待用户密钥”,或分叉后某处的断点)。

    根据this guide,在 Ubuntu 上,您需要临时或永久允许附加到外部本地进程。

    要暂时禁用此限制,请输入命令:

    回声 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

    要永久禁用此限制,请打开文件 /etc/sysctl.d/10-ptrace.conf 用于编辑和更改行 kernel.yama.ptrace_scope = 1 到 kernel.yama.ptrace_scope = 0。申请 更改,输入 sudo service procps restart 或重新启动系统, 任你选择。

    然后:

    • 为您的 Python 脚本创建运行配置
    • 在需要的地方放置断点
    • 在调试模式下运行 Python 脚本
    • 等待它在等待条件/断点上分叉和中断
    • 运行->附加到进程...
    • 键入 PID 或 C++ 子项的名称
    • 瞧,您可以控制主进程和子进程

    不幸的是,我不知道如何自动化它,但这在我的项目中运行良好,因为两个进程交换消息,所以当我阻止一个时,另一个正在等待数据,我有时间手动附加到它。

    附带说明,这可能也是this question on StackOverflow 的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      相关资源
      最近更新 更多