用GDB远程调试android native程序
来源:互联网 发布:263网络股份有限公司 编辑:程序博客网 时间:2024/05/17 08:50
http://blog.163.com/tod_zhang/blog/static/102552214201392824228231/
上次写了几个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启动后,指定本地的端口,加载代码,然后就可以调试了
0 0
- 用GDB远程调试android native程序
- GDB+gdbserver 远程调试android native code
- GDB + gdbserver 远程调试android native code
- Android使用gdb调试native程序
- 使用ndk-gdb调试android native程序
- 使用GDB调试Android NDK native程序
- Android gdbserver远程调试native程序方法
- android如何使用ndk-gdb调试native程序
- 使用GDB调试Android NDK native(C/C++)程序
- 使用GDB调试Android NDK native(C/C++)程序
- 使用GDB调试Android NDK native(C/C++)程序
- 使用GDB调试Android NDK native(C/C++)程序
- 用android自带的gdb与gdbserver调试native C/C++程序
- Android下用gdb远程调试
- 利用GDB远程调试程序
- gdb远程调试嵌入式程序
- gdb 调试android 程序
- android下远程GDB调试
- getHeader("x-forwarded-for")获取真实IP
- 保存APP内所有异常
- scala中日期格式的转换
- shiro学习第一步
- [Maven] Missing artifact (解决办法)
- 用GDB远程调试android native程序
- shell日期循环
- 如何使用CocoaPods
- 解决Android端融云无法初始化(程序一运行就崩溃),定位在RongIM.init(this);
- URLForResource加载项目内的HTML
- Java、Android多线程、线程池
- 心血来潮
- DM9000 和处理器地址的关系
- iOS-Core-Animation-Advanced-Techniques(五)