当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/565285.html

相关文章:

  • 公司网络推广网站就选火13星仁德短网址生成算法
  • 如何使网站能被百度搜到福建省第一电力建设公司网站
  • 电子报纸离线保存:一键下载多报PDF工具
  • 2009-2024年全国大学生数学竞赛历年真题及答案解析PDF(含数学类/非数学类/初赛/决赛)
  • 网站开发国际化自己做的网站怎么删除
  • 《大模型导论》笔记——模型微调
  • 11.03
  • 从一个C++开发者看Java之(四)精准切入
  • 电子杂志网站建设网站设计师英文
  • 网站301在哪做青岛网上房地产网官网
  • 新安装的ubuntu 通过ssh远程登录
  • Dev-C++一些问题的处理
  • 网站落地页制作网站推广优化方案
  • 《嵌入式硬件(二十一):基于IMX6ULL的脉冲宽度调制(PWM)操作》
  • 网页设计与网站建设步骤高端网站定制建设公司哪家好
  • OpenCV计算机视觉实战(28)——深度学习初体验
  • 统计局网站集约化建设方案网站数据库有哪些
  • 自己动手写深度学习框架(快速学习python和关联库)
  • 从“算法思维”到“算子思维”:我在昇腾AI开发中的认知跃迁
  • 全球优秀企业网站工程公司资质等级
  • Hello epoll!
  • 泰安哪里做网站wordpress 男扮女
  • Linux】 性能调优实战:内核参数优化技巧
  • 网站建设厘金手指排名二一伊春网站制作
  • 做公众号关注网站网页安全防护怎么关闭
  • 【运维✨】云服务器公网 IP 迷雾:为什么本机看不到那个地址?
  • Swift 6.2 列传(第一篇):主线 Actor 的 “独尊令”
  • 基于AI大模型智能硬件--小智 AI 聊天机器人项目介绍
  • mybatis-plus SQL 注入漏洞导致版本升级引发的问题
  • 低空经济爆发期 遥感影像识别如何破解数据安全与效率困局