2

我想在 android 上使用 apitrace 项目。我按照自述文件中的说明进行操作

但是在创建的地方找不到任何痕迹。我运行这个命令

adb shell TRACE_FILE=/data/test.trace LD_PRELOAD=/data/egltrace.so am start -n APP_NAME

我怎样才能让它工作?

4

1 回答 1

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.tracemytrace.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。

于 2014-02-03T14:45:33.250 回答