c/c++打印堆棧

Native C++ 代碼中要打印堆棧并不復(fù)雜,只要使 用已有的類 CallStack 就可以,它放在 system/core/libutils 下面,使用它之前需要將庫 libutilscallstack 包進來,步驟如下:

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

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

(2) 調(diào)用 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);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容