arkcompiler_runtime_core/docs/tracing.md
huangyu c658ccf319 Update runtime_core code
Issue: https://gitee.com/openharmony/arkcompiler_runtime_core/issues/I5G96F
Test: Test262 suit, ark unittest, rk3568 XTS, ark previewer demo

Signed-off-by: huangyu <huangyu76@huawei.com>
Change-Id: I3f63d129a07deaa27a390f556dcaa5651c098185
2022-07-17 10:20:32 +08:00

1.2 KiB

Panda Tracing

This document describes Panda trace subsystem. The subsystem provides API for creating tracepoints to track key points in the runtime. The subsystem uses the ftrace ring buffer to record the trace.

API

Trace API is described in libpandabase/trace/trace.h file. It supports tracing a scope execution time and tracking a parameter value.

Usage examples:

...
#include "trace/trace.h"
...

void FunctionA() {
    trace::ScopedTrace scoped_trace("Loading file");
    ...
}

void FunctionB() {
    trace::ScopedTrace scoped_trace(__func__);
    ...
}

void FunctionC() {
    SCOPED_TRACE_STREAM << "Trace: " << __func__;
    ...
}

void FunctionD() {
    trace::BeginTracePoint(__func__);
    ...
    trace::EndTracePoint();
}

void FunctionE(int allocated_bytes) {
    trace::IntTracePoint("Heap Size", allocated_bytes);
    ...
}

Recording trace

To record and view a trace, do the following steps:

  1. Enable tracing by the command:
sudo scripts/trace_enable.sh <output_file> <trace_time_in_seconds>
  1. Launch the runtime with extra environment variable:
PANDA_TRACE=1 panda <args>
  1. Stop tracing by ^C if the trace time is still running out.
  2. Load <output_file> in Chrome at chrome://tracing address.