Android 4.3 上的 Systrace(Systrace on Android 4.3)

问题 我正在尝试使用 JB 4.3 中引入的新 Trace API 通过 systrace 来衡量我的应用程序的性能属性。 这个想法类似于使用 traceview 方法分析,即您可以使用Trace.beginSection和Trace.endSection测量特定的代码段。 但是,当我通过 Android 工具中提供的 python 脚本运行 systrace 时,我没有看到与上述调用指定的部分相关的任何内容。 我错过了什么吗? 这是访问 systrace 输出的正确方法吗? 我在 Trace 调用的文档中看到它“将跟踪事件写入系统跟踪缓冲区”,但我不知道如何访问跟踪缓冲区。 任何帮助表示赞赏。 回答1 您必须为 systrace 命令提供一个附加参数: -app=pkgname (或-a pkgname )其中, pkgname是应用程序清单中的包名称。 它也是您在ps输出中看到的名称(这可能更相关,因为它是与之匹配的)。 这里有一个例子。

2021-07-13 04:05:39    分类:技术分享    android   systrace

Android DDMS v22.0.1 无法使用 Droid Razor 4.1.2 生成系统跟踪(Android DDMS v22.0.1 unable to generate a systrace using Droid Razor 4.1.2)

问题 我选择了几个跟踪标记,当我运行跟踪(从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) error openi (在此处切断错误) 内核目录中确实没有调试文件,但是哪种机制会生成必要的路径? 回答1 看起来您的手机正在运行不支持 systrace 的引导(内核)映像。 “错误打开 /sys/kernel/debug/tracing/options/overwrite: 没有那个文件或目录 (2)” 此错误消息意味着 adb 守护进程(在设备端运行的 adb 模块)无法在您设备的文件系统上找到 /sys/kernel/debug/tracing/options/overwrite。 systrace 在 adb 上工作,并通过 /sys/kernel/debug/tracing 下的 sysfs 节点与内核通信。 如果这些节点由于某种原因没有在您的手机上公开,systrace 将无法工作。 因此

2021-07-12 19:27:52    分类:技术分享    android   ddms   systrace

Android systrace 是否需要 root 访问权限?(Does Android systrace require root access?)

问题 我正在尝试在非 root 设备上运行 systrace。 如果选择了任何跟踪事件,它总是会给出以下错误: 无法找到跟踪开始标记 'TRACE:': error opening /sys/kernel/debug/tracing/events/cpufreq_interactive/enable: No such file or directory 如果没有选择跟踪事件,它可以工作,但跟踪不是很有用。 systrace 是否需要 root 访问权限? 请注意,我在 Windows-7 上直接从 Eclipse (DDMS) 运行 systrace。 回答1 根据systrace.py --help ,以下跟踪需要 root 访问: -d, --disk:跟踪磁盘 I/O (需要 root) -u, --bus-utilization:跟踪总线利用率(需要 root) -w, --workqueue:跟踪内核工作队列(需要root) 其他选项未指定需要 root 访问权限。 这就是说,我可以使用一些跟踪(例如--cpu-freq ),但不幸的是我对--cpu-load感兴趣,它给了我与您提到的完全相同的错误。

2021-07-11 06:44:17    分类:技术分享    android   systrace

Android 应用程序第一次启动很慢,systrace 显示 30 秒的 bindApplication(Android app first start is very slow and systrace shows 30 seconds of bindApplication)

问题 我目前正在开发一个 Android 应用程序并试图改善启动时间。 为此,我使用了 Systrace 工具。 我第一次运行应用程序时(安装后立即运行),大约需要 40 秒才能启动,我得到以下跟踪: 如您所见,有一个标题为bindApplication的 30 秒浅紫色标签。 在此之后,我关闭了应用程序(从最近的活动中滑动)并重新打开它。 这次bindApplication标签只有 4 秒长: 有人知道第一次运行需要这么长时间是否正常? 我能做些什么来改善它? 我的猜测是bindApplication以某种方式与onCreate App 方法中的繁重工作有关,但我不知道这是怎么发生的。 以防万一:在我的onCreate我初始化了以下库:Parse、Crashlytics、Timber、ParseFacebookUtils 和 Google Analytics。 编辑: 这是 App 子类代码: public class MyApp extends Application { private Tracker tracker; @Override public void onCreate() { super.onCreate(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { Trace

2021-06-24 18:05:28    分类:技术分享    android   performance   systrace

Systrace on Android 4.3

I'm trying to measure performance attributes of my app through systrace by using the new Trace API introduced in JB 4.3. The idea is similar to the use of traceview method profiling, i.e. you can measure a specific code section using Trace.beginSection and Trace.endSection. However, when I run systrace through the python script provided in Android tools, I don't see anything relating to the sections specified by the above calls. Am I missing something? Is this the correct way of accessing the systrace output? I see in the documentation for the Trace calls that it "Writes trace events to the

2021-06-23 18:00:18    分类:问答    android   systrace

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

2021-06-21 15:38:12    分类:问答    android   html   google-chrome   android-studio   systrace

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?

2021-06-15 16:20:26    分类:问答    android   systrace

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?

2021-06-13 04:45:18    分类:问答    android   ddms   systrace

LD_PRELOAD can not intercept syscalls, but only libcalls?

My code works well with malloc, but not with mmap. The code is below: main.c #include <stdio.h> #include <stdlib.h> int main(){ int * p = (int*) malloc(sizeof(int)); printf("in main(): value p = %d\n", *p); free(p); } preload.c #define _GNU_SOURCE #include <time.h> #include <dlfcn.h> #include <stdio.h> #include <sys/types.h> void *(*orig_malloc)(size_t size); void *malloc(size_t size){ printf(" Hooked(preload)! malloc:size:%lu\n", size); return orig_malloc(size); } void * (*orig_mmap)(void *start, size_t length, int prot, int flags, int fd, off_t offset); void * mmap(void *start, size_t length

2021-06-10 18:37:49    分类:问答    c   system-calls   ld-preload   systrace

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.

2021-06-10 07:01:49    分类:问答    android   systrace