52 lines · c
1//===-- CommandObjectTrace.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_COMMANDS_COMMANDOBJECTTRACE_H10#define LLDB_SOURCE_COMMANDS_COMMANDOBJECTTRACE_H11 12#include "CommandObjectThreadUtil.h"13 14namespace lldb_private {15 16class CommandObjectTrace : public CommandObjectMultiword {17public:18 CommandObjectTrace(CommandInterpreter &interpreter);19 20 ~CommandObjectTrace() override;21};22 23/// This class works by delegating the logic to the actual trace plug-in that24/// can support the current process.25class CommandObjectTraceProxy : public CommandObjectProxy {26public:27 CommandObjectTraceProxy(bool live_debug_session_only,28 CommandInterpreter &interpreter, const char *name,29 const char *help = nullptr,30 const char *syntax = nullptr, uint32_t flags = 0)31 : CommandObjectProxy(interpreter, name, help, syntax, flags),32 m_live_debug_session_only(live_debug_session_only) {}33 34protected:35 virtual lldb::CommandObjectSP GetDelegateCommand(Trace &trace) = 0;36 37 llvm::Expected<lldb::CommandObjectSP> DoGetProxyCommandObject();38 39 CommandObject *GetProxyCommandObject() override;40 41private:42 llvm::StringRef GetUnsupportedError() override { return m_delegate_error; }43 44 bool m_live_debug_session_only;45 lldb::CommandObjectSP m_delegate_sp;46 std::string m_delegate_error;47};48 49} // namespace lldb_private50 51#endif // LLDB_SOURCE_COMMANDS_COMMANDOBJECTTRACE_H52