问题标签 [systrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在 Android 的 systrace/atrace 中使用 async_start 和 async_stop
我想在进行自动化测试时在我的 Android 手机上捕获 Systrace 报告。不知道测试需要多长时间,所以我无法为 Systrace 指定--time时间段。
深入研究systrace.py,我发现systrace正在使用atrace来获取内核日志。
我使用adb shell atrace --help
并得到以下输出:
如何使用atrace在我的自动化测试开始时开始跟踪,并在我的自动化测试结束时停止跟踪和转储内核日志?
我尝试使用以下命令,但我认为它不能正常工作。只有 async_dump 在日志中给了我一些数据。async_stop 转储在日志中没有任何内容。如何正确启动跟踪,转储它,然后停止它?
android - 如何防止在 Systrace 或 atrace 内核日志输出中修剪任务/进程名称?
如何确保 Systrace/atrace 的内核日志输出中的任务名称/进程名称不会被修剪或切断?我想查看任务/流程名称的全名,而不会缩短它。
以下是未修剪任务名称/进程名称的 Systrace 输出示例:
下面是 Systrace/atrace 输出,其中任务名称/进程名称被修剪:
我已经在多台计算机上使用 Systrace/atrace 进行了测试:Windows 和 Linux。除了最新更新的 Ubuntu Linux 计算机外,所有其他计算机都会提供 Systrace 输出,其中任务/进程名称会被修剪。但是,所有的计算机都会给我一个带有修剪过的任务/进程名称的跟踪报告。
如何确保任务/流程名称不会被修剪?
背景
我正在使用两种方法在 Android 5.1 手机上提取内核日志:Systrace 和 atrace。我使用 atrace 是因为我理解 Systrace 只是 atrace 的 python 前端。我使用 atrace 的另一个原因是因为我试图让异步跟踪开始和停止跟踪工作。
使用 Systrace 时的命令:
使用atrace时的命令:
android - 棒棒糖在 Galaxy S4 上的 CPU 使用率不一致
我正在为 Android 开发一款游戏,主要在三星 Galaxy S4 上进行测试。
但是,我发现自从我在上面安装了 Lollipop (5.0.1) 之后,我的游戏现在偶尔会冻结大约。每隔 200 毫秒,导致它下降大约 10 帧。
该游戏还在运行 Lollipop 的多个其他(非 S4)设备上进行了测试,但它没有这样做。
通过 Android Studio 中的 CPU 使用监视器,我的情况与更常见(向上)的 CPU 使用峰值完全相反。我发现 CPU 使用率正在下降而不是上升。
这是 Lollipop/Galaxy S4 的常见问题吗?
有没有人对我可以做些什么来找出造成这种情况的原因有什么建议?
android - 从 systrace html 文件分析时间
下面是 systrace 生成的 html 文件的一部分。在这里,我想要 Listview 的开始时间和结束时间,或者进程的 ListView 的直接加载时间。我可以看到我在浏览器中打开 html 文件的时间,但是如何自动从其文本文件中读取它?
与 Listview 相关的 html 文件的一部分:
android - How to trigger latest Android Systrace command's markers for jank and frames?
The latest Android Systrace pages - http://developer.android.com/tools/debugging/systrace.html#options-4.3 - show 'Alerts' and 'Frames' trace lines, with circles where bad things happen.
I haven't been able to create a trace.html file with those marks, despite seeing plenty of jank.
Does anyone know what command Google might have used to create the page they screenshotted? They don't provide it, sadly.
android - 如何在 Systrace 上添加一些私有跟踪元素?
在通过 systrace 收集跟踪日志后,我正在尝试添加一些私有跟踪元素来分析它们。为了解决这个问题,我在 Android 4.3 上阅读了有关 Systrace 的信息,但这只是使用 java 的 App 层的解决方案,对吧?是否可以在内核级别添加更多跟踪元素?
同样的问题是https://stackoverflow.com/questions/28080582/android-systrace-add-custom-kernel-traces ..
有人帮我解决它...
c - LD_PRELOAD 不能拦截系统调用,只能拦截 libcalls?
我的代码适用于malloc
,但不适用于mmap
. 代码如下:
主程序
预加载.c
编译它
运行它LD_PRELOAD
用 strace 运行它
来自的打印输出LD_PRELOAD
不会挂钩对 的调用mmap
,而只会调用对 的调用malloc
。同时,当运行时strace
,打印输出确实显示mmap
被多次调用。
这个结果让我感到困惑;假设mmap
确实是由main.c
(我猜是通过malloc
)调用的,怎么preload.c
不能拦截mmap
?
PS:我的平台是 Ubuntu 14.04,Linux 内核 3.13
PS2:通过系统调用,我的意思是 libc 中的系统调用包装器(虽然不确定这是否会对问题产生影响)..
linux - 在 Linux 中挂钩所有系统调用
目标是为 Linux 中的所有系统调用添加一个挂钩,也就是说,应该在调用这 300 个 Linux 系统调用中的任何一个之前调用挂钩函数。
有一些sys_call_table
技巧(例如 [这里]),但是只允许挂钩一个或几个系统调用;即如果read()
需要劫持,则将sys_read
入口sys_call_table
修改为具有钩子处理程序的新函数。
当然,您可以手动挂钩所有 300 个系统调用条目;但我正在寻找一种更优雅的方法,几乎不需要修改代码。
entry_64.S
一种可能的方法是更改ENTRY(system_call)
驻留的文件。但是,由于我需要使用 linux 内核模块并破解一个实时系统,我发现entry_64.S
在正在运行的 Linux 系统中修改内存映像很困难。
所以我的问题是:
- 如果
entry_64.S
设计有意义,如何修改内核代码所在的实时内存区域(内核代码段)? - 如果没有意义,一般来说,如何修改 Linux src 代码中的一个(或几个)位置并允许所有 sys 调用被挂钩。
PS:平台:Linux 3.16 和 x86_64
PS2:我的问题再次与sys_call_table
之前堆栈溢出问题中的那些黑客攻击不同。详见第 2 段。
android - systrace 中的 GLthread 和 RenderThread
当我看到画廊应用程序的systrace时,我看到画廊进程中有两个线程 - GLthread和RenderThread。这两者有何不同?
android - Systrace 错误 - 分析切片表未显示在 HTML 页面上
我在 Linux 中运行了 Systrace 并生成了一个 HTML。HTML 文件的内容很好地生成了。我的问题来了:当我在页面末尾的 HTML 中选择了一部分内容时,应该有一个需要显示的分析切片表。但它没有显示。
我在 Chrome 和 Chromium 中都试过,但它在任何地方都可以工作。
谁能建议可能是什么问题?