LLDB mainline
CommandObjectStats.cpp
Go to the documentation of this file.
1//===-- CommandObjectStats.cpp --------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
10#include "lldb/Core/Debugger.h"
14#include "lldb/Target/Target.h"
15
16using namespace lldb;
17using namespace lldb_private;
18
20public:
22 : CommandObjectParsed(interpreter, "enable",
23 "Enable statistics collection", nullptr,
24 eCommandProcessMustBePaused) {}
25
26 ~CommandObjectStatsEnable() override = default;
27
28protected:
29 void DoExecute(Args &command, CommandReturnObject &result) override {
31 result.AppendError("statistics already enabled");
32 return;
33 }
34
37 }
38};
39
41public:
43 : CommandObjectParsed(interpreter, "disable",
44 "Disable statistics collection", nullptr,
45 eCommandProcessMustBePaused) {}
46
47 ~CommandObjectStatsDisable() override = default;
48
49protected:
50 void DoExecute(Args &command, CommandReturnObject &result) override {
52 result.AppendError("need to enable statistics before disabling them");
53 return;
54 }
55
58 }
59};
60
61#define LLDB_OPTIONS_statistics_dump
62#include "CommandOptions.inc"
63
65 class CommandOptions : public Options {
66 public:
68
69 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
70 ExecutionContext *execution_context) override {
72 const int short_option = m_getopt_table[option_idx].val;
73
74 switch (short_option) {
75 case 'a':
76 m_all_targets = true;
77 break;
78 case 's':
80 break;
81 case 'f':
83 break;
84 default:
85 llvm_unreachable("Unimplemented option");
86 }
87 return error;
88 }
89
90 void OptionParsingStarting(ExecutionContext *execution_context) override {
91 m_all_targets = false;
93 }
94
95 llvm::ArrayRef<OptionDefinition> GetDefinitions() override {
96 return llvm::ArrayRef(g_statistics_dump_options);
97 }
98
100
101 bool m_all_targets = false;
103 };
104
105public:
108 interpreter, "statistics dump", "Dump metrics in JSON format",
109 "statistics dump [<options>]", eCommandRequiresTarget) {}
110
111 ~CommandObjectStatsDump() override = default;
112
113 Options *GetOptions() override { return &m_options; }
114
115protected:
116 void DoExecute(Args &command, CommandReturnObject &result) override {
117 Target *target = nullptr;
119 target = m_exe_ctx.GetTargetPtr();
120
125 }
126
128};
129
131 : CommandObjectMultiword(interpreter, "statistics",
132 "Print statistics about a debugging session",
133 "statistics <subcommand> [<subcommand-options>]") {
134 LoadSubCommand("enable",
135 CommandObjectSP(new CommandObjectStatsEnable(interpreter)));
136 LoadSubCommand("disable",
138 LoadSubCommand("dump",
139 CommandObjectSP(new CommandObjectStatsDump(interpreter)));
140}
141
static llvm::raw_ostream & error(Stream &strm)
void DoExecute(Args &command, CommandReturnObject &result) override
~CommandObjectStatsDisable() override=default
CommandObjectStatsDisable(CommandInterpreter &interpreter)
void OptionParsingStarting(ExecutionContext *execution_context) override
const StatisticsOptions & GetStatisticsOptions()
Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg, ExecutionContext *execution_context) override
Set the value of an option.
llvm::ArrayRef< OptionDefinition > GetDefinitions() override
Options * GetOptions() override
~CommandObjectStatsDump() override=default
void DoExecute(Args &command, CommandReturnObject &result) override
CommandObjectStatsDump(CommandInterpreter &interpreter)
CommandObjectStatsEnable(CommandInterpreter &interpreter)
~CommandObjectStatsEnable() override=default
void DoExecute(Args &command, CommandReturnObject &result) override
A command line argument class.
Definition: Args.h:33
bool LoadSubCommand(llvm::StringRef cmd_name, const lldb::CommandObjectSP &command_obj) override
CommandObjectStats(CommandInterpreter &interpreter)
ExecutionContext m_exe_ctx
void void AppendError(llvm::StringRef in_string)
void SetStatus(lldb::ReturnStatus status)
void void AppendMessageWithFormatv(const char *format, Args &&... args)
static void SetCollectingStats(bool enable)
Definition: Statistics.h:167
static bool GetCollectingStats()
Definition: Statistics.h:168
static llvm::json::Value ReportStatistics(Debugger &debugger, Target *target, const lldb_private::StatisticsOptions &options)
Get metrics associated with one or all targets in a debugger in JSON format.
Definition: Statistics.cpp:222
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
Target * GetTargetPtr() const
Returns a pointer to the target object.
A command line option parsing protocol class.
Definition: Options.h:58
std::vector< Option > m_getopt_table
Definition: Options.h:198
An error handling class.
Definition: Status.h:44
A class that represents a running process on the host machine.
Definition: SBAttachInfo.h:14
Definition: SBAddress.h:15
std::shared_ptr< lldb_private::CommandObject > CommandObjectSP
Definition: lldb-forward.h:325
@ eReturnStatusSuccessFinishResult