交叉编译gdbserver

从官网下载最新的gdb代码
http://ftp.gnu.org/gnu/gdb/
这才是正宗的, 那些git, googlesource, 镜像,甚至什么补丁,脚本等全见鬼去吧。
这么简单的事为什么搞那么复杂呢?装xx? 历史?

tar -xzvf gdb-7.11.tar.gz , 这才是正宗代码,包含gdb和gdbserver

1. 编译gdb
cd gdb-7.11
./configure --target=arm-linux-androideabi --prefix=/usr/local/gdb/gdb-7.11/arm-linux
make
make install

2.交叉编译gdbserver
cd gdb-7.11/gdb/gdbsever
./configure --target=arm-linux-androideabi --host=arm-linux-androideabi --prefix=/usr/local/gdbserver/gdb-7.11/arm-linux
make
make install

gdbserver 编译遇到两个错误,一个是找不到stdio_ext.h, 简单注释掉该行。
还有一个是函数冲突, 说某c文件的函数定义与一个头文件中的定义冲突。

但是我看了c 中定义的是static, 按说不算冲突。 先简单把头文件中的注释掉,编译通过。

出现这类故障,说明你下载的版本比你的编译环境要新, 你可以适当降低源码版本或者提升你的编译环境版本. 现在先不管了.

惴惴之心,就看能否运行了。

用ida+gdbserver 调试应用程序
gdbserver 与 ida-pro 配合调试, 一定不要用gdbserver 直接加载应用, 而应该空启动gdbserver,举例如下:

gdbserver --multi 192.168.150.1:23946

--multi 选项是调试多进程选项, 你不用在此处指定被调试程序名称,可有远端指定.

然后用ida 远程调试应用。run->application 填入远程文件路径,
ida 会对文件分析和应用签名及type,这样连接上可以看到ida 分析后的文件,
否则就是两眼一抹黑。
第二个好处, 调试完成后可以第二次加载应用。 不用重启gdb.
为了保留第一次的分析结果,你应该take a snapshot, 选择loader segment 即可, 然后
就可以很方便的,快速的重新启动程序。
而用gdb加载,, 调试完成后,gdb 虽然重启了,但它却没有重启应用。所以,调试完后还要杀掉gdb,重新启动gdb加载
可惜保存数据库就有些问题,因为数据库是4G虚拟空间,现在要做实,所以不用保存数据库,可以只提取里面手工添加过的符号信息等。


用ida+gdbserver 调试so 程序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值