Android15查看函数调用关系

发布于:2025-03-29 ⋅ 阅读:(23) ⋅ 点赞:(0)

Android15 Camera3中打印函数调用栈

1.使用CallStack跟踪函数调用

修改涉及三个内容:

  • Android.bp中添加对CallStack的引用。CallStack被打包在libutilscallstack.so。
  • 代码中包含CallStack的头文件。
  • 代码中调用CallStack接口,打印函数调用栈。

例子:查看Camera3Device::waitUntilStateThenRelock调用链路

1.Camera3Device.cpp中包含utils/CallStack.h头文件

diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index bb54f25..9f30160 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -74,6 +74,7 @@
 #include <algorithm>
 #include <optional>
 #include <tuple>
+#include <utils/CallStack.h>

 using namespace android::camera3;
 using namespace android::camera3::SessionConfigurationUtils;

2.Camera3Device::waitUntilStateThenRelock中打印调用栈

@@ -1654,32 +1661,59 @@ status_t Camera3Device::waitUntilStateThenRelock(bool active, nsecs_t timeout,
             mRequestThread->signalPipelineDrain(streamIds);
             signalPipelineDrain = true;
         }
         mRequestBufferSM.onWaitUntilIdle();
     }

+    {
+        android::String8 backtrace;
+        android::CallStack cs;
+        cs.update();
+        backtrace = cs.toString();
+        ALOGD("chenhy-trace:%s", backtrace.c_str());
+    }
+
     bool stateSeen = false;
     nsecs_t startTime = systemTime();
     do {
         if (mStatus == STATUS_ERROR) {
             // Device in error state. Return right away.

3.Camera3Device.cpp编译时链接libutilscallstack.so

diff --git a/services/camera/libcameraservice/Android.bp b/services/camera/libcameraservice/Android.bp
index a74b6d6..b58c535 100644
--- a/services/camera/libcameraservice/Android.bp
+++ b/services/camera/libcameraservice/Android.bp
@@ -233,6 +233,10 @@ cc_library {
         "-Werror",
         "-Wno-ignored-qualifiers",
     ],
+
+    shared_libs: [
+        "libutilscallstack",
+    ],
 }

 cc_library_static {

4.效果

Android15 Frameworks/Native中打印函数调用栈


网站公告

今日签到

点亮在社区的每一天
去签到