|
|
## Syscalls
|
|
|
The enter and exit of all syscalls can be tracked in Perfetto traces.
|
|
|
|
|
|
|
|
|
The following ftrace events need to added to the trace config to collect syscalls.
|
|
|
|
|
|
```protobuf
|
|
|
data_sources: {
|
|
|
config {
|
|
|
name: "linux.ftrace"
|
|
|
ftrace_config {
|
|
|
ftrace_events: "raw_syscalls/sys_enter"
|
|
|
ftrace_events: "raw_syscalls/sys_exit"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## Linux kernel tracing
|
|
|
Perfetto integrates with [Linux kernel event tracing](https://www.kernel.org/doc/Documentation/trace/ftrace.txt).
|
|
|
While Perfetto has special support for some events (for example see [CPU Scheduling](#cpu-scheduling)) Perfetto can collect arbitrary events.
|
|
|
This config collects four Linux kernel events:
|
|
|
|
|
|
```protobuf
|
|
|
data_sources {
|
|
|
config {
|
|
|
name: "linux.ftrace"
|
|
|
ftrace_config {
|
|
|
ftrace_events: "ftrace/print"
|
|
|
ftrace_events: "sched/sched_switch"
|
|
|
ftrace_events: "task/task_newtask"
|
|
|
ftrace_events: "task/task_rename"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
The full configuration options for ftrace can be seen in [ftrace_config.proto](/protos/perfetto/config/ftrace/ftrace_config.proto).
|
|
|
|
|
|
## Android system logs
|
|
|
|
|
|
### Android logcat
|
|
|
Include Android Logcat messages in the trace and view them in conjunction with other trace data.
|
|
|
|
|
|

|
|
|
|
|
|
You can configure which log buffers are included in the trace. If no buffers are specified, all will be included.
|
|
|
|
|
|
```protobuf
|
|
|
data_sources: {
|
|
|
config {
|
|
|
name: "android.log"
|
|
|
android_log_config {
|
|
|
log_ids: LID_DEFAULT
|
|
|
log_ids: LID_SYSTEM
|
|
|
log_ids: LID_CRASH
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
You may also want to add filtering on a tags using the `filter_tags` parameter or set a min priority to be included in the trace using `min_prio`.
|
|
|
For details about configuration options, see [android\_log\_config.proto](/protos/perfetto/config/android/android_log_config.proto).
|
|
|
|
|
|
The logs can be investigated along with other information in the trace using the [Perfetto UI](https://ui.perfetto.dev) as shown in the screenshot above.
|
|
|
|
|
|
If using the `trace_processor`, these logs will be in the [android\_logs](/docs/analysis/sql-tables.autogen#android_logs) table. To look at the logs with the tag ‘perfetto’ you would use the following query:
|
|
|
|
|
|
```sql
|
|
|
select * from android_logs where tag = "perfetto" order by ts
|
|
|
```
|
|
|
|
|
|
### Android application tracing
|
|
|
You can enable atrace through Perfetto.
|
|
|
|
|
|

|
|
|
|
|
|
Add required categories to `atrace_categories` and set `atrace_apps` to a specific app to collect userspace annotations from that app.
|
|
|
|
|
|
```protobuf
|
|
|
data_sources: {
|
|
|
config {
|
|
|
name: "linux.ftrace"
|
|
|
ftrace_config {
|
|
|
atrace_categories: "view"
|
|
|
atrace_categories: "webview"
|
|
|
atrace_categories: "wm"
|
|
|
atrace_categories: "am"
|
|
|
atrace_categories: "sm"
|
|
|
atrace_apps: "com.android.phone"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
``` |