使用IPython调试C/C++代码

4

假设我在IPython中(例如在new QT console上),并且我从其中调用了我编写的C++库(例如使用SWIGBoost.Python)。我想在我的C++代码中设置断点,并具有使用IPython与我的C++工作区交互的能力(即当我触发断点时,我的变量),例如绘制我的C++变量等。

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


1
你尝试过在gdb 7中使用新的python扩展吗?我知道它们不是IPython,但你可以用它们做很多事情。这篇文章只是使用它的众多例子之一。 http://misspent.wordpress.com/2012/03/24/debugging-cc-and-cpython-using-gdb-7s-new-python-extension-support/ - dcolish
2个回答

3
(假设您使用Linux) 您只需要使用gdb。首先,通过将以下内容添加到$HOME/.gdbinit中,设置配置来告诉gdb您的源文件在哪里: directory 绝对路径到源文件 现在启动 gdb python 并在gdb提示符上执行以下操作: set args /usr/bin/ipython run 您不能直接执行gdb ipython ,因为ipython是一个脚本。请从此处参考gdb文档。

我用这种方式无法获得IPython提示符,我只能看到IPython 5.1.0 - 一个增强的交互式Python。? -> IPython功能介绍和概述。%quickref -> 快速参考。help -> Python自带的帮助系统。object? -> 'object'的详细信息,使用'object??'获取额外的详细信息。但是没有提示符,没有控制台回显 :-((这是使用lldb,但仍然...) - Dima Pasechnik
它可以在OpenSuSE Leap 42上与Python 2.7.13 / IPython 3.2.2一起使用。抱歉我没有测试其他版本。 - rwst

0

通常情况下,您无法直接使用IPython调试C++代码。不过,您可以使用C++调试器来调试您的C++代码。

实际上,您可以让C++调试器执行您需要用于运行代码的任何进程(这可能是IPython本身),并在您的C++代码中设置断点(如果它在DLL中,则调试器会等待适当的DLL加载)。从那里开始,您正在调试在IPython进程中运行的代码部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接