我正在eclipse CodeSourcery IDE中调试一个C项目。该项目在linux-arm设备中运行,因此我使用gdbserver进行交叉编译和调试。我的项目包括一个主程序和一些共享库,我用-g3标签编译(尝试-g)。一切都正确构建:链接器找到所有依赖项,我将编译后的文件复制到远程计算机,然后运行
$gdbserver :2159 Test &
我可以在配置IDE的调试器后远程启动调试。 我正确调试,直到我进入'库函数。我收到一条输出消息
[New Thread 1032]
没有提示错误,除了我无法在函数内部调试,但函数正确执行,我可以继续我的主程序。后来,在另一个库中,我遇到了分段错误。
我假设gdbserver在本地计算机上搜索源代码,因为我可以调试我的主程序。为什么我不能调试我的库的源代码?
由于
答案 0 :(得分:0)
How to runtime debug shared libraries?
看看这个问题,您可以看到gdb只需使用函数名就可以为库内的函数分配断点。
(gdb) b func
Function "func" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (func) pending.