假设我在IPython中(例如在新的 QT 控制台上),并且我调用了一个我用它编写的 C++ 库(例如使用SWIG或Boost.Python)。我想在我的 C++ 代码中设置一个断点,并能够使用 IPython 与我的 C++ 工作区(即当我命中断点时的变量)进行交互(例如绘制我的 C++ 变量等)。
换句话说,我想从IPython调试我的 C++ 代码。这是可能吗?我可以为此使用哪些工具?
(假设你在 Linux 上)你只需要 gdb。首先设置配置告诉 gdb 您的源文件在哪里,方法是将其添加到$HOME/.gdbinit
:
directory absolute-path-to-source
现在启动gdb python
并在 gdb 提示符下执行:
set args /usr/bin/ipython
run
你不能直接做gdb ipython
,因为 ipython 是一个脚本。请从这里开始参考 gdb 文档。
通常,您无法直接使用 IPython 调试 C++ 代码。但是,您可以做的是使用 C++ 调试器来调试您的 C++ 代码。
本质上,您告诉您的 C++ 调试器执行运行代码所需的任何进程(这可能是 IPython 本身),并在您的 C++ 代码中设置断点(您的调试器将知道等待加载适当的 DLL,如果它在一个DLL中)。从那里,您正在调试在 IPython 进程中运行的代码部分。