天道酬勤,学无止境

Systrace Output Error

I ran systrace on my android studio project in order to find some performance bugs but after the end of the tracing process, i get the following error and if i open the trace.html output file in chrome, the trace view is empty:

Starting tracing (10 seconds)
Tracing completed. Collecting output...
Exception in thread Thread-13:
Traceback (most recent call last):
  File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner
    self.run()
  File "C:\Python27\lib\threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "C:\Users\Steli\AppData\Local\Android\sdk\platform-tools\systrace\catapult\systrace\systrace\tracing_agents\atrace_agent.py", line 194, in _collect_and_preprocess
    self._trace_data = self._preprocess_trace_data(trace_data)
  File "C:\Users\Steli\AppData\Local\Android\sdk\platform-tools\systrace\catapult\systrace\systrace\tracing_agents\atrace_agent.py", line 272, in _preprocess_trace_data
    trace_data = strip_and_decompress_trace(trace_data)
  File "C:\Users\Steli\AppData\Local\Android\sdk\platform-tools\systrace\catapult\systrace\systrace\tracing_agents\atrace_agent.py", line 332, in strip_and_decompress_trace
    trace_data = zlib.decompress(trace_data)
error: Error -5 while decompressing data: incomplete or truncated stream

Outputting Systrace results...
Tracing complete, writing results
Traceback (most recent call last):
  File "systrace.py", line 49, in <module>
    sys.exit(run_systrace.main())
  File "C:\Users\Steli\AppData\Local\Android\sdk\platform-tools\systrace\catapult\systrace\systrace\run_systrace.py", line 196, in main
    main_impl(sys.argv)
  File "C:\Users\Steli\AppData\Local\Android\sdk\platform-tools\systrace\catapult\systrace\systrace\run_systrace.py", line 193, in main_impl
    controller.OutputSystraceResults(write_json=options.write_json)
  File "C:\Users\Steli\AppData\Local\Android\sdk\platform-tools\systrace\catapult\systrace\systrace\systrace_runner.py", line 68, in OutputSystraceResults
    self._out_filename)
  File "C:\Users\Steli\AppData\Local\Android\sdk\platform-tools\systrace\catapult\systrace\systrace\output_generator.py", line 98, in GenerateHTMLOutput
    html_file.write(_ConvertToHtmlString(result.raw_data))
  File "C:\Users\Steli\AppData\Local\Android\sdk\platform-tools\systrace\catapult\systrace\systrace\output_generator.py", line 120, in _ConvertToHtmlString
    raise ValueError('Invalid trace result format for HTML output')
ValueError: Invalid trace result format for HTML output

Anyone have a solution for this or any advice?

评论

Systrace.py has a --no-compress option. Using it should allow the trace to complete without hitting the failing decompression step.

The same problem was occurring on my Windows 10 system and this solved it for me.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在Windows 7上使用Jelly Bean 4.1模拟器在ADB中运行systrace工具时出错(Error running systrace tool in ADB using a Jelly Bean 4.1 emulator on Windows 7)
    问题 如何运行systrace以显示其html输出? 看完Google I / O 2012演讲“无论是黄油还是糟”,我都无法使用运行Jelly Bean 4.1的模拟器使systrace在Windows 7上正常工作。 我做了以下事情: 安装了Python 2.7,并将安装文件夹添加到了我的PATH中运行以下命令: 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') 笔记:
  • Error running systrace tool in ADB using a Jelly Bean 4.1 emulator on Windows 7
    How can I run systrace to show its html output? After watching the Google I/O 2012 talk "For Butter or Worse" I am having trouble getting systrace to work on Windows 7 using the emulator running Jelly Bean 4.1. I did the following: Installed Python 2.7, and added the install folder to my PATH Ran the following: C:\android-sdk\platform-tools\systrace>python systrace.py (with older SDKs: C:\android-sdk\tools\systrace>python systrace.py) But I get the following error in cmd: Traceback (most recent call last): File "systrace.py", line 212, in <module> main() File "systrace.py", line 124, in main
  • 在 Jelly Bean 中使用 systrace 失败(Failed to use systrace in Jelly Bean)
    问题 我尝试使用 jelly bean release 中的新 systrace,但没有成功。 我在 I/O 会话等开发设置中启用了图形和视图跟踪,并尝试调用 systrace,我得到的只是这个。 $ ./systrace.py error opening /sys/kernel/debug/tracing/options/overwrite: No such file or directory (2) error opening /sys/kernel/debug/tracing/events/sched/sched_switch/enable: No such file or directory (2) error opening /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable: No such file or directory (2) error opening /sys/kernel/debug/tracing/events/power/cpu_frequency/enable: No such file or directory (2) error opening /sys/kernel/debug/tracing/events/power/cpu_idle/enable: No such file
  • Failed to use systrace in Jelly Bean
    I've tried to use new systrace from jelly bean release, but with no luck. I enabled graphics and views traces in development settings like on I/O session, and tried to call systrace, and all i get is this. $ ./systrace.py error opening /sys/kernel/debug/tracing/options/overwrite: No such file or directory (2) error opening /sys/kernel/debug/tracing/events/sched/sched_switch/enable: No such file or directory (2) error opening /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable: No such file or directory (2) error opening /sys/kernel/debug/tracing/events/power/cpu_frequency/enable: No
  • 无法查看由Android SDK中的Systrace工具生成的HTML跟踪报告(Unable to view HTML trace report generated by Systrace tool in Android SDK)
    问题 我正在尝试使用Android SDK中的Systrace工具生成跟踪报告,但无法在浏览器中查看报告。 它为空白,不包含任何信息。 我在一些论坛上读到需要在Chrome浏览器中打开报告,我也使用Chrome打开了报告,但报告为空白。 我已经从开发人员选项中启用了USB调试,并且设备正在运行Android 4.2,并且我正在使用Android SDK中的DDMS工具生成跟踪。 http://developer.android.com/tools/help/systrace.html 回答1 首先,如果有人在OS X或Windows上使用Chrome v50.0 +,请尝试此操作。 打开chrome浏览器,然后转到“ chrome:// tracing” 在“跟踪”页面中,单击“加载”,然后选择systrace生成的html文件。 其次,我认为这是Google确认的错误。 看起来这是因为现代版本的Chrome已弃用Object.observe函数[1] [2]。 有关更多信息,请参见https://code.google.com/p/android/issues/detail?id=57135 回答2 我也有在Linux上运行chrome的问题。 看来他们在执行javascript绘制结果的过程中存在错误。 检查JavaScript控制台。 我的说。 未捕获的TypeError
  • Android DDMS v22.0.1 unable to generate a systrace using Droid Razor 4.1.2
    I've selected several of the trace tags and when I run the trace (from DDMS) I get the following output: 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) error openi(cuts off the error here) indeed there is no debug file in the kernel directory, but which mechanism will generate the necessary path?
  • (一百八十三)学习TraceView
    参考: Android 性能优化:使用 TraceView 找到卡顿的元凶 Android性能优化(一)之启动加速35% PS:启动加速总结一下就是能懒加载的懒加载,不能懒加载的看能不能放异步,异步线程合理分配优先级。 1. 使用 Android Studio 生成 trace 文件 Android Monitor已经过时了,现在用的profile 之前有学习过,但好久不用忘了。。。 https://blog.csdn.net/sinat_20059415/article/details/80584621 突然发现之前参考的文档其实就是搬运的开发文档,也是,自己摸索哪有这么全 https://developer.android.google.cn/studio/profile/cpu-profiler 2.使用 DDMS 生成 trace 文件 jiatai@jiatai:~/Android/Sdk/tools$ sudo ./monitor OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0 Error Loading DDMS Preferences ddms已经过时了 3.Systrace 如果要收集详细的系统级数据
  • 在设备上运行Android systrace(Running Android systrace on device)
    问题 我无法运行名为systrace.pl的Android SDK工具,因为出现以下错误: error opening /sys/kernel/debug/tracing/options/overwrite: No such file or directory 实际上,/ sys / kernel / debug / tracing目录甚至根本不存在。 一些研究表明,我需要使用以下命令启用debugfs: mount -o rw,remount -t debugfs none /sys/kernel/debug 之后在那儿运行mount表示debugfs正在运行: #mount ... /sys/kernel/debug /sys/kernel/debug debugfs rw,relatime 0 0 ... 我在开发人员设置菜单中启用了跟踪(所有项目)。 我在三星Galaxy S3上使用了ROM 4.1.1。 Android上的systrace上有很多文章,但似乎没有什么方法可以解决在/ sys / kernel / debug / tracing中实际上没有生成文件的问题。 回答1 看一下这个文件: 在Android 4.3及更高版本上进行跟踪要在Android 4.3和更高版本的设备上运行跟踪,请执行以下操作: Make sure the device is
  • Android Systrace 跟踪文件格式(Android Systrace Trace File Format)
    问题 Android systrace工具,通过 ADB 调用atrace工具。 但是,我不太了解跟踪文件的格式。 显然它与 linux ftrace工具非常相似,但有一些不同。 主要区别在于它不使用System.Map文件,但它将所有信息都包含在跟踪文件中。 此外,还有新的 B|E 条目是 android 特定的。 在 Android 源代码中有一些关于这种格式的信息:http://androidxref.com/4.1.1/xref/external/chromium-trace/src/tracing/linux_perf_importer.js 但是,在该文档中,我们可以看到该格式属于 Linux Perf Tool。 我不这么认为,linux perf 作为输出提供了一种非常不同的格式......(除非一些特殊的配置处于活动状态......) 我的问题是:有谁知道我在哪里可以找到有关使用 adb 的atrace工具生成的 android 跟踪文件的官方文档? 您熟悉这种格式吗? # tracer: nop # # entries-in-buffer/entries-written: 66427/66427 #P:2 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # |
  • Does Android systrace require root access?
    I am trying to run systrace on a non-rooted device. It always gives the following error if any of the trace events is selected: Unable to find trace start marker 'TRACE:': error opening /sys/kernel/debug/tracing/events/cpufreq_interactive/enable: No such file or directory If no trace event is selected, it works, but the trace is not very usweful. Does systrace requires root access? Note that I am running systrace directly from Eclipse (DDMS) on Windows-7.
  • Android Camera简单整理(四)-Android Camera性能Debug经验
    针对手机厂商相机性能优化部分进行重点总结记录 Android Camera性能Debug经验 一.相机性能场景二.相机性能debug工具及方案建议1.dumpsys media.camera1.1 qcom机器1.2 mtk机器 2.systrace3.perfetto4.SimplePerf,火焰图5.Android sudio profile6.Qcom Perfdump工具7.Cpu dump工具8. CpuFloat & PerfMon+ Apk9.查看视频文件丢帧情况工具10.perflock 及 thermal Debug11.内存监控11.1 procrank11.2 top11.3 ION内存信息11.4 Gpu内存信息 12.GAPID 三.基础知识补充 一.相机性能场景 类别场 景耗时重点建议启动类热启动App代码优化精简显示,内存预分配,cpu perflock boost冷启动本质上做成热启动,一般都让相机在后台被杀后过几分钟自动重启,由于是系统平台应用,做到这点不是很难切换类模式切换要经过开关Camera过程cpu perflock boost,减少无用初始化,耗时久的可考虑并行化初始化前后置切换要经过开关Camera过程同一型号手机可能摄像头马达不一样,滚珠式或弹簧式,在弹簧式马达下电关闭相机时如果一下子收回会有摄像头撞击的声音,因此一般让其分步下电
  • Unable to systrace on HTC One M8 Lollipop
    I am trying to use systrace from Android Studio with the default systrace options set. I have not rooted the phone. HTC Sense v6.0, Android 5.0.1, HTC SDK API level 6.55. When I do so, I get the dreaded "Unable to collect system trace. Reason: unexpected error while collecting system trace". Using ADB shell, I have determined that /sys/kernel/debug exists, but /sys/kernel/debug/tracing does not. Anyone else has better luck with systrace and HTC One M8 / Lollipop?
  • 【安卓开发系列 -- APP】APP 性能优化 -- 启动优化
    【安卓开发系列 -- APP】APP 性能优化 -- 启动优化 【1】APP 启动优化的必要性 原因 : 用户希望应用能够及时响应并快速加载,启动时间长的 APP 不能满足该期望; 启动太慢的结果 : 体验效果差,用户流失,产品失败; 【2】启动流程以及分类 【2.1】开机启动流程 注意,该流程图所示的启动过程为系统创建并启动应用的过程,一般不需要优化; 【2.2】冷启动 冷启动指应用从头开始启动,系统进程在冷启动后才创建应用进程,发生冷启动的情况包括应用自设备启动后或系统终止应用后首次启动; 冷启动特点 : 耗时最多,衡量 APP 启动时间的标准 冷启动流程 : 加载并启动 APP -> 启动后立即为该 APP 显示一个空白启动窗口 -> 创建 APP 进程(创建应用程序对象) -> 创建主线程,创建主 Activity -> 加载布局并绘制 click event -> IPC -> Process.start -> ActivityThread -> bindApplication -> LifeCycle -> ViewRootImpl 【2.3】热启动 热启动中系统所有的工作便是将 Activity 带到前台,若应用中所有的 Activity 仍驻留在内存中, 则应用可以无须重复对象初始化、布局扩充和呈现; 热启动速度 : 最快 【2.4】温启动
  • 都9102年了,Android 冷启动优化还是只会老三样吗
    性能优化一直都是一个 Android 开发者逃不过的话题,启动优化则更是重中之重。启动速度可以直接影响一个 App 的留存率和转化率,没有人会希望自己点击之后还要等一会才打开。 但是当我一番调研后发现,网上大部分启动优化相关的文章,套路都差不多,我称之为老三样。 什么是老三样? 将启动页主题背景设置成闪屏页图片 这么做的目的主要是为了消除启动时的黑白屏,给用户一种秒响应的感觉,但是并不会真正减少用户启动时间,仅属于视觉优化。 主页面布局优化 1)通过减少冗余或者嵌套布局来降低视图层次结构 2)用 ViewStub 替代在启动过程中不需要显示的 UI 控件 Application 和 主 Activity 的 onCreate 中异步初始化某些代码 因为在主线程上进行资源初始化会降低启动速度,所以可以将不必要的资源初始化延迟,达到优化的效果。但是这里要注意懒加载集中化的问题,别用户启动时间快了,但是无法在界面上操作就尴尬了。 老三样并不说是不管用或者过时了,只是这三种优化方式都是非常基础的方式,当你的启动优化遇到了瓶颈,是不能够再通过这三种方式突破的。 而且只会基础的优化方式,并不会在履历中展现出优势。 所以今天说说在老三样的基础优化之上还有哪些可行的方案。 进阶方案一 通过 systrace 查找耗时代码 具体步骤 1)清空手机后台 2)在命令行执行 python $ANDROID
  • Running Android systrace on device
    I'm unable to run the Android SDK tool called systrace.pl because I get errors like: error opening /sys/kernel/debug/tracing/options/overwrite: No such file or directory And indeed the /sys/kernel/debug/tracing directory doesn't even exist. A little research showed I need to enable debugfs with the following command: mount -o rw,remount -t debugfs none /sys/kernel/debug Running mount there afterwards indicates the debugfs is running: #mount ... /sys/kernel/debug /sys/kernel/debug debugfs rw,relatime 0 0 ... And I have trace enabled (all items) in the developer settings menu. I'm using the
  • App性能优化:启动优化篇
    App性能优化:启动优化篇 本篇主要探讨App启动优化相关内容 1、启动分类 冷启动热启动温启动 冷启动 1.冷启动流程图 热启动 最快:后台切换到前台 温启动 较快:重新执行Activity的生命周期,不会重新创建Application 冷启动相关任务 冷启动之前: 启动App加载空白Window创建进程 随后任务: 创建Application启动主线程创建MainActivity加载布局布置屏幕首帧绘制 优化方向: 在Application和Activity生命周期阶段,是我们能比较好干预的阶段,也是优化的重点阶段 2、启动时间的测量 Adb命令的方式 Adb shell am start -W packagename/packagename.首屏Activity 效果图如下: thisTime:最后一个Activity启动耗时 totalTime:所有Activity启动耗时 waitTime:AMS启动Activity的总耗时 手动打点 误区:OnWindowFocusChanged只是首帧时间 正解:真实数据展示的时间,列表第一条数据展示出来: btn_start.viewTreeObserver.addOnDrawListener(object:ViewTreeObserver.OnDrawListener{ override fun onDraw() { val
  • Android Systrace Trace File Format
    Android systrace tool, calls atrace tool via ADB. However, I don't understand very well the format of the traces file. Apparently it is very similar to linux ftrace tool with some differences. The main difference is that is doesn't uses a System.Map file but it includes all that information into the trace file. Also, there are new B|E entries that are android specific. There is some information about this format in Android Source Code at: http://androidxref.com/4.1.1/xref/external/chromium-trace/src/tracing/linux_perf_importer.js However, in that documentation we can read that the format
  • Windows的Systrace(Systrace for Windows)
    问题 我正在寻找等效于Windows的Systrace或至少是strace。 我知道StraceNT,但想知道是否还有其他选择。 具体来说,我正在寻找一种以编程方式实施系统调用策略的特定方法,尽管这可以在事后采取,而不是主动停止实施。 目前有什么好方法吗? 回答1 WinDbg的Logger.exe最接近strace:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/logger-and-logviewer 编辑:还有windbg的wt:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/wt--trace-and-watch-data- 回答2 一些选择: 过程监控器 另外,请参阅有关Windows 7内置工具的本文: 核心操作系统工具 回答3 内存博士(http://drmemory.org)工具附带一个名为drstrace的系统调用跟踪工具,该工具列出了目标应用程序进行的所有系统调用及其参数:http://drmemory.org/strace_for_windows.html 要以编程方式实施系统调用策略,可以使用与drstrace相同的基础引擎:DynamoRIO工具平台(http://dynamorio
  • 你想要的Android性能优化系列:启动优化 !
    文章目录 一、概述二、应用启动流程介绍三、优化核心思想四、时间检测4.1 Displayed4.2 adb shell4.3 reportFullyDrawn()4.4 代码打点4.5 AOP(Aspect Oriented Programming) 打点 五、分析工具介绍5.1 Traceview5.2 Systrace 六、启动优化方案6.1 视觉优化6.2 异步初始化6.3 延迟初始化6.4 Multidex预加载优化6.5 页面数据预加载6.6 页面绘制优化 七、总结 一、概述 手机桌面点击一个应用,用户希望应用能 及时响应、快速加载。启动时间过长的应用可能会令用户失望。这种糟糕的体验可能会导致用户在 Play 商店针对您的应用给出很低的评分,甚至完全弃用您的应用。 本篇就来讲解如何分析和优化应用的启动时间。首先介绍启动过程机制,然后讨论如何检测启动时间以及分析工具,最后给出通用启动优化方案。 二、应用启动流程介绍 根据官方文档,应用有三种启动状态:冷启动、温启动、热启动。 冷启动 冷启动是指应用从头开始启动:系统进程在冷启动后才创建应用进程。发生冷启动的情况包括应用自设备启动后或系统终止应用后首次启动。例如,通过任务列表手动杀掉应用进程后,又重新启动应用。 热启动 热启动比冷启动简单得多,开销也更低。在热启动中,系统的所有工作就是将您的 Activity 带到前台
  • Android卡顿检测及优化
    前言 之前在项目中做过一些Android卡顿以及性能优化的工作,但是一直没时间总结,趁着这段时间把这部分总结一下。 卡顿 在应用开发中如果留意到log的话有时候可能会发下下面的log信息: I/Choreographer(1200): Skipped 60 frames! The application may be doing too much work on its main thread. 在大部分Android平台的设备上,Android系统是16ms刷新一次,也就是一秒钟60帧。要达到这种刷新速度就要求在ui线程中处理的任务时间必须要小于16ms,如果ui线程中处理时间长,就会导致跳过帧的渲染,也就是导致界面看起来不流畅,卡顿。如果用户点击事件5s中没反应就会导致ANR。 帧率 即 Frame Rate,单位 fps,是指 gpu 生成帧的速率,60fps,Android中更帧率相关的类是SurfaceFlinger。 SurfaceFlinger surfaceflinger作用是接受多个来源的图形显示数据,将他们合成,然后发送到显示设备。比如打开应用,常见的有三层显示,顶部的statusbar底部或者侧面的导航栏以及应用的界面,每个层是单独更新和渲染,这些界面都是有surfaceflinger合成一个刷新到硬件显示。 在显示过程中使用到了bufferqueue