Mercurial > hg > CbC > CbC_llvm
view lldb/source/Commands/CommandObjectStats.cpp @ 213:25ca0248ac32
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 11 Jul 2021 17:05:31 +0900 |
parents | 1d019706d866 |
children | 5f17cb93ff66 |
line wrap: on
line source
//===-- CommandObjectStats.cpp --------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "CommandObjectStats.h" #include "lldb/Interpreter/CommandReturnObject.h" #include "lldb/Target/Target.h" using namespace lldb; using namespace lldb_private; class CommandObjectStatsEnable : public CommandObjectParsed { public: CommandObjectStatsEnable(CommandInterpreter &interpreter) : CommandObjectParsed(interpreter, "enable", "Enable statistics collection", nullptr, eCommandProcessMustBePaused) {} ~CommandObjectStatsEnable() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { Target &target = GetSelectedOrDummyTarget(); if (target.GetCollectingStats()) { result.AppendError("statistics already enabled"); result.SetStatus(eReturnStatusFailed); return false; } target.SetCollectingStats(true); result.SetStatus(eReturnStatusSuccessFinishResult); return true; } }; class CommandObjectStatsDisable : public CommandObjectParsed { public: CommandObjectStatsDisable(CommandInterpreter &interpreter) : CommandObjectParsed(interpreter, "disable", "Disable statistics collection", nullptr, eCommandProcessMustBePaused) {} ~CommandObjectStatsDisable() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { Target &target = GetSelectedOrDummyTarget(); if (!target.GetCollectingStats()) { result.AppendError("need to enable statistics before disabling them"); result.SetStatus(eReturnStatusFailed); return false; } target.SetCollectingStats(false); result.SetStatus(eReturnStatusSuccessFinishResult); return true; } }; class CommandObjectStatsDump : public CommandObjectParsed { public: CommandObjectStatsDump(CommandInterpreter &interpreter) : CommandObjectParsed(interpreter, "dump", "Dump statistics results", nullptr, eCommandProcessMustBePaused) {} ~CommandObjectStatsDump() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { Target &target = GetSelectedOrDummyTarget(); uint32_t i = 0; for (auto &stat : target.GetStatistics()) { result.AppendMessageWithFormat( "%s : %u\n", lldb_private::GetStatDescription( static_cast<lldb_private::StatisticKind>(i)) .c_str(), stat); i += 1; } result.SetStatus(eReturnStatusSuccessFinishResult); return true; } }; CommandObjectStats::CommandObjectStats(CommandInterpreter &interpreter) : CommandObjectMultiword(interpreter, "statistics", "Print statistics about a debugging session", "statistics <subcommand> [<subcommand-options>]") { LoadSubCommand("enable", CommandObjectSP(new CommandObjectStatsEnable(interpreter))); LoadSubCommand("disable", CommandObjectSP(new CommandObjectStatsDisable(interpreter))); LoadSubCommand("dump", CommandObjectSP(new CommandObjectStatsDump(interpreter))); } CommandObjectStats::~CommandObjectStats() = default;