gdb调试总结

一、安卓机器中本地使用gdb调试

!android shell
$cd /data/local/tmp
$wget http://dan.drown.org/android/gdb-static.tar.gz
$tar zxf gdb-static.tar.gz
$chmod 777 gdb
$./gdb 程序名
....

二、双机(安卓上安装gdbserver,PC端运行gdbclient)

1、编译native代码时使用NDK_DEBUG参数,编译完成后会在libs/armeabi-v7/下多生成两个文件gdb.setup和gdbserver;

!windows shell
$ndk-build NDK_DEBUG=1

2、将gdbserver拷贝到手机目录下

!windows shell
$adb push gdbserver /data/local/tmp/
$adb shell chmod 777 /data/local/tmp/gdbserver

3、运行gdbserver

!android shell 1
$cd /data/local/tmp
$./gdbserver :1234 ;如果附加进程则--attach 2222
。。。

4、转发端口(另开一个shell)

!windows shell
$adb forward tcp:1234 tcp:1234


5、PC端使用gdbclient链接(使用NDK中自带的gdb)

!windows shell
$cd <your_path>\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\linux-x86_64\bin
$./arm-linux-androideabi-gdb 
    $$ target remote :1234                       ;连接远程gdbserver
    $$ set args "Hello, World" Test              ;设置参数
    $$ show args
    $$ set solib-search-path obj/local/armeabi   ;设置符号路径
    $$ bt                                        ;查看堆栈
    $$ l                                         ;有符号会显示pc附件源码
    $$ break main                                ;下断点
    $$ run                                       ;运行
    $$ n                                         ;n单步执行 s单指令执行
    $$ x                                         ;查看内存
    $$ info sharedlibrary                        ;查看加载的共享模块
    $$ show debug-file-directory                 ;调试符号目录
    $$ set debug-file-directory <directory>      ;设置调试符号目录
    $$ set symbol-file <directory>               ;设置符号文件
    $$ set arm fallback-mode                     ;设置thumb模式 
    $$ set arm force-mode                        ;设置arm模式
    $$ break 0x400c0e88 + (($cpsr>>5)&1)         ;thumb模式下断点需要+1


你可能感兴趣的:(gdb调试总结)