前言: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