前言:linux
使用NDK编译的可执行程序的调试步骤整理android
一、编译调试版本shell
1.一、Application.mk中增长 APP_OPTIM := debug 1.二、编译增长DEBUG选项 $ndk-build NDK_DEBUG=1 $ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=./Application.mk APP_BUILD_SCRIPT=./Android.mk
二、将生成目录下的gdbserver拷贝到手机上windows
#拷贝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"
三、手机终端启动gdbserverbash
3.一、 $adb shell $cd /data/local/tmp #启动gdbserver,端口号1234,expolit为要启动的可执行文件 $./gdbserver :1234 expolit 3.二、转发端口 $adb forward tcp:1234 tcp:1234
四、主机端链接调试tcp
#切换到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....ide