我想在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
我怎样才能让它发挥作用?
答案 0 :(得分:1)
我尝试按照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
我正在使用CyanogenMod 10.1.3,它基于Android 4.2.2。