54得票5回答
如何在GDB中获取内存地址的符号名称?

例如,我知道0x46767f0属于一个NSString*,是否有办法可以找出它是哪个NSString以帮助我找到一些我需要的bug?

36得票3回答
如何在gdb中重新加载已编译的二进制文件而不退出并且不失去断点?

根据这个优秀指南,重新编译源文件后只需使用“r”即可使gdb开始调试新的修改后的二进制文件。根据gdb手册中的暗示,“如果您的符号文件的修改时间自上次GDB读取其符号以来已更改,则GDB将丢弃其符号表并重新读取它”。 我正在尝试在Ubuntu 16.10上调试一个简单的、单一的.cpp文件。...

11得票1回答
如何从Python接口调试底层C++库?

我正在使用apollocaffe和Reinspect。Apollocaffe是一个C++库,而Reinspect是使用Python编写的。Reinspect从apollocaffe调用了API。我想在apollocaffe内部调试这些API。从Python代码中,我使用了python -m p...

15得票2回答
GDB调试器中是否可以“跳过”或“跳转”?

在GDB调试时,是否可能跳转至代码/可执行文件中的某个位置或地址? 假设我有类似以下内容的代码:int main() { caller_f1() { f1(); // breakpoint f2() } // want to skip f2() and jump ...

95得票4回答
如何使用GDB检查堆栈帧?

目前我一直在使用GDB反汇编二进制文件并检查不同的寄存器等等。是否有一个简单的命令可以检查堆栈上的所有内容?这样可以限制到函数内的所有内容吗?

11得票5回答
在客户机器上生成的核心文件调试

我们从在客户服务器上运行软件中获取核心文件。不幸的是,因为我们始终使用带有 -O2 的编译器且没有调试符号,这导致了无法解决崩溃问题的情况。我们修改了构建过程,现在它们会一起生成 -g 和 -O2。然后我们建议客户运行 -g 二进制文件以便更容易进行调试。 我有一些问题: 如果从非我们正...

20得票1回答
在Windows下逐行调试由Rcpp生成的DLL

最近我一直在尝试使用Rcpp(inline)生成DLL,以对提供的R输入执行各种任务。我希望能够逐行调试这些DLL中的代码,给定特定的R输入(我正在Windows下工作)。 为了说明,我们考虑一个任何人都应该能够运行的具体示例... 下面的代码是一个非常简单的cxxfunction,它只是...

8得票2回答
使用SWIG在Perl中包装共享库进行调试

我已经使用SWIG将我的C/C++代码包装在Perl中。由于包装后的代码,我遇到了一些分段错误。我尝试使用ddd调试Perl脚本,但不幸的是,即使我在脚本中设置断点(调用C/C++代码的那行),ddd也无法进入C/C++代码。 请问,在调试Perl代码时,是否有办法在C库中设置断点?或者您是...

12得票3回答
为C结构定义gdb打印函数

当我使用Java编写代码时,我使用Eclipse中嵌入的调试器。在这种情况下可视化对象时,调试器会自动调用toString()函数,这是我在探索程序状态时非常方便快速可视化的功能。 现在,当我使用C语言编程时,我使用emacs+gdb进行调试,但我没有找到/重建可视化复杂C结构的等效功能(即...

65得票10回答
如何在GDB中对STL容器进行漂亮打印?

我按照GDB维基上的指示安装了Python漂亮打印机以查看STL容器。 我的~/.gdbinit现在看起来像这样:python import sys sys.path.insert(0, '/opt/gdb_prettyprint/python') from libstdcxx.v6.p...