Gdb 调试apk native层代码

169 阅读1分钟

1 确保应用apk 包含调试信息配置

修改 app build.gradle 配置文件

android {
    ...
    defaultConfig {
        ...
        externalNativeBuild {
            cmake {
                cppFlags "-g"
            }
        }
    }
}

2 获取apk pid

adb shell ps|grep com.android10.android10_rce_demo ## grep 后面接的是apk 应用的完整包名

3 在模拟器开启gdbserver

adb shell ##进入模拟器shell 模式
gdbserver :5039 --attach 14715

4 在开发机器上开启gdb

adb forward tcp:5039 tcp:5039
source build/envsetup.sh
gdb
set sysroot /root/bin/android10/out/soong/ndk/platforms/android-29/arch-x86_64
target remote :5039

使用gdb 命令调试

5 手动查询分配地址,加载符号表 解决代码无法显示问题

info sharedlibrary libc ##获取libc 实际分配地址

如图

add-symbol-file /root/bin/android10/out/target/product/generic_x86/symbols/apex/com.android.runtime/lib/bionic/libc.so 0xf1e09000 ##引入符号表

如图

接下来就可以进行正常使用gdb 调试了。