gdbserver调试android ndk程序

gdbserver调试android ndk程序

  • 原理:
    转发本机xx端口的数据到模拟器xxx端口去拉。。

然后本机启动gdb 使用targer remote 指令调试远程主机,

也就是本机的12345端口拉,由于被adb 做了转发,那么

我们在这里的调试发送到12345端口的数据,被转发

到模拟器的12345端口,也就是gdbserver监听的端口拉。。

  • 上传ndk prebuild 提供的gdbserver到tmp目录
    cd E:\Softs\android-ndk-r10e-windows-x86\android-ndk-r10e\prebuilt\android-x86\gdbserver
    gdb push gdbserver /data/local/tmp
  • 修改可执行权限
    adb shell chmod 777 /data/local/tmp/gdbserver
  • adb 端口转发
    adb forward tcp:12345 tcp:12345
  • 启动 gdbserver, 监听端口,指定调试的ndk程序
    /data/local/tmp/gdbserver 0.0.0.0:12345 /data/local/tmp/hello
    附加方式调试jinc:
    /data/local/tmp/gdbserver :12345 –attach 7612
  • pc 使用gdb发送信号调试
    E:\Softs\android-ndk-r10e-windows-x86\android-ndk-r10e\toolchains\x86-4.9\prebuilt\windows\bin\i686-linux-android-gdb.exe

gdb

target remote 127.0.0.1:12345

r

b main

c

  • 返回gdbserver cmd窗口查看运行输出。。
    hello NDK!
    gdbserver调试android ndk程序
    gdbserver调试android ndk程序
    gdbserver调试android ndk程序
    gdbserver调试android ndk程序