C gdb远程调试-程序在进入共享库时崩溃
我在cygwin主机上交叉编译了一个针对linux的应用程序。该程序在目标机上运行正常,也在gdbserver上运行。然而,当我尝试单步执行程序时,每当我进入共享库函数时,它就会崩溃。回溯gdb打印为:C gdb远程调试-程序在进入共享库时崩溃,c,gdb,shared-libraries,remote-debugging,gdbserver,C,Gdb,Shared Libraries,Remote Debugging,Gdbserver,我在cygwin主机上交叉编译了一个针对linux的应用程序。该程序在目标机上运行正常,也在gdbserver上运行。然而,当我尝试单步执行程序时,每当我进入共享库函数时,它就会崩溃。回溯gdb打印为: (gdb)bt #0 0x00000000004008f4英寸??() #1 0x0000003f0380d7e4英寸??() #2 0x00002b1373630000英寸??() #3 0x00002B137330590英寸??() #4 0x00002b1373631348英寸?
(gdb)bt
#0 0x00000000004008f4英寸??()
#1 0x0000003f0380d7e4英寸??()
#2 0x00002b1373630000英寸??()
#3 0x00002B137330590英寸??()
#4 0x00002b1373631348英寸??()
#5 0x00002b1373631888英寸??()
#6 0x0000003f03a1c510英寸??()
#7 0x0000000000000000英寸??()
如果我在函数上设置断点并继续,它不会崩溃
我是你好
void foo(int*);
int main()
{
int a;
foo(&a);
return a;
}
使用x86_64-unknown-linux-gnu-gcc-g-c hello.c编译
和foo.c:
void foo(int *i)
{
*i = 2;
}
使用x86_64-unknown-linux-gnu-gcc-g-shared-Wl、-soname、libfoo.so-o libfoo.so foo.c编译
链接是与x86_64-unknown-linux-gnu-gcc-Wl,-rpath,。libfoo.so hello.o-o hello.尝试使用debugs标志编译共享库。我也看到过这种情况,尽管在您的示例中它似乎不可复制(同样,我没有交叉编译)。然而,处理这种情况的提示
- 当然,首先,建议使用
(不仅仅是-g)进行编译-O0-ggdb3
- 使用
禁用这种延迟解析LD\u BIND\u NOW=1 gdb hello
- 如果没有帮助,请在gdb中使用
,然后单步执行和/或像往常一样继续,等待它在foo中停止bfoo