1. 程式人生 > >android hal層 c 堆疊列印方法

android hal層 c 堆疊列印方法

比如要追蹤 hardware/qcom/audio/hal/audio_hw.c 中adev_set_mode() 函式的函式堆疊呼叫關係

實際原理就是利用c++ callstack 庫,重新編譯成c庫後使用即可.

 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 庫, 如下:安卓 hal層 C 檔案中加除錯堆疊

 3. Audio_hw.c 中包含標頭檔案 : #include “callstack.h” 

4. Adev_set_mode 中呼叫 dumping_callstack() 

編譯so 

執行後列印堆疊如下:

再使用addr2line 解析堆疊,即可查清呼叫關係