前言:

使用NDK编译的可执行程序的调试步骤整理

1、编译调试版本

1.1、Application.mk中增加

APP_OPTIM := debug

1.2、编译增加DEBUG选项

$ndk-build NDK_DEBUG=1

$ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=./Application.mk APP_BUILD_SCRIPT=./Android.mk

2、将生成目录下的gdbserver拷贝到手机上

#拷贝gdbserver

$adb push libs/armeabi-v7a/gdbserver /data/local/tmp

#给权限

$adb shell "chmod 777 /data/local/tmp/gdbserver"

#拷贝可执行程序

$adb push libs/armeabi-v7a/expolit /data/local/tmp

#分配权限

$adb shell "chmod 777 /data/local/tmp/expolit"

3、手机终端启动gdbserver

3.1、

$adb shell

$cd /data/local/tmp

#启动gdbserver,端口号1234,expolit为要启动的可执行文件

$./gdbserver :1234 expolit

3.2、转发端口

$adb forward tcp:1234 tcp:1234

4、主机端连接调试

#切换到jni的上层目录

$cd {jni-dir}

#连接gdb

$D:\android-ndk-r10e\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gdb.exe

#设置符号路径

(gdb)set solib-search-path obj/local/armeabi-v7a

#强制加载带符号的可执行文件

(gdb)file obj/local/armeabi-v7a/expolit

#连接远程gdb服务

(gdb)target remote :1234

(gdb) bt

#0 init_payloads () at jni/exploit.c:95

#1 0xb6fe557c in main (argc=1, argv=0xbeac5aa4, env=0xbeac5aac) at jni/exploit.c:294

最后enjoy debuging....

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐