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抓取日志,有如下调用关系

相关推荐
2501_9159184126 分钟前
介绍如何在电脑上查看 iPhone 和 iPad 的完整设备信息
android·ios·小程序·uni-app·电脑·iphone·ipad
TheNextByte129 分钟前
如何通过蓝牙将照片从 iPhone 分享到Android ?
android·gitee·iphone
2501_9160088936 分钟前
没有 Mac 如何在 Windows 上创建 iOS 应用描述文件
android·macos·ios·小程序·uni-app·iphone·webview
Android系统攻城狮3 小时前
Android ALSA进阶之处理PCM的ioctl命令snd_pcm_lib_ioctl:用法实例(一百)
android·pcm·alsa·音频进阶
诸神黄昏EX11 小时前
Android Build系列专题【篇六:VINTF机制】
android
浪客川11 小时前
安卓日志工具类
android
csj5012 小时前
安卓基础之《(14)—数据存储(4)应用组件Application》
android
李坤林12 小时前
Android Binder 详解(6) Binder 客户端的创建
android·binder
北京自在科技12 小时前
苹果iOS 26.3实现跨安卓数据无缝迁移
android·ios·findmy
_道隐_12 小时前
Android里面的layer、DisplayList和hardwarebuffer之间是什么关系
android