/* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // This example shows how to log trace events to the console using the console // interceptor. #include "trace_categories.h" #include #include void InitializePerfetto() { perfetto::TracingInitArgs args; args.backends = perfetto::kInProcessBackend; perfetto::Tracing::Initialize(args); perfetto::TrackEvent::Register(); perfetto::ConsoleInterceptor::Register(); } std::unique_ptr StartTracing() { perfetto::TraceConfig cfg; cfg.add_buffers()->set_size_kb(1024); auto* ds_cfg = cfg.add_data_sources()->mutable_config(); ds_cfg->set_name("track_event"); // Enable the console interceptor. ds_cfg->mutable_interceptor_config()->set_name("console"); auto tracing_session = perfetto::Tracing::NewTrace(); tracing_session->Setup(cfg); tracing_session->StartBlocking(); return tracing_session; } void DrawPlayer(int player_number) { TRACE_EVENT("rendering", "DrawPlayer", "player_number", player_number); // Sleep to simulate a long computation. std::this_thread::sleep_for(std::chrono::milliseconds(500)); } void DrawGame() { // This is an example of an unscoped slice, which begins and ends at specific // points (instead of at the end of the current block scope). TRACE_EVENT_BEGIN("rendering", "DrawGame"); DrawPlayer(1); DrawPlayer(2); TRACE_EVENT_END("rendering"); } int main(int, const char**) { InitializePerfetto(); auto tracing_session = StartTracing(); // Simulate some work that emits trace events. DrawGame(); tracing_session->StopBlocking(); return 0; }