Инструмент Android systrace вызывает инструмент atrace через ADB. Однако я не очень хорошо понимаю формат файла трассировки. По-видимому, он очень похож на инструмент ftrace для Linux с некоторыми отличиями. Основное отличие состоит в том, что он не использует файл System.Map, а включает всю эту информацию в файл трассировки. Кроме того, есть новые записи B|E, специфичные для Android.
Некоторая информация об этом формате содержится в исходном коде Android по адресу: http://androidxref.com/4.1.1/xref/external/chromium-trace/src/tracing/linux_perf_importer.js
Однако в этой документации мы можем прочитать, что формат принадлежит Linux Perf Tool. Я так не думаю, linux perf дает на выходе совсем другой формат... (если не активна какая-то специальная конфигурация...)
Мой вопрос: кто-нибудь знает, где я могу найти официальную документацию о файлах трассировки Android, созданных с помощью инструмента atrace из adb?
Знаком ли вам этот формат?
# tracer: nop
#
# entries-in-buffer/entries-written: 66427/66427 #P:2
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
atrace-1724 [000] d..3 14186.680000: sched_switch: prev_comm=atrace prev_pid=1724 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120
<idle>-0 [000] d.h7 14186.690000: sched_wakeup: comm=tfm_b6bcf800 pid=1714 prio=35 success=1 target_cpu=000
<idle>-0 [000] d..3 14186.690000: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=tfm_b6bcf800 next_pid=1714 next_prio=35
tfm_b6bcf800-1714 [000] d..3 14186.690000: sched_switch: prev_comm=tfm_b6bcf800 prev_pid=1714 prev_prio=35 prev_state=D|W ==> next_comm=swapper/0 next_pid=0 next_prio=120
<idle>-0 [001] d.h3 14186.690000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001
<idle>-0 [001] d..3 14186.690000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35
Player Aud Mixe-146 [001] d..3 14186.690000: sched_switch: prev_comm=Player Aud Mixe prev_pid=146 prev_prio=35 prev_state=D ==> next_comm=swapper/1 next_pid=0 next_prio=120
<idle>-0 [001] d.h3 14186.690000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001
<idle>-0 [001] d..3 14186.690000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35
Player Aud Mixe-146 [001] d..3 14186.690000: sched_switch: prev_comm=Player Aud Mixe prev_pid=146 prev_prio=35 prev_state=S ==> next_comm=swapper/1 next_pid=0 next_prio=120
<idle>-0 [001] d.h3 14186.700000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001
<idle>-0 [001] d..3 14186.700000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35
EventThread-110 [001] d..5 14190.100000: sched_wakeup: comm=SurfaceFlinger pid=103 prio=112 success=1 target_cpu=001
EventThread-110 [001] d..3 14190.100000: sched_switch: prev_comm=EventThread prev_pid=110 prev_prio=111 prev_state=S ==> next_comm=SurfaceFlinger next_pid=103 next_prio=112
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|onMessageReceived
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|handleTransaction
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|doTransaction
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|handleMessageInvalidate
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|onMessageReceived
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|handleMessageRefresh
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|rebuildLayerStacks
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|computeVisibleRegions
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E
SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|doComposition
SurfaceFlinger-103 [001] d.h4 14190.100000: sched_wakeup: comm=surfaceflinger pid=96 prio=120 success=1 target_cpu=001
SurfaceFlinger-103 [001] d..3 14190.100000: sched_switch: prev_comm=SurfaceFlinger prev_pid=103 prev_prio=112 prev_state=R ==> next_comm=surfaceflinger next_pid=96 next_prio=120
Заранее спасибо !