安卓 hal層 C 檔案中加除錯堆疊
阿新 • • 發佈:2019-01-06
適用於android5.1 及以後的版本
比如要追蹤 hardware/qcom/audio/hal/audio_hw.c 中adev_set_mode() 函式的函式堆疊呼叫
1. 在hardware/qcom/audio/hal/ 下新增 callstack.cpp 和 callstack.h檔案
callstack.cpp 內容:
#include <utils/CallStack.h>
extern "C" void dumping_callstack(void);
void dumping_callstack(void)
{
android::CallStack cs("Jamie");
}
callstack.h內容:
void dumping_callstack(void);
2. Android.mk 加入原始檔 和 libutils 庫, 如下:
3. Audio_hw.c 中包含標頭檔案 : #include “callstack.h”
4. Adev_set_mode 中呼叫 dumping_callstack()
編譯so 執行後列印堆疊如下:
再使用addr2line 解析堆疊,即可查清呼叫關係