android 调用堆栈看函数调用 android::CallStack stack;
1、添加头文件
#include <utils/CallStack.h>
2、在需要打印输出堆栈信息的地方添加下面的语句
ALOGD("dump callstack");
android::CallStack stack;
stack.update( );
stack.log("CALLSTACK"); //callstack LOG_TAG
3、用adb logcat | grep CALLSTACK 查看调用堆栈的输出信息
例如在 高通的7350平台的chi-cdk中查看 Feature2Wrapper::ExecuteProcessRequest的调用堆栈信息
diff --git a/core/chifeature2/chifeature2wrapper.cpp b/core/chifeature2/chifeature2wrapper.cpp
index bfcad83..e9dad4d 100755
--- a/core/chifeature2/chifeature2wrapper.cpp
+++ b/core/chifeature2/chifeature2wrapper.cpp
@@ -10,6 +10,7 @@
#include "chifeature2wrapper.h"
+#include <utils/CallStack.h>
// NOWHINE FILE CP006: used standard libraries for performance improvements
@@ -647,13 +648,18 @@ CDKResult Feature2Wrapper::ExecuteProcessRequest(
{
CAMX_UNREFERENCED_PARAM(pRequest);
- CHX_LOG_INFO("ExecuteProcessRequest frameNumber %d", pRequest->frame_number);
+ CHX_LOG_INFO(" ExecuteProcessRequest frameNumber %d", pRequest->frame_number);
CDKResult result = CDKResultSuccess;
ChiFeature2UsecaseRequestObject* pUsecaseRequestObject = NULL;
UINT32 fwkFrameNum = pRequest->frame_number;
UINT32 fwkFrameIdx = (fwkFrameNum % MaxOutstandingRequests);
BOOL skipSubmitRequest = FALSE;
+android::CallStack stack;
+stack.update( );
+stack.log("callstack"); //callstack LOG_TAG
+
// UsecaseMC calls GetRequestInfo first which creats usecaes request object, and then calls ExecuteProcessRequest.
// Advancedcamerauescase calls ExecuteProcessRequest only, so the uro should be created here.
if (FALSE == m_pUsecaseBase->IsMultiCameraUsecase())