我想开始使用 gdbserver 进行远程调试,所以我用一个简单的测试程序在本地机器上测试了它的功能,该程序会生成如下所示的段错误:
segfault.c -- 编译为名为“test”的精灵
#define NULL ((void*)0)
int main()
{
int value = *((int*)NULL);
return value;
}
现在当我运行时:
#gdb test
(gdb)run
我得到:
Starting program: /home/awaibel/digiworkspace/test/Debug/test
Program received signal SIGSEGV, Segmentation fault.
0x080483bf in main () at ../segfault.c:4
4 int value = *((int*)NULL);
但是,如果我像这样使用 gdb 服务器调试它:
#gdbserver :65535 test
#gdb test
(gdb)target remote 127.0.0.1:65535
(gdb)continue
它给了我调试信息:
Program received signal SIGSEGV, Segmentation fault.
0x080483bf in ?? ()
它似乎为段错误提供了相同的函数地址,但是在使用远程调试器进行调试时省略了名称和行号。是否可以让远程调试器显示此信息,如果可以,如何显示?
我想我应该补充一点,该程序是使用“-g”调试标志使用 GCC 编译的