我想在 android 上使用 apitrace 项目。我按照自述文件中的说明进行操作。
但是在创建的地方找不到任何痕迹。我运行这个命令
adb shell TRACE_FILE=/data/test.trace LD_PRELOAD=/data/egltrace.so am start -n APP_NAME
我怎样才能让它工作?
我想在 android 上使用 apitrace 项目。我按照自述文件中的说明进行操作。
但是在创建的地方找不到任何痕迹。我运行这个命令
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。