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 <utils/CallStack.h>

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

android::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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。