clang 20.0.0 (based on r547379) from build 12806354. Bug: http://b/379133546 Test: N/A Change-Id: I2eb8938af55d809de674be63cb30cf27e801862b Upstream-Commit: ad834e67b1105d15ef907f6255d4c96e8e733f57
149 lines
5.2 KiB
C++
149 lines
5.2 KiB
C++
//===-- SBTrace.h -----------------------------------------------*- C++ -*-===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_API_SBTRACE_H
|
|
#define LLDB_API_SBTRACE_H
|
|
|
|
#include "lldb/API/SBDefines.h"
|
|
#include "lldb/API/SBError.h"
|
|
#include "lldb/API/SBTraceCursor.h"
|
|
|
|
namespace lldb {
|
|
|
|
class LLDB_API SBTrace {
|
|
public:
|
|
/// Default constructor for an invalid Trace object.
|
|
SBTrace();
|
|
|
|
/// See SBDebugger::LoadTraceFromFile.
|
|
static SBTrace LoadTraceFromFile(SBError &error, SBDebugger &debugger,
|
|
const SBFileSpec &trace_description_file);
|
|
|
|
/// Get a \a TraceCursor for the given thread's trace.
|
|
///
|
|
/// \param[out] error
|
|
/// This will be set with an error in case of failures.
|
|
//
|
|
/// \param[in] thread
|
|
/// The thread to get a \a TraceCursor for.
|
|
//
|
|
/// \return
|
|
/// A \a SBTraceCursor. If the thread is not traced or its trace
|
|
/// information failed to load, an invalid \a SBTraceCursor is returned
|
|
/// and the \p error parameter is set.
|
|
SBTraceCursor CreateNewCursor(SBError &error, SBThread &thread);
|
|
|
|
/// Save the trace to the specified directory, which will be created if
|
|
/// needed. This will also create a file \a <directory>/trace.json with the
|
|
/// main properties of the trace session, along with others files which
|
|
/// contain the actual trace data. The trace.json file can be used later as
|
|
/// input for the "trace load" command to load the trace in LLDB, or for the
|
|
/// method \a SBDebugger.LoadTraceFromFile().
|
|
///
|
|
/// \param[out] error
|
|
/// This will be set with an error in case of failures.
|
|
///
|
|
/// \param[in] bundle_dir
|
|
/// The directory where the trace files will be saved.
|
|
///
|
|
/// \param[in] compact
|
|
/// Try not to save to disk information irrelevant to the traced processes.
|
|
/// Each trace plug-in implements this in a different fashion.
|
|
///
|
|
/// \return
|
|
/// A \a SBFileSpec pointing to the bundle description file.
|
|
SBFileSpec SaveToDisk(SBError &error, const SBFileSpec &bundle_dir,
|
|
bool compact = false);
|
|
|
|
/// \return
|
|
/// A description of the parameters to use for the \a SBTrace::Start
|
|
/// method, or \b null if the object is invalid.
|
|
const char *GetStartConfigurationHelp();
|
|
|
|
/// Start tracing all current and future threads in a live process using a
|
|
/// provided configuration. This is referred as "process tracing" in the
|
|
/// documentation.
|
|
///
|
|
/// This is equivalent to the command "process trace start".
|
|
///
|
|
/// This operation fails if it is invoked twice in a row without
|
|
/// first stopping the process trace with \a SBTrace::Stop().
|
|
///
|
|
/// If a thread is already being traced explicitly, e.g. with \a
|
|
/// SBTrace::Start(const SBThread &thread, const SBStructuredData
|
|
/// &configuration), it is left unaffected by this operation.
|
|
///
|
|
/// \param[in] configuration
|
|
/// Dictionary object with custom fields for the corresponding trace
|
|
/// technology.
|
|
///
|
|
/// Full details for the trace start parameters that can be set can be
|
|
/// retrieved by calling \a SBTrace::GetStartConfigurationHelp().
|
|
///
|
|
/// \return
|
|
/// An error explaining any failures.
|
|
SBError Start(const SBStructuredData &configuration);
|
|
|
|
/// Start tracing a specific thread in a live process using a provided
|
|
/// configuration. This is referred as "thread tracing" in the documentation.
|
|
///
|
|
/// This is equivalent to the command "thread trace start".
|
|
///
|
|
/// If the thread is already being traced by a "process tracing" operation,
|
|
/// e.g. with \a SBTrace::Start(const SBStructuredData &configuration), this
|
|
/// operation fails.
|
|
///
|
|
/// \param[in] configuration
|
|
/// Dictionary object with custom fields for the corresponding trace
|
|
/// technology.
|
|
///
|
|
/// Full details for the trace start parameters that can be set can be
|
|
/// retrieved by calling \a SBTrace::GetStartConfigurationHelp().
|
|
///
|
|
/// \return
|
|
/// An error explaining any failures.
|
|
SBError Start(const SBThread &thread, const SBStructuredData &configuration);
|
|
|
|
/// Stop tracing all threads in a live process.
|
|
///
|
|
/// If a "process tracing" operation is active, e.g. \a SBTrace::Start(const
|
|
/// SBStructuredData &configuration), this effectively prevents future threads
|
|
/// from being traced.
|
|
///
|
|
/// This is equivalent to the command "process trace stop".
|
|
///
|
|
/// \return
|
|
/// An error explaining any failures.
|
|
SBError Stop();
|
|
|
|
/// Stop tracing a specific thread in a live process regardless of whether the
|
|
/// thread was traced explicitly or as part of a "process tracing" operation.
|
|
///
|
|
/// This is equivalent to the command "thread trace stop".
|
|
///
|
|
/// \return
|
|
/// An error explaining any failures.
|
|
SBError Stop(const SBThread &thread);
|
|
|
|
explicit operator bool() const;
|
|
|
|
bool IsValid();
|
|
|
|
protected:
|
|
friend class SBTarget;
|
|
|
|
SBTrace(const lldb::TraceSP &trace_sp);
|
|
|
|
lldb::TraceSP m_opaque_sp;
|
|
/// deprecated
|
|
lldb::ProcessWP m_opaque_wp;
|
|
};
|
|
} // namespace lldb
|
|
|
|
#endif // LLDB_API_SBTRACE_H
|