zoukankan      html  css  js  c++  java
  • 用GDB远程调试android native程序

    上次写了几个native程序,想着如何调试,经过一阵子搜索和测试,终于完成了。有几个关键点:

    1 gdb和gdbserver
    因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbserver
    gdbserver的是在 android-ndk-r9prebuiltandroid-armgdbserver 这个目录下
    gdb 是在 android-ndk-r9 oolchainsarm-linux-androideabi-4.8prebuiltwindows-x86_64in 目录下,名称是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
    可以调试的程序在 ..objlocalarmeabi目录下,相对于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启动后,指定本地的端口,加载代码,然后就可以调试了
  • 相关阅读:
    ElasticSearch(5.5.2)在java中的使用
    ElasticSearch基础
    Linux中profile、bashrc、bash_profile之间的区别和联系
    linux上安装启动elasticsearch-5.5.1完整步骤
    linux 解压zip文件
    Ubuntu Linux 环境变量PATH设置
    sudo 用户添加
    SecureCRT5 中文乱码
    韩美林的养生秘诀——“懒人操”
    实验二:线性表的实验【物联网1132-11】
  • 原文地址:https://www.cnblogs.com/jefree/p/4438936.html
Copyright © 2011-2022 走看看