【问题标题】:Using CLion to build a Python C extenion - how to debug使用 CLion 构建 Python C 扩展 - 如何调试
【发布时间】:2021-06-16 16:39:20
【问题描述】:

我可以使用 Clion 为 Python 构建 C 扩展,并使用 pip install -e 重新构建和安装扩展。我已经确认扩展是在未剥离所有调试信息的情况下构建的。

我可以让 CLion 在调试器中从我的 Python 测试套件运行特定的测试用例 - 逐行执行 Python 代码,但是这个调试器不允许我进入 C 扩展;并且不会在 C 源代码中设置的断点处停止。

如何从 Python 调试器连接到 C 调试器?

【问题讨论】:

    标签: debugging clion


    【解决方案1】:

    CLion doesn't support 混合模式调试允许在 Python 和本机代码之间跳转。

    您需要使用本机调试器(GDB 或 LLDB),并调试加载脚本并运行测试用例的 python 解释器进程。您可以通过附加到正在运行的 python 进程来实现这一点,或者通过创建一个运行配置来使用适当的命令行参数启动解释器。

    这两种情况的关键是使用 CLion 自己的工具来调试本机应用程序,而不是作为捆绑 Python 支持的一部分提供的工具。

    使用 GDB/LLDB 附加到正在运行的进程

    当附加到已经运行的进程时,您可能会发现与该进程相对应的两个条目:一个允许使用 Python 调试器(用于单步执行 Python 脚本的那个)附加,另一个允许使用本机附加调试器。

    使用 GDB/LLDB 启动解释器

    如果您知道调用测试脚本的确切 python 解释器命令行,您可能会发现此设置对于频繁的编辑/调试迭代更方便。这不是很简单,但在Custom build targets and applications帮助文章中有详细描述。

    简而言之,您执行此操作的方式是创建一个“自定义构建目标”,该目标将触发您的本机扩展的重建(可能通过调用 pip install -e),然后创建一个新的“自定义构建应用程序”运行配置设置为可执行文件的 python 解释器的路径。

    之后,您可以像往常一样调试运行配置,它将使用为自定义构建目标选择的工具链中的本机调试器。

    【讨论】:

    • 如果 CLion 不支持混合模式调试,我怀疑 PyCharm 也支持吗?
    • 你说得对,没错。 AFAIK PyCharm 根本没有内置的本机调试器集成,即使是 PyCharm Professional。
    • PyCharm 确实有 pdb Python 调试器(和 CLion 一样)。 PyCharm 没有捆绑 gdb 或任何其他可执行调试器 - 坦率地说,这并不奇怪。PyCharm 并非旨在作为混合语言系统 - 尽管您可以编写 C 代码,但没有 make 工具等。
    • “本机调试器集成”是指 GDB/LLDB,如果这具有误导性,请见谅。 PyCharm 确实有 Python 级别的调试器,但不能用它来调试原生扩展和单步调试 C/C++。
    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 2020-11-11
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多