2012-07-22 49 views
4

代码说我在IPython(例如,在new QT console),并且我调用C,我从它写++库(例如,使用SWIGBoost.Python)。我想在我的C++代码中设置一个断点,并且可以使用IPython(例如,绘制我的C++变量等)与我的C++工作空间(即,当我点击断点时的变量)进行交互。调试C/C++与IPython的

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

+1

您是否尝试过gdb 7中的新python扩展?我知道他们不是IPython,但是他们可以做很多事情。本文只是如何使用它的许多例子之一。 http://misspent.wordpress.com/2012/03/24/debugging-cc-and-cpython-using-gdb-7s-new-python-extension-support/ – dcolish 2012-07-22 06:26:32

回答

1

通常,您将无法直接使用IPython调试C++代码。但是,您可以执行的操作是使用C++调试器来调试C++代码。从本质上讲,您告诉您的C++调试器执行您需要用来运行代码的任何进程(这可能是IPython本身),并在您的C++代码中设置断点(您的调试器将知道要等待适当的DLL如果它在DLL中被加载)。从那里开始,您正在调试您在IPython进程中运行的代码的一部分。

2

(假设你在Linux上) 你只需要gdb。首先建立结构告诉GDB在您的源文件中加入这$HOME/.gdbinit directory absolute-path-to-source

现在开始gdb python和gdb提示做: set args /usr/bin/ipython run

你不能直接做gdb ipython因为IPython的是脚本。请从这里参考gdb文档。

+0

我没有以这种方式得到IPython提示,我只看到 IPython 5.1.0 - 增强的交互式Python。 ? - > IPython功能介绍和概述。 %quickref - >快速参考。 帮助 - > Python自己的帮助系统。 对象? - >关于'object'的详情,使用'object?'了解更多详情。 但没有提示,没有控制台回声:-( (这是与lldb,但仍然...) – 2017-09-19 14:47:34

+0

它可以在Python 2.7.13/IPython 3.2.2在OpenSuSE Leap 42上工作。我没有测试它与其他版本抱歉。 – rwst 2017-09-20 06:27:21