1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef TOOLS_GN_TRACE_H_
6 #define TOOLS_GN_TRACE_H_
10 #include "base/command_line.h"
11 #include "base/files/file_path.h"
12 #include "base/macros.h"
13 #include "base/threading/platform_thread.h"
14 #include "base/time/time.h"
28 TRACE_CHECK_HEADER
, // One file.
29 TRACE_CHECK_HEADERS
, // All files.
33 const std::string
& name
,
34 base::PlatformThreadId thread_id
);
37 Type
type() const { return type_
; }
38 const std::string
& name() const { return name_
; }
39 base::PlatformThreadId
thread_id() const { return thread_id_
; }
41 base::TimeTicks
begin() const { return begin_
; }
42 void set_begin(base::TimeTicks b
) { begin_
= b
; }
43 base::TimeTicks
end() const { return end_
; }
44 void set_end(base::TimeTicks e
) { end_
= e
; }
46 base::TimeDelta
delta() const { return end_
- begin_
; }
48 // Optional toolchain label.
49 const std::string
& toolchain() const { return toolchain_
; }
50 void set_toolchain(const std::string
& t
) { toolchain_
= t
; }
52 // Optional command line.
53 const std::string
& cmdline() const { return cmdline_
; }
54 void set_cmdline(const std::string
& c
) { cmdline_
= c
; }
59 base::PlatformThreadId thread_id_
;
61 base::TimeTicks begin_
;
64 std::string toolchain_
;
70 ScopedTrace(TraceItem::Type t
, const std::string
& name
);
71 ScopedTrace(TraceItem::Type t
, const Label
& label
);
74 void SetToolchain(const Label
& label
);
75 void SetCommandLine(const base::CommandLine
& cmdline
);
84 // Call to turn tracing on. It's off by default.
87 // Adds a trace event to the log. Takes ownership of the pointer.
88 void AddTrace(TraceItem
* item
);
90 // Returns a summary of the current traces, or the empty string if tracing is
92 std::string
SummarizeTraces();
94 // Saves the current traces to the given filename in JSON format.
95 void SaveTraces(const base::FilePath
& file_name
);
97 #endif // TOOLS_GN_TRACE_H_