1. 程式人生 > >安卓 hal層 C 檔案中加除錯堆疊

安卓 hal層 C 檔案中加除錯堆疊



適用於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 庫, 如下:

安卓 hal層  C 檔案中加除錯堆疊 - 一口結實的鐵鍋 - 一口結實的鐵鍋

 

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

  4.    Adev_set_mode 中呼叫 dumping_callstack()

安卓 hal層  C 檔案中加除錯堆疊 - 一口結實的鐵鍋 - 一口結實的鐵鍋

  

編譯so 執行後列印堆疊如下:

安卓 hal層  C 檔案中加除錯堆疊 - 一口結實的鐵鍋 - 一口結實的鐵鍋

  

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