用GDB远程调试android native程序
16lz
2021-01-26
上次写了几个native程序,想着如何调试,经过一阵子搜索和测试,终于完成了。有几个关键点:
1 gdb和gdbserver 因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbservergdbserver的是在 android-ndk-r9\prebuilt\android-arm\gdbserver 这个目录下 gdb 是在 android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin 目录下,名称是arm-linux-androideabi-gdb.exe 2 然后把gdbserver安装到设备的 /system/bin下 adb push gdbserver /system/bin/ adb shell chmod u+x /system/bin/gdbserver 3 以DEBUG方式编译程序 具体来说,就是 ndk-build NDK_DEBUG=1 可以调试的程序在 ..\obj\local\armeabi目录下,相对于jni目录 4 启动程序 adb push hello /data/local/tmp/ adb shell chmod u+x /data/local/tmp/hello gdbserver :8123 /data/local/tmp/hello 5 启动GDB开始调试 adb forward tcp:1234 tcp:8123 设置adb的转发 arm-linux-androideabi-gdb (gdb) file ../obj/local/armeabi/sum 加载调试程序 (gdb) target remote :1234 说明远程调试对象 (gdb)list 显示代码 (gdb) break main 设置断点 (gdb) cont 继续运行 6 总结 因为gdb本来就支持远程调试,在启动gdbserver的时候,指定本地调试端口,但是由于设备是通过adb来连接的,所以指定adb来做转接,在设备启动调试后,就等待gdb来连接调试,所以gdb启动后,指定本地的端口,加载代码,然后就可以调试了
更多相关文章
- AIR Android应用开发实战
- Android(第一季重制版)
- android使用ffmpeg的实例程序
- [置顶] android wifi调试总结 theros AR6K命令小结 android wifi
- 【转】Eclipse 开发Android小程序遇到的问题总结
- Android(安卓)Flurry使用说明
- Android(安卓)2.2 API Demos -- 通过调用子Activity返回值
- android 起动APP时锁住(Lock apps)
- Android(安卓)Activity启动过程