【问题标题】:Debugging C/C++ code with IPython使用 IPython 调试 C/C++ 代码
【发布时间】:2012-07-22 03:55:27
【问题描述】:

假设我在IPython 中(例如在new QT console 上),并且我调用了我从它编写的C++ 库(例如使用SWIGBoost.Python)。我想在我的 C++ 代码中设置一个断点,并能够使用 IPython 与我的 C++ 工作区(即当我遇到断点时的变量)进行交互(例如,绘制我的 C++ 变量等) .

换句话说,我想从 IPython 调试我的 C++ 代码。这是可能吗?我可以为此使用哪些工具?

【问题讨论】:

  • 你尝试过 gdb 7 中的新 python 扩展吗?我知道它们不是 IPython,但你可以用它们做很多事情。本文只是如何使用它的众多示例之一。 misspent.wordpress.com/2012/03/24/…

标签: c++ python debugging ipython


【解决方案1】:

(假设您在 Linux 上) 你只需要gdb。首先设置配置告诉 gdb 你的源文件在哪里,把它添加到$HOME/.gdbinit directory absolute-path-to-source

现在启动 gdb python 并在 gdb 提示符下执行以下操作: set args /usr/bin/ipython run

你不能直接做gdb ipython,因为ipython是一个脚本。请从这里开始参考 gdb 文档。

【讨论】:

  • 我没有通过这种方式获得 IPython 提示,我只看到 IPython 5.1.0 -- 增强的交互式 Python。 ? -> IPython 的功能介绍和概述。 %quickref -> 快速参考。 help -> Python 自己的帮助系统。目的? -> 有关“对象”的详细信息,请使用“对象??”了解更多详情。但没有提示,没有控制台回显:-((这是 lldb,但仍然......)
  • 它适用于 OpenSuSE Leap 42 上的 Python 2.7.13 / IPython 3.2.2。抱歉,我没有用其他版本测试它。
【解决方案2】:

一般来说,您不能直接使用 IPython 调试 C++ 代码。不过,您可以做的是使用 C++ 调试器来调试您的 C++ 代码。

本质上,你告诉你的 C++ 调试器执行你需要用来运行你的代码的任何进程(这可能是 IPython 本身),并在你的 C++ 代码中设置一个断点(你的调试器会知道等待适当的 DLL如果它在 DLL 中,则加载)。从那里,您正在调试在 IPython 进程中运行的代码部分。

【讨论】:

    猜你喜欢
    • 2013-01-07
    • 2016-01-23
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多