Native C++ 代码中要打印堆栈并不复杂,只要使 用已有的类 CallStack 就可以,它放在 system/core/libutils 下面,使用它之前需要将库 libutilscallstack 包进来,步骤如下:
(1) 首先在 Android.bp 中添加库 libutilscallstack,方法如下:
shared_libs: [
"libutilscallstack",
]
(2) 调用 CallStack 的文件头部将头文件 include 进来:
#include <utils/CallStack.h>
(3) 使用如下方式打印堆栈:
CallStack("yeby");
Native C 代码中打印堆栈
(1) 编写 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,以及添加库 libutilscallstack 和 liblog,方法如下:
srcs: [
"callstack.cpp",
]
shared_libs: [
"liblog".
"libutilscallstack",
]
(3) 使用如下方式打印堆栈:
extern void dumping_callstack(const char* msg);
char msg[100] = {0};
dumping_callstack(msg);
网友评论