60 lines · c
1//===-- CommandObjectThreadTraceExportCTF.h -------------------*- C++ //-*-===//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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_COMMANDOBJECTTHREADTRACEEXPORTCTF_H10#define LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_COMMANDOBJECTTHREADTRACEEXPORTCTF_H11 12#include "TraceExporterCTF.h"13#include "lldb/Interpreter/CommandInterpreter.h"14#include "lldb/Interpreter/CommandReturnObject.h"15#include <optional>16 17namespace lldb_private {18namespace ctf {19 20class CommandObjectThreadTraceExportCTF : public CommandObjectParsed {21public:22 class CommandOptions : public Options {23 public:24 CommandOptions() : Options() { OptionParsingStarting(nullptr); }25 26 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,27 ExecutionContext *execution_context) override;28 29 void OptionParsingStarting(ExecutionContext *execution_context) override;30 31 llvm::ArrayRef<OptionDefinition> GetDefinitions() override;32 33 std::optional<size_t> m_thread_index;34 std::string m_file;35 };36 37 CommandObjectThreadTraceExportCTF(CommandInterpreter &interpreter)38 : CommandObjectParsed(39 interpreter, "thread trace export ctf",40 "Export a given thread's trace to Chrome Trace Format",41 "thread trace export ctf [<ctf-options>]",42 lldb::eCommandRequiresProcess | lldb::eCommandTryTargetAPILock |43 lldb::eCommandProcessMustBeLaunched |44 lldb::eCommandProcessMustBePaused |45 lldb::eCommandProcessMustBeTraced),46 m_options() {}47 48 Options *GetOptions() override { return &m_options; }49 50protected:51 void DoExecute(Args &args, CommandReturnObject &result) override;52 53 CommandOptions m_options;54};55 56} // namespace ctf57} // namespace lldb_private58 59#endif // LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_COMMANDOBJECTTHREADTRACEEXPORTCTF_H60