标签: systrace

无法在Android SDK中查看由Systrace工具生成的HTML跟踪报告

我试图在Android SDK中使用Systrace工具生成跟踪报告,但我无法在浏览器中查看报告.它是空白的,不包含任何信息.我在一些论坛上看到我需要在Chrome浏览器中打开报告,我也用Chrome打开它,但报告是空白的.

我已经从开发者选项中启用了USB调试,设备运行的是Android 4.2,我正在使用Android SDK中的DDMS工具来生成跟踪.

http://developer.android.com/tools/help/systrace.html

android ddms systrace

29
推荐指数
2
解决办法
1万
查看次数

Android DDMS v22.0.1无法使用Droid Razor 4.1.2生成systrace

我选择了几个跟踪标记,当我运行跟踪(从DDMS)时,我得到以下输出:

Unexpected error while collecting system trace. Unable to find trace start marker 'TRACE:':
error opening /sys/kernel/debug/tracing/options/overwrite: 
No such file or directory (2)
Run Code Online (Sandbox Code Playgroud)

error openi(在这里切断错误)

确实内核目录中没有调试文件,但哪种机制会生成必要的路径?

android ddms systrace

21
推荐指数
1
解决办法
8549
查看次数

在Windows 7上使用Jelly Bean 4.1模拟器在ADB中运行systrace工具时出错

如何运行systrace以显示其html输出?在观看Google I/O 2012谈话"For Butter or Worse"后,我无法systrace使用运行Jelly Bean 4.1的模拟器开始使用Windows 7.

我做了以下事情:

  1. 安装了Python 2.7,并将安装文件夹添加到我的PATH中
  2. 冉以下几点:C:\android-sdk\platform-tools\systrace>python systrace.py(与旧的SDK: C:\android-sdk\tools\systrace>python systrace.py)

但我在cmd中收到以下错误:

Traceback (most recent call last):
  File "systrace.py", line 212, in <module>
    main()
  File "systrace.py", line 124, in main
    ready = select.select([adb.stdout, adb.stderr], [], [adb.stdout, adb.stderr])
select.error: (10093, 'Either the application has not called WSAStartup, or WSAStartup failed')
Run Code Online (Sandbox Code Playgroud)

注意:

  • 我在模拟器中启用了跟踪: Settings > Developer Options > Enable traces
  • 我也试过Python 3.2

android adb windows-7 systrace android-4.2-jelly-bean

16
推荐指数
1
解决办法
1万
查看次数

performTraversals递归的原因,长egl缓冲区交换时间

我在Android 4.2.2上的非根Nexus 4上使用systrace测量我的应用程序的性能.我在报告中看到一些对我没有意义的事情,我想知道它们是否可能是systrace错误,或者是否有人可能知道这些症状可能的根本原因.

1-运行结束时performTraversals下的大型递归

链接到报告 - 请查看运行结束时的大曲线(~18s).我的理解是performTraversals处于框架级别,它绘制了用户界面的单个框架.所以对我来说没有任何意义,它下面可能会有递归调用.另外,因为我在运行结束时得到了这种指数堆栈,我认为这实际上只是运行结束时数据的systrace缺陷.这种递归是否可能?这是什么意思?

2- performTraversals在运行过程中递归,具有较长的缓冲区交换时间

链接到报告 - 有趣的行为开始于12秒左右.当我在跑步中间看到类似的东西时,我想我也许不应该写下这个.此外,我花了很多时间试图弄清楚什么可能会占用这么长的eglSwapBuffers/queueBuffer(我的应用程序不使用openGL,只是直接使用框架)无济于事,当一位同事告诉我只是忽略它因为交换缓冲区总是瞬间完成的.可能还有更多吗?这里有什么需要调查的吗?

performance android systrace

12
推荐指数
1
解决办法
1314
查看次数

确定和防止Android Scheduling延迟

我目前正在尝试改善应用程序动画的流动性.

我运行了Android systrace并发现了几个调度延迟警报,根据systrace对jank的贡献.

不幸的是,我无法理解systrace提供的其他数据.有人能指出我正确的方向,如何找到调度延迟的原因?

提前致谢

performance android systrace

12
推荐指数
1
解决办法
2139
查看次数

systrace:HTML输出的跟踪结果格式无效

当我运行 python systrace.py时--time = 10 -o mynewtrace.html gfx
发生以下错误

Starting tracing (10 seconds)
Tracing completed. Collecting output...
<br>
Run Code Online (Sandbox Code Playgroud)

线程Thread-11中的异常:

Traceback (most recent call last):
  File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner
    self.run()<br>
  File "C:\Python27\lib\threading.py", line 754, in run
    self.__target(*self.__args, self.__kwargs)<br>
  File "C:\Users\rajnish.r\AppData\Local\Android\Sdk\platform-tools\systrace\cat
apult\systrace\systrace\tracing_agents\atrace_agent.py", line 194, in _collect_a
nd_preprocess
    self._trace_data = self._preprocess_trace_data(trace_data)<br>
  File "C:\Users\rajnish.r\AppData\Local\Android\Sdk\platform-tools\systrace\cat
apult\systrace\systrace\tracing_agents\atrace_agent.py", line 272, in _preproces
s_trace_data
    trace_data = strip_and_decompress_trace(trace_data)<br>
  File "C:\Users\rajnish.r\AppData\Local\Android\Sdk\platform-tools\systrace\cat
apult\systrace\systrace\tracing_agents\atrace_agent.py", line 332, in strip_and_
decompress_trace
    **trace_data = zlib.decompress(trace_data)**
Run Code Online (Sandbox Code Playgroud)

错误:解压缩数据时出错-5:不完整或截断的流

Outputting Systrace results...<br>
Tracing complete, writing results<br> …
Run Code Online (Sandbox Code Playgroud)

performance android systrace

12
推荐指数
1
解决办法
2312
查看次数

什么是Systrace内的VerifyClass意味着什么?

我正在查看systrace我的应用程序生成的内容,并确定了一个耗时太长的框架.这是由引起RecyclerViewonCreateViewHolder膨胀我的项目视图时.项目视图与posible一样平坦ConstraintLayout.但是下面的systrace报告有很多VerifyClass块,每个块需要17毫秒.

这是什么VerifyClass块呢?

在此输入图像描述

android layout-inflater systrace android-recyclerview

11
推荐指数
2
解决办法
712
查看次数

Android Systrace:意外错误(Conversion =';')

我一直在学习如何使用Systrace按照如何使用Systrace的说明(来自Android开发者网站).我尝试过使用GUI和终端(命令行).

使用GUI:

跟踪完成并保存后,我收到错误.我点击了" 详细信息 "按钮,总体而言,给出了以下消息:

无法收集系统跟踪

原因:收集系统跟踪时出现意外错误.

转换=';'

Systrace文件未保存.

使用命令行:

我已经尝试使用命令行以及使用GUI(虽然我是使用命令行的新手).
键入$ cd android-sdk/platform-tools/systrace$ python systrace.py进入命令行会返回错误:

'$'不被识别为内部或外部命令,可操作程序或批处理文件.

使用cd android-sdk/platform-tools/systrace(没有$字符)会出现此错误:

该系统找不到指定的路径.

并使用python systrace.py(再次,没有$这个时间)返回此错误:

'python'不被识别为内部或外部命令,可操作程序或批处理文件.

我错过了什么,还是需要重新配置的东西?

android systrace

10
推荐指数
1
解决办法
3893
查看次数

Android三重缓冲 - 预期的行为?

我正在调查我的应用程序的性能,因为我注意到它在滚动时丢弃了一些帧.我运行systrace(在运行4.3的Nexus 4上),并在输出中注意到一个有趣的部分.

一开始一切都很好.放大左侧部分,我们可以看到绘图从每个vsync开始,完成备用时间,并等到下一个vsync.由于它是三重缓冲的,因此应该将其绘制到一个缓冲区中,该缓冲区将在完成后发布在以下vsync上.

在放大屏幕截图中的第4个vsync上,应用程序执行了一些工作,并且绘制操作没有及时完成下一个vsync.但是,我们不会删除任何帧,因为之前的抽奖正在提前一帧.

在这种情况发生之后,绘制操作不能弥补错过的vsync.相反,每个vsync只启动一个绘制操作,现在它们不再向前绘制一个帧.

放大右侧部分,该应用程序会做更多工作并错过另一个vsync.由于我们没有向前绘制一个帧,所以实际上帧丢失了.在此之后,它会回到前方画一帧.

这是预期的行为吗?我的理解是,如果你错过了一个vsync,三重缓冲允许你恢复,但是这种行为看起来像每两个你错过的vsyncs一次丢帧.


跟进问题

  1. 此屏幕截图的右侧,应用程序实际上渲染缓冲区的速度比显示器消耗它们的速度快.在performTraversals#1(屏幕截图中标记)期间,假设正在显示缓冲区A并且正在渲染缓冲区B. #1在vsync之前完成,并将缓冲区B放入队列中.此时,应用程序是否应该能够立即开始渲染缓冲区C?相反,performTraversals#2直到下一个vsync才开始,浪费了宝贵的时间.

  2. 同样地,我对左侧对waitForever的需求感到有些困惑.假设正在显示缓冲区A,缓冲区B在队列中,并且正在渲染缓冲区C. 当缓冲区C完成渲染时,为什么不立即将它添加到队列中?相反,它会执行waitForever,直到从队列中删除缓冲区B,此时它会添加缓冲区C,这就是为什么无论应用程序渲染缓冲区有多快,队列似乎始终保持大小为1.

performance android systrace

9
推荐指数
1
解决办法
2774
查看次数

React Native profiling.Systrace没有显示JS和Native Modules Thread

我已经按照Android UI性能分析指南进行了操作

我运行以下cmd:/usr/local/Cellar/android-sdk/24.4.1_1/platform-tools/systrace/systrace.py --time = 10 -o trace.html shred gfx view -a com.navigation.

我能够获得跟踪输出.但是Js和Native Modules线程不像指南中所描述的那样可用.

以下是生成的跟踪示例. 在此输入图像描述

我已尝试使用dev = false运行跟踪,如指南中所述,并且dev = true,如本答案中所述但非工作正常

我目前正在使用0.28.0版.我之前没有尝试过使用systrace,所以不知道它是否有用.

任何想法为什么没有显示非常感谢.

android profiling systrace react-native

9
推荐指数
1
解决办法
1702
查看次数