Android15跟踪函数调用关系

注:这里介绍Android15 Camera系统调试用到的跟踪函数调用关系的一些方法。

使用CallStack类dump调用栈

例如,跟踪Camera3OutputStream对象的创建。

1.dump调用栈

步骤1.Camera3OutputStream.h/.cpp中通过CallStack类打印调用信息.

复制代码
//frameworks/av/services/camera/libcameraservice/device3/Camera3OutputStream.h
//添加dumpCallStack()接口,封装CallStack调用
class Camera3OutputStream :
        public Camera3IOStreamBase,
        public Camera3OutputStreamInterface {
    ...
    static void dumpCallStack(const char* prefix);
};
//frameworks/av/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
//添加dumpCallStack()接口实现
#include "utils/CallStack.h"
void Camera3OutputStream::dumpCallStack(const char* prefix)
{
    android::CallStack stack(prefix);
    stack.update();
    //stack.log("CAMERA_CALLSTACK");
}

步骤2.Camera3OutputStream需要的位置添加dumpCallStack()调用

复制代码
//frameworks/av/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
Camera3OutputStream::Camera3OutputStream(int id,
        sp<Surface> consumer,
        uint32_t width, uint32_t height, int format,
        android_dataspace dataSpace, camera_stream_rotation_t rotation,
        nsecs_t timestampOffset, const std::string& physicalCameraId,
        const std::unordered_set<int32_t> &sensorPixelModeUsed, IPCTransport transport,
        int setId, bool isMultiResolution, int64_t dynamicRangeProfile,
        int64_t streamUseCase, bool deviceTimeBaseIsRealtime, int timestampBase,
        int mirrorMode, int32_t colorSpace, bool useReadoutTimestamp) :
        Camera3IOStreamBase(id, CAMERA_STREAM_OUTPUT, width, height,
                        /*maxSize*/0, format, dataSpace, rotation,
                        physicalCameraId, sensorPixelModesUsec, setId, isMultiResolution,
                        dynamicRangeProfile, streamUseCase, deviceTimeBaseRealtime,
                        timestampBase, colorSpace),
        mConsumer(consumer),
        mTransform(0),
        ... {
        
        dumpCallStack("Camera3OutputStream::Camera3OutputStream1");
        ...
}

步骤3.编译并更新cameraserver到设备

步骤4.重启系统

步骤5.操作相机

2.查看调用栈

通过logcat抓取日志,有如下调用关系

相关推荐
饭小猿人8 小时前
Android 腾讯X5WebView如何禁止系统自带剪切板和自定义剪切板视图
android·java
_李小白8 小时前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
美狐美颜SDK开放平台8 小时前
多场景美颜SDK解决方案:直播APP(iOS/安卓)开发接入详解
android·人工智能·ios·音视频·美颜sdk·第三方美颜sdk·短视频美颜sdk
嗷o嗷o9 小时前
Android BLE 里,MTU、分包和长数据发送到底该怎么处理
android
Gary Studio10 小时前
Android AIDL HAL工程结构示例
android
y = xⁿ11 小时前
MySQL八股知识合集
android·mysql·adb
andr_gale11 小时前
04_rc文件语法规则
android·framework·aosp
祖国的好青年12 小时前
VS Code 搭建 React Native 开发环境(Windows 实战指南)
android·windows·react native·react.js
黄林晴13 小时前
警惕!AGP 9.2 别只改版本号,R8 规则与构建链路全线收紧
android·gradle