博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gdbserver 远程调试问题:设置文件和so搜索路径
阅读量:4560 次
发布时间:2019-06-08

本文共 2561 字,大约阅读时间需要 8 分钟。

编写一个必定crash 的程序

#include 
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) cContinuing.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 hello.cpp:12

不用 -g 编译也能看见函数,但不能定位到行

Program received signal SIGSEGV, Segmentation fault.0x0000000000400534 in crash() ()(gdb) bt#0  0x0000000000400534 in crash() ()#1  0x000000000040054c in main ()

把 crash 放到 so 中会怎样?

生成libcrash.so 又一次编译 hello.cpp

g++ -o libcrash.so -shared crash.cpp 

export LD_LIBRARY_PATH=`pwd`

g++  hello.cpp  -lcrash

gdb 不能定位到 so 中的函数

rogram received signal SIGSEGV, Segmentation fault.0x00007ffff7ff65bc in ?

?

() (gdb) bt #0 0x00007ffff7ff65bc in ?? () #1 0x00007fffffffe470 in ?? () #2 0x0000000000400657 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) Please answer y or n. 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...(no debugging symbols found)...done. (gdb) bty Undefined command: "bty". Try "help". (gdb) bt #0 0x00007ffff7ff65bc in ??

() #1 0x00007fffffffe470 in ?? () #2 0x0000000000400657 in main ()

用 set solib-search-path 指定路径, 能够得到 so 中的位置

(gdb) set solib-search-path /home/payne/helloReading symbols from /home/payne/hello/libcrash.so...(no debugging symbols found)...done.Loaded symbols for /home/payne/hello/libcrash.soReading symbols from /lib/x86_64-linux-gnu/libc.so.6...Reading symbols from /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.15.so...done.done.Loaded symbols for /lib/x86_64-linux-gnu/libc.so.6Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/lib/x86_64-linux-gnu/ld-2.15.so...done.done.Loaded symbols for /lib64/ld-linux-x86-64.so.2(gdb) bt#0  0x00007ffff7ff65bc in crash() () from /home/payne/hello/libcrash.so#1  0x0000000000400657 in main ()

转载于:https://www.cnblogs.com/jzssuanfa/p/7119710.html

你可能感兴趣的文章
powerdesigner相关概念理解
查看>>
小娜追踪快递
查看>>
hdu_1863_畅通工程_201403122000
查看>>
04_XML_01_入门基础
查看>>
top coder password题解
查看>>
extjs form textfield的隐藏方法
查看>>
编写.reg文件 导入注册表
查看>>
Linux常用命令
查看>>
关于Static、全局变量、局部变量、Extern之间的种种
查看>>
借助面向对象的思路开发多用户模拟类工具
查看>>
Android 实现真机远程调试并适应7寸屏大小
查看>>
在内部架设NuGet服务器
查看>>
百度地图SDk 使用
查看>>
Computer Hardware
查看>>
小程序-demo:template
查看>>
[usaco3.2.5]msquare
查看>>
P5057 [CQOI2006]简单题 前缀异或差分/树状数组
查看>>
Class:向传统类模式转变的构造函数
查看>>
PDO
查看>>
jmeter响应的二进制数据转化为中文
查看>>