1)首先我們寫個簡單C++動態庫代表我們需要斷點進去的動態庫
//Debug.h頭文件
int DebugTest();
//Debug.cpp源文件
#include "Debug.h"
int DebugTest(){
int a =1;
int b =2;
return a+b;
}
// Android.mk文件, -g選項用於調試
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libDebug
LOCAL_SRC_FILES := Debug.cpp
LOCAL_CFLAGS += -static -fPIC -g
include $(BUILD_SHARED_LIBRARY)
ndk-build編譯輸出so
注:編譯時需要加NDK_DEBUG=1選項
ndk編譯可參考:https://blog.csdn.net/liny000/article/details/83020530
2)調試所需的項目設置(以Android Studio 新建native-lib的例子來講)
build.gradle添加so路徑
sourceSets {
main {
jniLibs.srcDirs = ["libs"]
}
}
注:
include_directories爲編譯Debug.so的源文件路徑
set_target_properties設置的是從項目app/libs路徑尋找編譯的so
3)此時項目設置完成,設置斷點開始進行調試;
4)啓動虛擬機,進入斷點
//root虛擬機 路徑爲sdk路徑
G:\Android\Sdk\platform-tools\adb.exe root