blob: 062693c384ff0cc26dc47fcf503fc048bc7eb95d [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BASE_TRACE_EVENT_TASK_EXECUTION_MACROS_H_
#define BASE_TRACE_EVENT_TASK_EXECUTION_MACROS_H_
#include "base/location.h"
#include "base/trace_event/heap_profiler.h"
#include "base/trace_event/interned_args_helper.h"
#include "base/trace_event/typed_macros.h"
#include "third_party/perfetto/protos/perfetto/trace/track_event/log_message.pbzero.h"
#include "third_party/perfetto/protos/perfetto/trace/track_event/task_execution.pbzero.h"
// Implementation detail: internal macro to trace a log message, with the source
// location of the log statement.
#define INTERNAL_TRACE_LOG_MESSAGE(file, message, line) \
TRACE_EVENT_INSTANT("log", "LogMessage", [&](perfetto::EventContext ctx) { \
perfetto::protos::pbzero::LogMessage* log = \
ctx.event()->set_log_message(); \
log->set_source_location_iid( \
base::trace_event::InternedSourceLocation::Get( \
&ctx, base::trace_event::TraceSourceLocation( \
/*function_name=*/nullptr, file, line))); \
log->set_body_iid(base::trace_event::InternedLogMessage::Get( \
&ctx, std::string(message))); \
});
#endif // BASE_TRACE_EVENT_TASK_EXECUTION_MACROS_H_