2025年systrace工具(stress工具安装)

systrace工具(stress工具安装)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> 

讯享网

有针对native的c++代码,也有系统app的java代码,但是缺少了普通第三方app如何打印trace,有学员朋友在第三方app尝试打印trace时候发现了一些问题,那就是使用perfetto抓取的trace死活没有自己打印的trace,马哥这边经过验证也确实有存在相关的问题,下面针对第三方app没办法打印trace问题来进行详细的分析。

第三应用一般只能使用如下类:
frameworks/base/core/java/android/os/Trace.java
在这里插入图片描述
讯享网
这里可以看到Trace总共才可以使用上面几个公开方法,其他方法和变量第三方应用均不可以使用,当然也可以使用反射的方式。
正常代码中如果加入trace一般使用如下方式:
void beginSection( String sectionName);//sectionName代表打印trace的名字,一般可以写成当前方法等
void endSection();//trace代表结束,与上面方法成对出现

打印如下:
在这里插入图片描述
运行抓取:
使用写好perfetto脚本抓取

讯享网

capture.sh源码如下:

 

上面就是使用aosp源码的record_android_trace工具抓取的,大家自己改成自己合适路径。

结果如下:
在这里插入图片描述
发现完全没有"MainActivity onclick"这里trace。

讯享网

这里可以看到也加入了相关的打印看看isTagEnabled(TRACE_TAG_APP)是否使能了,结果如下:

在这里插入图片描述可以看出isTagEnabled(TRACE_TAG_APP)为false是导致没办法查看trace的关键,看看isTagEnabled源码:

 

这里是native方法会调用到jni的cpp文件
在这里插入图片描述

讯享网
 
讯享网

最后到了

 

再调用到atrace_get_property方法

讯享网

上面可以看出tag最后其实有2个部分:普通tag,ATRACE_TAG_APP。

既可以看出ATRACE_TAG_APP和其他如下TAG不同:

 

下面分别分析一下普通tag和ATRACE_TAG_APP是如何进行设置的,这里为了简单方便拿atrace代码来分析。
1 普通tag
上面代码看出主要是“debug.atrace.tags.enableflags”属性获取值,那么可以把这里作为切入点反推
在这里插入图片描述
使用这个属性的只有setTagsProperty方法
在这里插入图片描述
那么看看setTagsProperty是在哪调用的

在这里插入图片描述
这里核心变量g_categoryEnables和k_categories就是常见携带的参数映射表进行匹配,然后设置相关tags这个整型变量
在这里插入图片描述g_categoryEnables是哪里设置呢?
在下面的setCategoryEnable方法设置
在这里插入图片描述setCategoryEnable是靠atrace传递来的相关tag参数解析调用
在这里插入图片描述

2 单独的ATRACE_TAG_APP
识别是否有-a参数然后进行获取参数赋值g_debugAppCmdLine
在这里插入图片描述
在上面提到的setUpUserspaceTracing方法中调用了setAppCmdlineProperty
在这里插入图片描述看看setAppCmdlineProperty实现
在这里插入图片描述在这里插入图片描述
看得出来本质也是调用了属性设置而已。
然后在
system/core/libcutils/trace-dev.inc
会进行属性获取,并且与当前进程名字进行比较决定是否开启app的trace。
在这里插入图片描述在这里插入图片描述最后在atrace_get_property时候会进行ATRACE_TAG_APP的或操作
在这里插入图片描述

配置不一样,不是和他们一起,需要单独设置,具体如何设置呢?

如何设置可以看看perfetto和atrace命令的help:
在这里插入图片描述

在这里插入图片描述
这里要加入-a方式
在这里插入图片描述执行结果如下:

包名为com.example.injectmotion

讯享网

抓取trace后看到结果如下:
在这里插入图片描述

更多framework详细代码和资料参考如下链接

hal+perfetto+surfaceflinger

https://mp.weixin..com/s/LbVLnu1udqExHVKxd74ILg
在这里插入图片描述

其他课程七件套专题:在这里插入图片描述
点击这里
https://mp.weixin..com/s/Qv8zjgQ0CkalKmvi8tMGaw

小讯
上一篇 2025-05-09 17:16
下一篇 2025-06-08 11:12

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/190127.html