gdbserver 远程调试问题:设置文件和so搜索路径

本文探讨了使用gdbserver进行远程调试时遇到的问题,包括如何指定可执行文件,以及在不使用-g选项编译时的函数可见性。当crash位于动态链接库(libcrash.so)中时,gdb无法准确定位到函数,展示了动态库调试的挑战。
摘要由CSDN通过智能技术生成

编写一个必然crash 的程序

#include <stdio.h>

void crash(){
 
    char *a=0;
    *a=0;
}
int main()
 {
        printf("hello world\n");
        crash();
        printf("after crash\n");
 }
执行gdb 远程调试

gdbserver :1234 a.out 


运行 gdb , 运行命令  target remote :1234

必须用 file 指定可执行文件,才能看见调用函数

(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400534 in ?? ()
(gdb) bt
#0  0x0000000000400534 in ?? ()
#1  0x00007fffffffe4c0 in ?? ()
#2  0x000000000040054c in ?? ()
#3  0x0000000000000000 in ?? ()
(gdb) file /home/payne/hello/a.out
A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Reading symbols from /home/payne/hello/a.out...done.
(gdb) bt
#0  0x0000000000400534 in fun1 () at hello.cpp:6
#1  0x000000000040054c in main () at h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值