我想在android上使用apitrace项目。我遵循了the instructions from the readme file。
但是在创建位置没有任何痕迹。
我运行此命令
adb shell TRACE_FILE=/data/test.trace LD_PRELOAD=/data/egltrace.so am start -n APP_NAME
我该如何运作?
最佳答案
我尝试按照apitrace原始发行版的Dalvik.markdown中的说明进行操作,但是没有成功。
指令说要设置两个属性:wrap._process_name_
和debug.apitrace.procname
。根据这些说明,前者必须设置为LD_PRELOAD=/data/egltrace.so
。启动应用程序时,在logcat中仍然不会生成任何跟踪或任何与apitrace相关的消息。
通过将LD_PRELOAD
指令放入脚本并将其用作包装程序,我获得了更大的成功。这是我使用的脚本,称为/data/apitrace.sh:
LD_PRELOAD=/data/egltrace.so exec $@
您还可以设置
TRACE_FILE
环境变量,以指定应将跟踪文件写入的路径。否则它将是_ / data / app_process.trace_。例如:TRACE_FILE=/data/apitraces/mytrace.trace LD_PRELOAD=/data/egltrace.so exec $@
我相信apitrace会在文件名中添加数字,以防止覆盖现有的数字。因此,您将拥有mytrace.trace,mytrace.1.trace等。
因此,使用此脚本后,我将属性设置如下:
adb shell setprop wrap._process_name_ /data/apitrace.sh
adb shell setprop debug.apitrace.procname _process_name_
然后,我启动该应用程序。我在logcat中看到以下内容:
I/dalvikvm( 5980): Exec: /system/bin/sh -c /data/apitrace.sh /system/bin/app_process /system/bin --application '--nice-name=_process_name_' com.android.internal.os.WrapperInit 25 17 'android.app.ActivityThread'
D/apitrace( 5991): apitrace: loaded
D/apitrace( 5991): apitrace[5991]: enabled for _process_name_
D/apitrace( 5991): apitrace: tracing to /data/app_process.trace
我正在使用基于Android 4.2.2的CyanogenMod 10.1.3。