从官网下载最新的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文件的函数定义与一个头文件中的定义冲突。
用ida+gdbserver 调试应用程序
gdbserver 与 ida-pro 配合调试, 一定不要用gdbserver 直接加载应用, 而应该空启动gdbserver,举例如下:
ida 会对文件分析和应用签名及type,这样连接上可以看到ida 分析后的文件,
否则就是两眼一抹黑。
第二个好处, 调试完成后可以第二次加载应用。 不用重启gdb.
为了保留第一次的分析结果,你应该take a snapshot, 选择loader segment 即可, 然后
就可以很方便的,快速的重新启动程序。
而用gdb加载,, 调试完成后,gdb 虽然重启了,但它却没有重启应用。所以,调试完后还要杀掉gdb,重新启动gdb加载
可惜保存数据库就有些问题,因为数据库是4G虚拟空间,现在要做实,所以不用保存数据库,可以只提取里面手工添加过的符号信息等。
用ida+gdbserver 调试so 程序。
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 会对文件分析和应用签名及type,这样连接上可以看到ida 分析后的文件,
否则就是两眼一抹黑。
第二个好处, 调试完成后可以第二次加载应用。 不用重启gdb.
为了保留第一次的分析结果,你应该take a snapshot, 选择loader segment 即可, 然后
就可以很方便的,快速的重新启动程序。
而用gdb加载,, 调试完成后,gdb 虽然重启了,但它却没有重启应用。所以,调试完后还要杀掉gdb,重新启动gdb加载
可惜保存数据库就有些问题,因为数据库是4G虚拟空间,现在要做实,所以不用保存数据库,可以只提取里面手工添加过的符号信息等。
用ida+gdbserver 调试so 程序。