c/c++打印堆栈

Native C++ 代码中要打印堆栈并不复杂,只要使 用已有的类 CallStack 就可以,它放在 system/core/libutils 下面,使用它之前需要将库 libutilscallstack 包进来,步骤如下:

(1) 首先在 Android.bp 中添加库 libutilscallstack,方法如下:

include_dirs: [
    "system/core/libutils/include",
],
shared_libs: [
    "libutilscallstack",
],

(2) 调用 CallStack 的文件头部将头文件 include 进来:

#include 

(3) 使用如下方式打印堆栈:

CallStack("yeby");

Native C 代码中打印堆栈

(1) 编写 callstack.cpp

#include 
#include 

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);

你可能感兴趣的:(c/c++打印堆栈)