用GDB远程调试android native程序
2015-04-19 12:40
513 查看
上次写了几个native程序,想着如何调试,经过一阵子搜索和测试,终于完成了。有几个关键点:
1 gdb和gdbserver
因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbserver
gdbserver的是在 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启动后,指定本地的端口,加载代码,然后就可以调试了
1 gdb和gdbserver
因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbserver
gdbserver的是在 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启动后,指定本地的端口,加载代码,然后就可以调试了
相关文章推荐
- Android gdbserver远程调试native程序方法
- Ubuntu下使用gdb远程调试android native程序笔记
- 用GDB远程调试android native程序
- gdb 远程调试 android native 程序
- 使用ndk-gdb调试android native程序
- Android使用gdb调试native程序
- Eclispe+CDT+gdb调试android ndk程序----包括CDT组件跟Sequoyah Android Native Code Support组件安装
- 用android自带的gdb与gdbserver调试native C/C++程序
- Android无源码调试Native代码(使用GDB)
- IDA + GDBServer实现iPhone程序远程调试 (手机远程)
- android gdbserver 远程调试
- windows下gdb与gdb_server调试Android的程序
- ndk-gdb调试Native可执行程序
- 使用GDB调试Android中的C/C++程序
- Visual Studio 2015中使用gdb远程调试linux程序
- Ubuntu和Mac使用gdbserver远程调试android源码
- 编译安装gdb+insight和gdbserver远程调试arm开发板native应用程序
- 利用GDB调试Android里的程序
- android下远程GDB调试
- Windows下gdb调试Android程序环境搭建