OPTEE Ftrace函数跟踪

news2024/12/25 9:26:18

安全之安全(security²)博客目录导读

OPTEE调试技术汇总

目录

一、序言        

二、Ftrace配置

三、Ftrace使用

四、Ftrace典型输出


一、序言        

        本节描述如何使用ftrace为TA生成函数调用图。该名称来自具有类似目的的Linux框架,但是OP-TEE ftrace非常具体。

        调用图记录了对函数的所有调用,并包含计时信息。因此,对于排除性能问题或优化代码来说,它是一个很有价值的工具。

二、Ftrace配置

        配置选项CFG_FTRACE_SUPPORT=y使OP-TEE能够从在用户模式下运行并使用-pg编译的TA收集函数信息。收集后,函数调用数据通过RPC发送到tee-supplicant,因此它们可以保存到磁盘,稍后使用辅助脚本(可在optee_os/scripts中找到的ftrace_format.py和symbolize.py)进行处理和显示。有关symbolize.py的使用可参考OPTEE异常调用栈解析。

        除了CFG_FTRACE_SUPPORT=y之外,另一个配置选项CFG_SYSCALL_FTRACE=y允许OP-TEE在内核模式下代表TA运行时收集系统调用的函数信息。请注意,少数内核函数无法跟踪;它们在源代码中有__noprof属性。

        第三个配置选项CFG_ULIBS_MCOUNT=y可以跟踪optee_os中包含的用户空间库以及ta使用的用户空间库(例如libutee和libutils)。

三、Ftrace使用

        使用CFG_FTRACE_SUPPORT=y构建OP-TEE OS,有选择性地配置CFG_ULIBS_MCOUNT=y和CFG_SYSCALL_FTRACE=y。

        使用-pg构建用户TA,例如,启用CFG_TA_MCOUNT=y来检测整个TA。此外,如果用户希望为特定文件设置-pg,则应在相应的子.mk中执行以下操作:cflags-<file-name>-y+=-pg。注意,instrumented ta有一个更大的.bss段。内存开销取决于CFG_FTRACE_BUF_SIZE宏,该宏可以使用config: CFG_FTRACE_BUF_SIZE=4096(默认值:2048,详细信息请参阅TA链接器脚本:TA /arch/$(arch)/ TA .ld. s)对用户TAs进行配置。       

        正常运行应用程序。当当前会话退出或TA执行过程中有任何中止时,tee- supplant将把函数数据写入/tmp/ftrace-<ta_uuid>.out。如果文件已经存在,则附加一个数字,例如:ftrace-<ta_uuid>.1.out。       

        运行名为ftrace_format.py的辅助脚本将函数二进制数据转换为人类可读的文本,并运行symbolize.py将函数地址转换为函数名:

        cat ftrace-<ta_uuid>.out | optee_os/scripts/ftrace_format.py | optee_os/scripts/symbolize.py -d <ta_uuid>.elf -d tee.elf

        有关QEMU的完整使用示例,请参阅commit 5c2c0fb31efb。

四、Ftrace典型输出

        持续时间(函数的执行时间)显示在函数的右括号行上,如果函数是叶(leaf )函数,则显示在同一行上。换句话说,只要检测函数返回,就会显示持续时间。它包括执行函数及其任何调用者所花费的时间。计数器物理计数寄存器(CNTPCT)和计数器频率寄存器(CNTFRQ)用于计算持续时间。服务外部中断所花费的时间被减去。

        第二列是当前函数的堆栈深度。它有助于直观地匹配函数入口和退出。

参考:Ftrace (function tracing) — OP-TEE documentation documentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端代码统计工具之cloc介绍

目录 一、安装 二 使用命令cloc path&#xff1a; 使用cloc工具可以很好的统计出前端的代码量&#xff0c;经过亲身实践真的很棒。 一、安装 安装命令 pnpm add cloc -g 二 使用命令cloc path&#xff1a; cloc ./ 如果报错&#xff1a; perl 不是内部或外部命令的问…

风靡全国的真人猫抓老鼠是什么?

某音上这个词条2.6亿&#xff0c;小某书上1.2亿。据说已经风靡全国50多个城市了。各大新闻网站和自媒体人争相报道&#xff0c;热度直接拉满&#xff01; 现在的年轻人真会玩&#xff01; 仔细了解过后发现&#xff0c;它火是有内在原因的&#xff0c;现在都市工作后没有可以…

近年来国内室内定位领域硕士论文选题的现状与趋势

目录 一、前言 二、选题的目的和意义 三、选题现状分析 四、选题趋势分析 一、前言 本博文采用了图表统计法分析了近5年来100余篇高被引室内定位领域硕士论文选题的现状&#xff0c;并从选题现状中得出了该领域选题的大致趋势。本文还通过分析该领域硕士毕业论文选题的现…

只需100GB内存,让Falcon 180B在你的电脑上起飞

一、前言 自2023年5月&#xff0c;阿布扎比技术创新研究所&#xff08;TII&#xff09;发布了两个预训练的LLM&#xff1a;Falcon 7B和Falcon-40B&#xff0c;这两个模型的表现十分优异&#xff0c;在OpenLLM排行榜上高居榜首。然而&#xff0c;在短短不到几个月的时间&#x…

Sftp服务安全评估

1 认识SFTP FTP&#xff08;SSH文件传输协议&#xff09;和FTP&#xff08;文件传输协议&#xff09;是两种用于文件传输的协议&#xff0c;它们在工作原理、安全性和配置方面有很大的差异。 1&#xff09;工作原理&#xff1a; FTP&#xff1a;FTP使用两个独立的连接&#…

【MySql】1- 基础篇(上)

文章目录 1.1 前言1.2 基础架构1.2.1 MySql基本架构示意图1.2.2 SQL语句执行顺序 1.3 日志系统&#xff1a;一条SQL更新语句如何执行1.3.1 两阶段提交 1.4 事务隔离1.4.1 隔离性与隔离级别1.4.2 事务隔离的实现-展开说明“可重复读”1.4.3 事务的启动方式 1.5 深入浅出索引1.5.…

什么是实时操作系统(UCOS简介)

uC/OS-III官网&#xff1a;Home Page - Weston Embedded Solutions 一、裸机与RTOS介绍 下面我将从不同方面阐述裸机与试试操作系统的区别&#xff0c;从而进一步介绍裸机和实时操作系统 定义&#xff1a; 裸机&#xff1a;裸机指的是没有任何操作系统或软件层的硬件系统。在…

Linux C 网络基础

为什么需要网络通信&#xff1f; 进程间通信解决的是本机内通信 网络通信解决的是任意不同机器的通信 实现网络通信需要哪些支持 1.通信设备&#xff1a;网卡&#xff08;PC机自带&#xff09;&#xff1b; 路由器和交换机&#xff1b; 光纤…

Android:ListView在Fragment中的使用

一、前言&#xff1a; 因为工作一直在用mvvm框架&#xff0c;因此这篇文章是基于mvvm框架写的。在Fragment复制之前一定要谨记项目可以跑起来。确保能跑起来之后直接复制就行。 二、代码展示&#xff1a; 页面布局 ?xml version"1.0" encoding"utf-8"…

Cortex-M3/M4基础

一、Cortex-M3/M4 通用寄存器 1、我们首先来了解一下M3/M4的寄存器&#xff0c;M4比M3多了一个浮点单元FPU。其他的部分基本和M3是一样的。 2、Cortex-M3/M4系列处理器拥有通用寄存器R0-R15以及一些特殊功能的寄存器。 3、R0‐ R12 是最“通用目的”的。 4、但是绝大多数的…

UEFI 安装 Debian12 Linux 物理机虚拟机VMware通用

文章目录 前言⭐前置虚拟机物理机 安装流程选择安装方式语言及键盘选择网络选择创建用户系统磁盘分区新旧磁盘分区方式BOOT分区SWAP分区根分区 安装过程中其他选项选择软件包安装流程末 前言⭐ 物理机和虚拟机安装仅有设置UFFI引导的差别、这里前置为设置UEFI引导。安装步骤大…

干货 | 中国石化化工高端新材料价格体系模型构建

以下内容整理自2023年夏季学期大数据能力提升项目《大数据实践课》同学们所做的期末答辩汇报。 随着石化行业市场日趋饱和&#xff0c;市场竞争日益激烈&#xff0c;企业利润空间不断被压缩&#xff0c;大多数石化企业急需转型开拓新市场&#xff0c;化工原料价格的波动对于石化…

数据结构 - 线性表(顺序表)

线性表是什么 线性表是包含若干数据元素的一个线性序列&#xff0c;记为&#xff1a; L (a0&#xff0c;…ai-1&#xff0c;ai,ai1,…an-1) L为表名&#xff0c;ai&#xff08;0≤ i ≤n-1&#xff09;为数据元素&#xff1b;n为表长&#xff0c;n>0时&#xff0c;线性表…

Vue的详细教程--用Vue-cli搭建SPA项目

Vue的详细教程--用Vue-cli搭建SPA项目 1.Vue-cli是什么2.什么是SPA项目1.vue init webpack spa2.一问一答模式2&#xff1a;运行完上面的命令后&#xff0c;我们需要将当前路径改变到SPA这个文件夹内&#xff0c;然后安装需要的模块此步骤可理解成&#xff1a;maven的web项目创…

PY32F003F18之ADC问题

普然单片机PY32F003F18的内部有一个LDO&#xff0c;其电压固定为1.2V。我在用官方程序测试时&#xff0c;若接上USB转串口的RX导线&#xff0c;向PC发送数据&#xff0c;读内部参考电压比较正确&#xff0c;但是&#xff0c;当接上USB转串口的TX导线时&#xff0c;发现读到内部…

【从0学习Solidity】15. 异常

【从0学习Solidity】15. 异常 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈开发…

ruoyi框架开发LOT项目

背景 最近闲着就用ruoyi的框架写了一个LOT项目&#xff0c;个人觉得效果还可以。 1、首页 2、企业管理 3、用户管理 4、设备列表 5、设备列表标签展示 6、设备详情页面 7、大屏展示界面 8、结束 -----华丽的分割线&#xff0c;以下是凑字数&#xff0c;大家不用花时间看&…

2023年中国研究生数学建模竞赛D题解题思路

为了更好的帮助大家第一天选题&#xff0c;这里首先为大家带来D题解题思路&#xff0c;分析对应赛题之后做题阶段可能会遇到的各种难点。 稍后会带来D题的详细解析思路&#xff0c;以及相关的其他版本解题思路 成品论文等资料。 赛题难度评估&#xff1a;A、B>C>E、F&g…

分享demo:Vue3 使用element plus + vue-i18实现国际化

&#x1f447;面是demo展示 PS&#xff1a;点赞关注私信获取demo

任务计划不执行bat脚本排查思路

问题&#xff1a; 我有一个任务计划&#xff0c;执行的是一个bat脚本,显示也已经操作成功了&#xff0c;但是没任何变化 排查&#xff1a; 1、把cmd文件拖入到cmd中执行查看 发现执行的时候是乱码的&#xff0c;肯定就是编码问题引起&#xff0c;在cmd执行前&#xff0c;提前切…