ndk-gdb調試Native可執行程序

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

相關文章
相關標籤/搜索