启动进程:
gdbserver :1234 /system/bin/executable
或附加至现有进程:
gdbserver :1234 --attach pid
在您的工作站上,使用 adb 将端口 1234 转发至设备:
adb forward tcp:1234 tcp:1234
启动位于源代码树 "prebuilt" 区域中的特殊版本 gdb:
prebuilt/Linux/toolchain-eabi-4.x.x/bin/i686-android-linux-gdb (for Linux)
prebuilt/darwin-x86/toolchain-eabi-4.x.x/bin/i686-android-linux-gdb (for Darwin)
如果两个特殊版本的 gdb 都无法找到,运行 find prebuilt -name i686-android-linux-gdbin your source tree 来查找并运行最新版本。
务必使用符号目录中而非主要 android 目录中可执行文件的副本,因为主要目录中的副本已去除了符号信息。
在 GDB 中,告知 GDB 何处查找将要加载的共享库:
set solib-absolute-prefix /absolute-source-path/out/target/product/product-name/symbols
set solib-search-path /absolute-source-path/out/target/product/product-name/symbols/system/lib
absolute-source-path 为您的源代码树的路径。
确保指定正确的目录 – 如果您弄错目录 GDB 可能不会告知您。
通过发出 GDB 命令连接至设备:
(gdb) target remote :1234
:1234 告知 gdb 连接至本地主机端口 1234,后者通过 adb 桥接至设备。
现在可以用和之前相同的方式使用 GDB 开始调试运行于 Android* 上的 C/C++ 代码。
有关详细信息,请参阅文档 GDB* - The GNU Project Debugger。