llvm-project/lldb/include/lldb/Target/ThreadPlanTracer.h
Jonas Devlieghere 65998ab2cb
[lldb] Make GetOutputStreamSP and GetErrorStreamSP protected (#127682)
This makes GetOutputStreamSP and GetErrorStreamSP protected members of
Debugger. Users who want to print to the debugger's stream should use
GetAsyncOutputStreamSP and GetAsyncErrorStreamSP instead and the few
remaining stragglers have been migrated.
2025-02-19 08:31:40 -08:00

95 lines
2.1 KiB
C++

//===-- ThreadPlanTracer.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_TARGET_THREADPLANTRACER_H
#define LLDB_TARGET_THREADPLANTRACER_H
#include "lldb/Symbol/TaggedASTType.h"
#include "lldb/Target/Thread.h"
#include "lldb/Utility/RegisterValue.h"
#include "lldb/lldb-private.h"
namespace lldb_private {
class ThreadPlanTracer {
friend class ThreadPlan;
public:
enum ThreadPlanTracerStyle {
eLocation = 0,
eStateChange,
eCheckFrames,
ePython
};
ThreadPlanTracer(Thread &thread, lldb::StreamSP &stream_sp);
ThreadPlanTracer(Thread &thread);
virtual ~ThreadPlanTracer() = default;
virtual void TracingStarted() {}
virtual void TracingEnded() {}
bool EnableTracing(bool value) {
bool old_value = m_enabled;
m_enabled = value;
if (old_value == false && value == true)
TracingStarted();
else if (old_value == true && value == false)
TracingEnded();
return old_value;
}
bool TracingEnabled() { return m_enabled; }
Thread &GetThread();
protected:
Process &m_process;
lldb::tid_t m_tid;
lldb::StreamSP GetLogStreamSP();
virtual void Log();
private:
bool TracerExplainsStop();
bool m_enabled;
lldb::StreamSP m_stream_sp;
Thread *m_thread;
};
class ThreadPlanAssemblyTracer : public ThreadPlanTracer {
public:
ThreadPlanAssemblyTracer(Thread &thread, lldb::StreamSP &stream_sp);
ThreadPlanAssemblyTracer(Thread &thread);
~ThreadPlanAssemblyTracer() override;
void TracingStarted() override;
void TracingEnded() override;
void Log() override;
private:
Disassembler *GetDisassembler();
TypeFromUser GetIntPointerType();
lldb::DisassemblerSP m_disassembler_sp;
TypeFromUser m_intptr_type;
std::vector<RegisterValue> m_register_values;
lldb::DataBufferSP m_buffer_sp;
};
} // namespace lldb_private
#endif // LLDB_TARGET_THREADPLANTRACER_H