在网上找了好久才找到一份能按照上面的步骤顺利的进行调试的文档。文档在最后有链接地址。
大概说一些 gdb gdbserver 在Android 下进行动态调试so的步骤:
准备工作:
1、找到 gdbserver 并 发送到手机里,gdbserver 的位置一般在NDK 目录下的 prebuilt 文件夹内,prebuilt 文件夹内包含各种CPU下的文件,手机一般是ARM,只需要把 android-arm 目录里面的 gdbserver 目录里面的gdbserver 这个文件push 到 手机里面就可以。从命令行中进入 gdbserver文件所在的目录,输入"adb push gdbserver /data/local/tmp"把该文件发送到手机里面。
2、找到gdb。gdbserver该文件一般位于NDK目录下的 toolchains 文件夹下,寻找对应cpu的文件夹,一般选择arm-linux-androideabi-x.x ,进入此文件夹后,在其 "prebuilt\windows\bin"子目录中可以看到以 "arm-linux-androideabi-XXX"开头的可执行文件,其中我们要找的文件为"arm-linux-androideabi-gdb.exe"。可以把他名称改为 "gdb.exe" ,然后在系统环境变量中加入该文件的路径,以便于以后可以直接通过命令行调用gdb。
需要注意的一点是:gdb 跟gdbserver的版本最好保持一致。
查看gdb跟gdbserver版本的方法:
以下是我使用的版本,
然后进入调试:
1、修改gdbserver的属性,使其可以执行。"adb shell" --> "su" ,最好是使用root 权限。然后进入到gdbserver目录下,"cd /data/local/tmp" ,然后 "chmod 777 gdbserver"。只用修改一次即可。gdbserver可以使用 "ls -l" 查看当前目录下的文件属性,确保 gdbserver 具运行的属性。
2、使用 "gdbserver :23946 --attach xxPID"。注意,gdbserver 跟 ":23946"之间有一个空,其中 "xxPID" 是要进行调试的进程的PID。
3、使用 "adb forward tcp:23946 tcp:23946"进行转发。
4、另起一个命令行,启动gdb。启动gdb后输入 "target remote 127.0.0.1: 23946"。便可进行调试
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-40587-1.html
谁信啊