Native C++ 代碼中要打印堆棧并不復(fù)雜据悔,只要使 用已有的類(lèi) CallStack 就可以默穴,它放在 system/core/libutils 下面咏花,使用它之前需要將庫(kù) libutilscallstack 包進(jìn)來(lái),步驟如下:
(1) 首先在 Android.bp 中添加庫(kù) libutilscallstack,方法如下:
include_dirs: [
"system/core/libutils/include",
],
shared_libs: [
"libutilscallstack",
],
(2) 調(diào)用 CallStack 的文件頭部將頭文件 include 進(jìn)來(lái):
#include <utils/CallStack.h>
(3) 使用如下方式打印堆棧:
android::CallStack("yeby");
Native C 代碼中打印堆棧
(1) 編寫(xiě) callstack.cpp
#include <utils/CallStack.h>
#include <android/log.h>
extern "C" void dumping_callstack(const char* msg)
{
android: CallStack cs;
cs.update();
cs.log("yeby", ANDROID_LOG_ERROR, "prefix");
}
(2) 在 Android.bp 中添加源碼 callstack.cpp癣朗,以及添加庫(kù) libutilscallstack 和 liblog,方法如下:
srcs: [
"callstack.cpp",
]
shared_libs: [
"liblog".
"libutilscallstack",
]
(3) 使用如下方式打印堆棧:
extern void dumping_callstack(const char* msg);
char msg[100] = {0};
dumping_callstack(msg);