94 llvm::Expected<StoppedExecutionContext> exe_ctx =
101 if (exe_ctx->HasThreadScope()) {
102 queue_sp = exe_ctx->GetThreadPtr()->GetQueue();
113 return this->
operator bool();
115SBThread::operator
bool()
const {
120 llvm::Expected<StoppedExecutionContext> exe_ctx =
127 return m_opaque_sp->GetThreadSP().get() !=
nullptr;
140 llvm::Expected<StoppedExecutionContext> exe_ctx =
147 if (exe_ctx->HasThreadScope())
148 return exe_ctx->GetThreadPtr()->GetStopReason();
156 llvm::Expected<StoppedExecutionContext> exe_ctx =
159 if (exe_ctx->HasThreadScope()) {
160 StopInfoSP stop_info_sp = exe_ctx->GetThreadPtr()->GetStopInfo();
162 return stop_info_sp->GetStopReasonDataCount();
174 llvm::Expected<StoppedExecutionContext> exe_ctx =
177 if (exe_ctx->HasThreadScope()) {
178 Thread *thread = exe_ctx->GetThreadPtr();
179 StopInfoSP stop_info_sp = thread->GetStopInfo();
181 return stop_info_sp->GetStopReasonDataAtIndex(idx);
195 llvm::Expected<StoppedExecutionContext> exe_ctx =
202 if (!exe_ctx->HasThreadScope())
205 StopInfoSP stop_info = exe_ctx->GetThreadPtr()->GetStopInfo();
221 llvm::Expected<StoppedExecutionContext> exe_ctx =
228 if (!exe_ctx->HasThreadScope())
231 ProcessSP process_sp = exe_ctx->GetProcessSP();
233 StopInfoSP stop_info = exe_ctx->GetThreadPtr()->GetStopInfo();
238 threads = process_sp->GetInstrumentationRuntime(type)
239 ->GetBacktracesFromExtendedStopInfo(info);
249 llvm::Expected<StoppedExecutionContext> exe_ctx =
256 if (!exe_ctx->HasThreadScope())
260 const std::string stop_desc = exe_ctx->GetThreadPtr()->GetStopDescription();
272 llvm::Expected<StoppedExecutionContext> exe_ctx =
279 if (!exe_ctx->HasThreadScope())
282 std::string thread_stop_desc = exe_ctx->GetThreadPtr()->GetStopDescription();
283 if (thread_stop_desc.empty())
287 return ::snprintf(dst_or_null, dst_len,
"%s", thread_stop_desc.c_str()) + 1;
291 return thread_stop_desc.size() + 1;
298 llvm::Expected<StoppedExecutionContext> exe_ctx =
305 if (exe_ctx->HasThreadScope()) {
306 StopInfoSP stop_info_sp = exe_ctx->GetThreadPtr()->GetStopInfo();
312 return SBValue(return_valobj_sp);
322 llvm::Expected<StoppedExecutionContext> exe_ctx =
331 return thread_sp->GetID();
338 llvm::Expected<StoppedExecutionContext> exe_ctx =
347 return thread_sp->GetIndexID();
354 llvm::Expected<StoppedExecutionContext> exe_ctx =
361 if (!exe_ctx->HasThreadScope())
370 llvm::Expected<StoppedExecutionContext> exe_ctx =
377 if (!exe_ctx->HasThreadScope())
387 llvm::Expected<StoppedExecutionContext> exe_ctx =
394 if (exe_ctx->HasThreadScope()) {
395 id = exe_ctx->GetThreadPtr()->GetQueueID();
404 bool success =
false;
405 llvm::Expected<StoppedExecutionContext> exe_ctx =
408 if (exe_ctx->HasThreadScope()) {
409 Thread *thread = exe_ctx->GetThreadPtr();
413 info_root_sp->GetObjectForDotSeparatedPath(path);
416 strm.
ref() << node->GetAsString()->GetValue();
420 strm.Printf(
"0x%" PRIx64, node->GetUnsignedIntegerValue());
424 strm.Printf(
"0x%f", node->GetAsFloat()->GetValue());
428 if (node->GetAsBoolean()->GetValue())
431 strm.Printf(
"false");
457 if (new_plan !=
nullptr) {
468 std::unique_lock<TargetAPIMutex> guard(api_mutex, std::adopt_lock);
484 llvm::Expected<StoppedExecutionContext> exe_ctx =
491 if (!exe_ctx->HasThreadScope()) {
496 Thread *thread = exe_ctx->GetThreadPtr();
497 bool abort_other_plans =
false;
500 error.SetErrorString(
"No frame to step over");
506 frame_sp->HasDebugInformation() || frame_sp->IsSynthetic()
510 llvm::Expected<lldb::ThreadPlanSP> frame_plan_result =
511 frame_sp->GetThreadPlanForStepType(step_type);
512 if (
auto llvm_err = frame_plan_result.takeError()) {
513 error.SetErrorStringWithFormat(
"scripted frame provider got an error "
514 "while constructing step plan: \"%s\"",
515 llvm::toString(std::move(llvm_err)).c_str());
518 new_plan_sp = *frame_plan_result;
521 thread->QueueThreadPlan(new_plan_sp,
false);
526 SymbolContext sc(frame_sp->GetSymbolContext(eSymbolContextEverything));
527 new_plan_sp = thread->QueueThreadPlanForStepOverRange(
528 abort_other_plans, sc.
line_entry, sc, stop_other_threads,
529 new_plan_status, avoid_no_debug);
531 new_plan_sp = thread->QueueThreadPlanForStepSingleInstruction(
532 true, abort_other_plans, stop_other_threads, new_plan_status);
541 StepInto(
nullptr, stop_other_threads);
556 llvm::Expected<StoppedExecutionContext> exe_ctx =
563 if (!exe_ctx->HasThreadScope()) {
568 bool abort_other_plans =
false;
570 Thread *thread = exe_ctx->GetThreadPtr();
576 if (frame_sp && (frame_sp->HasDebugInformation() || frame_sp->IsSynthetic()))
583 llvm::Expected<lldb::ThreadPlanSP> frame_plan_result =
584 frame_sp->GetThreadPlanForStepType(step_type);
585 if (
auto llvm_err = frame_plan_result.takeError()) {
586 error.SetErrorStringWithFormat(
587 "scripted frame provider got an error "
588 "while constructing step plan: \"%s\"",
589 llvm::toString(std::move(llvm_err)).c_str());
592 new_plan_sp = *frame_plan_result;
596 thread->QueueThreadPlan(new_plan_sp,
false);
599 SymbolContext sc(frame_sp->GetSymbolContext(eSymbolContextEverything));
612 const LazyBool step_out_avoids_code_without_debug_info =
614 const LazyBool step_in_avoids_code_without_debug_info =
616 new_plan_sp = thread->QueueThreadPlanForStepInRange(
617 abort_other_plans, range, sc, target_name, stop_other_threads,
618 new_plan_status, step_in_avoids_code_without_debug_info,
619 step_out_avoids_code_without_debug_info);
621 new_plan_sp = thread->QueueThreadPlanForStepSingleInstruction(
622 false, abort_other_plans, stop_other_threads, new_plan_status);
642 llvm::Expected<StoppedExecutionContext> exe_ctx =
649 if (!exe_ctx->HasThreadScope()) {
654 bool abort_other_plans =
false;
655 bool stop_other_threads =
false;
659 Thread *thread = exe_ctx->GetThreadPtr();
662 llvm::Expected<lldb::ThreadPlanSP> frame_plan_result =
664 if (
auto llvm_err = frame_plan_result.takeError()) {
665 error.SetErrorStringWithFormat(
666 "scripted frame provider got an error "
667 "while constructing step plan: \"%s\"",
668 llvm::toString(std::move(llvm_err)).c_str());
671 new_plan_sp = *frame_plan_result;
678 thread->QueueThreadPlan(new_plan_sp,
false);
681 new_plan_sp = thread->QueueThreadPlanForStepOut(
682 abort_other_plans,
nullptr,
false, stop_other_threads,
eVoteYes,
702 llvm::Expected<StoppedExecutionContext> exe_ctx =
716 if (!exe_ctx->HasThreadScope()) {
721 bool abort_other_plans =
false;
722 bool stop_other_threads =
false;
723 Thread *thread = exe_ctx->GetThreadPtr();
730 ThreadPlanSP new_plan_sp(thread->QueueThreadPlanForStepOut(
731 abort_other_plans,
nullptr,
false, stop_other_threads,
eVoteYes,
750 llvm::Expected<StoppedExecutionContext> exe_ctx =
757 if (!exe_ctx->HasThreadScope()) {
762 Thread *thread = exe_ctx->GetThreadPtr();
769 llvm::Expected<lldb::ThreadPlanSP> frame_plan_result =
770 frame_sp->GetThreadPlanForStepType(step_type);
771 if (
auto llvm_err = frame_plan_result.takeError()) {
772 error.SetErrorStringWithFormat(
773 "scripted frame provider got an error "
774 "while constructing step plan: \"%s\"",
775 llvm::toString(std::move(llvm_err)).c_str());
778 new_plan_sp = *frame_plan_result;
783 new_plan_sp = thread->QueueThreadPlanForStepSingleInstruction(
784 step_over,
false,
true, new_plan_status);
802 llvm::Expected<StoppedExecutionContext> exe_ctx =
809 if (!exe_ctx->HasThreadScope()) {
814 bool abort_other_plans =
false;
815 bool stop_other_threads =
true;
819 Thread *thread = exe_ctx->GetThreadPtr();
822 ThreadPlanSP new_plan_sp(thread->QueueThreadPlanForRunToAddress(
823 abort_other_plans, target_addr, stop_other_threads, new_plan_status));
838 llvm::Expected<StoppedExecutionContext> exe_ctx =
845 if (exe_ctx->HasThreadScope()) {
846 Target *target = exe_ctx->GetTargetPtr();
847 Thread *thread = exe_ctx->GetThreadPtr();
861 frame_sp = thread->GetStackFrameAtIndex(0);
871 frame_sc = frame_sp->GetSymbolContext(
872 eSymbolContextCompUnit | eSymbolContextFunction |
873 eSymbolContextLineEntry | eSymbolContextSymbol);
877 "frame %u doesn't have debug information", frame_sp->GetFrameIndex());
884 step_file_spec = sb_file_spec.
ref();
890 "invalid file argument or no file for frame");
900 bool all_in_function =
true;
902 std::vector<addr_t> step_over_until_addrs;
903 const bool abort_other_plans =
false;
904 const bool stop_other_threads =
false;
907 step_file_spec, line, std::nullopt,
true,
912 eSymbolContextLineEntry, sc_list);
915 sc.line_entry.range.GetBaseAddress().GetLoadAddress(target);
920 step_over_until_addrs.push_back(step_addr);
922 all_in_function =
false;
926 if (step_over_until_addrs.empty()) {
927 if (all_in_function) {
928 step_file_spec.
GetPath(path,
sizeof(path));
930 "No line entries for %s:%u", path, line);
933 "step until target not in current function");
936 ThreadPlanSP new_plan_sp = thread->QueueThreadPlanForStepUntil(
937 abort_other_plans, step_over_until_addrs, stop_other_threads,
938 frame_sp->GetFrameIndex(), new_plan_status);
941 sb_error =
ResumeNewPlan(std::move(*exe_ctx), new_plan_sp.get());
958 bool resume_immediately) {
968 bool resume_immediately) {
973 llvm::Expected<StoppedExecutionContext> exe_ctx =
978 if (!exe_ctx->HasThreadScope()) {
983 Thread *thread = exe_ctx->GetThreadPtr();
989 args_dict_sp = std::static_pointer_cast<StructuredData::Dictionary>(obj_sp);
992 ThreadPlanSP new_plan_sp = thread->QueueThreadPlanForStepScripted(
993 false, scripted_metadata,
false, new_plan_status);
995 if (new_plan_status.
Fail()) {
1000 if (!resume_immediately)
1003 if (new_plan_status.
Success())
1016 llvm::Expected<StoppedExecutionContext> exe_ctx =
1021 if (!exe_ctx->HasThreadScope()) {
1026 Thread *thread = exe_ctx->GetThreadPtr();
1028 Status err = thread->JumpToLine(file_spec.
ref(), line,
true);
1038 llvm::Expected<StoppedExecutionContext> exe_ctx =
1043 if (exe_ctx->HasThreadScope()) {
1044 Thread *thread = exe_ctx->GetThreadPtr();
1057 llvm::Expected<StoppedExecutionContext> exe_ctx =
1062 if (exe_ctx->HasThreadScope()) {
1063 Thread *thread = exe_ctx->GetThreadPtr();
1064 sb_error.
SetError(thread->UnwindInnermostExpression());
1066 thread->SetSelectedFrameByIndex(0,
false);
1082 llvm::Expected<StoppedExecutionContext> exe_ctx =
1089 bool result =
false;
1090 if (exe_ctx->HasThreadScope()) {
1108 llvm::Expected<StoppedExecutionContext> exe_ctx =
1116 bool result =
false;
1117 if (exe_ctx->HasThreadScope()) {
1118 const bool override_suspend =
true;
1119 exe_ctx->GetThreadPtr()->SetResumeState(
eStateRunning, override_suspend);
1129 llvm::Expected<StoppedExecutionContext> exe_ctx =
1136 if (exe_ctx->HasThreadScope())
1144 llvm::Expected<StoppedExecutionContext> exe_ctx =
1151 if (exe_ctx->HasThreadScope())
1160 llvm::Expected<StoppedExecutionContext> exe_ctx =
1167 if (exe_ctx->HasThreadScope()) {
1170 sb_process.
SetSP(exe_ctx->GetProcessSP());
1179 llvm::Expected<StoppedExecutionContext> exe_ctx =
1186 if (exe_ctx->HasThreadScope())
1187 return exe_ctx->GetThreadPtr()->GetStackFrameCount();
1196 llvm::Expected<StoppedExecutionContext> exe_ctx =
1203 if (exe_ctx->HasThreadScope()) {
1204 StackFrameSP frame_sp = exe_ctx->GetThreadPtr()->GetStackFrameAtIndex(idx);
1215 llvm::Expected<StoppedExecutionContext> exe_ctx =
1222 if (exe_ctx->HasThreadScope()) {
1224 exe_ctx->GetThreadPtr()->GetStackFrameList();
1228 return sb_frame_list;
1235 llvm::Expected<StoppedExecutionContext> exe_ctx =
1242 if (exe_ctx->HasThreadScope()) {
1256 llvm::Expected<StoppedExecutionContext> exe_ctx =
1263 if (exe_ctx->HasThreadScope()) {
1264 Thread *thread = exe_ctx->GetThreadPtr();
1265 frame_sp = thread->GetStackFrameAtIndex(idx);
1267 thread->SetSelectedFrame(frame_sp.get());
1312 llvm::Expected<StoppedExecutionContext> exe_ctx =
1319 if (exe_ctx->HasThreadScope()) {
1320 exe_ctx->GetThreadPtr()->GetStatus(strm, 0, 1, 1,
true,
1339 llvm::Expected<StoppedExecutionContext> exe_ctx =
1346 if (exe_ctx->HasThreadScope()) {
1347 exe_ctx->GetThreadPtr()->DumpUsingSettingsFormat(
1365 llvm::Expected<StoppedExecutionContext> exe_ctx =
1372 if (exe_ctx->HasThreadScope()) {
1373 if (exe_ctx->GetThreadPtr()->DumpUsingFormat(
1380 "It was not possible to generate a thread description with the given "
1381 "format string '%s'",
1389 llvm::Expected<StoppedExecutionContext> exe_ctx =
1393 if (exe_ctx->HasThreadScope()) {
1394 ThreadSP real_thread(exe_ctx->GetThreadSP());
1397 Process *process = exe_ctx->GetProcessPtr();
1403 if (new_thread_sp) {
1407 sb_origin_thread.
SetThread(new_thread_sp);
1417 return sb_origin_thread;
1423 llvm::Expected<StoppedExecutionContext> exe_ctx =
1432 return thread_sp->GetExtendedBacktraceOriginatingIndexID();
1439 llvm::Expected<StoppedExecutionContext> exe_ctx =
1450 return SBValue(thread_sp->GetCurrentException());
1456 llvm::Expected<StoppedExecutionContext> exe_ctx =
1467 return SBThread(thread_sp->GetCurrentExceptionBacktrace());
1473 llvm::Expected<StoppedExecutionContext> exe_ctx =
1482 return thread_sp->SafeToCallFunctions();
1499 llvm::Expected<StoppedExecutionContext> exe_ctx =
1509 return thread_sp->GetSiginfoValue();
static llvm::raw_ostream & error(Stream &strm)
#define LLDB_INSTRUMENT()
#define LLDB_INSTRUMENT_VA(...)
#define LLDB_LOG_ERROR(log, error,...)
static Status ResumeNewPlan(StoppedExecutionContext exe_ctx, ThreadPlan *new_plan)
void SetError(uint32_t err, lldb::ErrorType type)
lldb_private::Event * get() const
const lldb_private::FileSpec & ref() const
Represents a list of SBFrame objects.
void SetFrameList(const lldb::StackFrameListSP &frame_list_sp)
void SetFrameSP(const lldb::StackFrameSP &lldb_object_sp)
lldb::SBThread GetThread() const
lldb::StackFrameSP GetFrameSP() const
void SetSP(const lldb::ProcessSP &process_sp)
void SetQueue(const lldb::QueueSP &queue_sp)
lldb_private::Stream & ref()
StructuredDataImplUP m_impl_up
static const char * GetBroadcasterClassName()
void StepInto(lldb::RunMode stop_other_threads=lldb::eOnlyDuringStepping)
bool Suspend()
LLDB currently supports process centric debugging which means when any thread in a process stops,...
const char * GetName() const
bool GetStopDescription(lldb::SBStream &stream) const
Gets a human-readable description of why the thread stopped.
const lldb::SBThread & operator=(const lldb::SBThread &rhs)
lldb::SBFrame SetSelectedFrame(uint32_t frame_idx)
SBError UnwindInnermostExpression()
friend class SBThreadCollection
const char * GetQueueName() const
uint32_t GetIndexID() const
bool GetDescription(lldb::SBStream &description) const
static bool EventIsThreadEvent(const SBEvent &event)
lldb_private::Thread * operator->()
lldb_private::Thread * get()
void StepOutOfFrame(SBFrame &frame)
bool GetStatus(lldb::SBStream &status) const
static SBFrame GetStackFrameFromEvent(const SBEvent &event)
lldb::queue_id_t GetQueueID() const
lldb::SBFrameList GetFrames() const
bool GetInfoItemByPathAsString(const char *path, SBStream &strm)
lldb::SBFrame GetSelectedFrame()
bool operator!=(const lldb::SBThread &rhs) const
SBError StepUsingScriptedThreadPlan(const char *script_class_name)
lldb::tid_t GetThreadID() const
lldb::SBFrame GetFrameAtIndex(uint32_t idx)
uint32_t GetExtendedBacktraceOriginatingIndexID()
lldb::SBQueue GetQueue() const
bool SafeToCallFunctions()
lldb::SBProcess GetProcess()
size_t GetStopReasonDataCount()
Get the number of words associated with the stop reason.
void StepInstruction(bool step_over)
SBThread GetCurrentExceptionBacktrace()
static SBThread GetThreadFromEvent(const SBEvent &event)
bool GetStopReasonExtendedInfoAsJSON(lldb::SBStream &stream)
lldb::StopReason GetStopReason()
SBValue GetStopReturnValue()
void StepOver(lldb::RunMode stop_other_threads=lldb::eOnlyDuringStepping)
SBError JumpToLine(lldb::SBFileSpec &file_spec, uint32_t line)
SBError GetDescriptionWithFormat(const SBFormat &format, SBStream &output)
Similar to GetDescription() but the format of the description can be configured via the format parame...
SBThreadCollection GetStopReasonExtendedBacktraces(InstrumentationRuntimeType type)
SBValue GetCurrentException()
void SetThread(const lldb::ThreadSP &lldb_object_sp)
lldb::ThreadSP GetSP() const
SBThread GetExtendedBacktraceThread(const char *type)
lldb::ExecutionContextRefSP m_opaque_sp
void RunToAddress(lldb::addr_t addr)
uint64_t GetStopReasonDataAtIndex(uint32_t idx)
Get information associated with a stop reason.
SBError ReturnFromFrame(SBFrame &frame, SBValue &return_value)
bool operator==(const lldb::SBThread &rhs) const
SBError StepOverUntil(lldb::SBFrame &frame, lldb::SBFileSpec &file_spec, uint32_t line)
lldb::ValueObjectSP GetSP() const
Same as the protected version of GetSP that takes a locker, except that we make the locker locally in...
A section + offset based address range class.
A section + offset based address class.
void ResolveSymbolContext(const SourceLocationSpec &src_location_spec, lldb::SymbolContextItem resolve_scope, SymbolContextList &sc_list, RealpathPrefixes *realpath_prefixes=nullptr)
Resolve symbol contexts by file and line.
A uniqued constant string class.
const char * GetCString() const
Get the string value as a C string.
const char * AsCString(const char *value_if_empty) const
Get the string value as a C string.
Execution context objects refer to objects in the execution of the program that is being debugged.
Process * GetProcessPtr() const
Returns a pointer to the process object.
Thread * GetThreadPtr() const
Returns a pointer to the thread object.
size_t GetPath(char *path, size_t max_path_length, bool denormalize=true) const
Extract the full path to the file.
bool GetRangeContainingLoadAddress(lldb::addr_t load_addr, Target &target, AddressRange &range)
A plug-in interface definition class for debugging a process.
ThreadList & GetThreadList()
Status Resume()
Resumes all of a process's threads as configured using the Thread run control functions.
virtual SystemRuntime * GetSystemRuntime()
Get the system runtime plug-in for this process.
ThreadList & GetExtendedThreadList()
Status ResumeSynchronous(Stream *stream)
Resume a process, and wait for it to stop.
Target & GetTarget()
Get the target object pointer for this module.
"lldb/Core/SourceLocationSpec.h" A source location specifier class.
static Status FromErrorStringWithFormat(const char *format,...) __attribute__((format(printf
static Status FromErrorString(const char *str)
bool Fail() const
Test for error condition.
const char * AsCString(const char *default_error_str="unknown error") const
Get the error string associated with the current error.
static Status FromError(llvm::Error error)
Avoid using this in new code. Migrate APIs to llvm::Expected instead.
bool Success() const
Test for success condition.
static lldb::ValueObjectSP GetReturnValueObject(lldb::StopInfoSP &stop_info_sp)
A stream class that can stream formatted output to a file.
size_t PutCString(llvm::StringRef cstr)
Output a C string to the stream.
std::shared_ptr< Dictionary > DictionarySP
std::shared_ptr< Object > ObjectSP
Defines a list of symbol context objects.
Defines a symbol context baton that can be handed other debug core functions.
llvm::Error GetAddressRangeFromHereToEndLine(uint32_t end_line, AddressRange &range)
Function * function
The Function for a given query.
CompileUnit * comp_unit
The CompileUnit for a given query.
LineEntry line_entry
The LineEntry for a given query.
A plug-in interface definition class for system runtimes.
virtual lldb::ThreadSP GetExtendedBacktraceThread(lldb::ThreadSP thread, ConstString type)
Return a Thread which shows the origin of this thread's creation.
A Lockable handle over a Target's API mutex, returned by Target::GetAPIMutex() and backing the public...
Debugger & GetDebugger() const
void AddThread(const lldb::ThreadSP &thread_sp)
bool SetSelectedThreadByID(lldb::tid_t tid, bool notify=false)
void SetOkayToDiscard(bool value)
bool SetIsControllingPlan(bool value)
static const ThreadEventData * GetEventDataFromEvent(const Event *event_ptr)
static lldb::ThreadSP GetThreadFromEvent(const Event *event_ptr)
static lldb::StackFrameSP GetStackFrameFromEvent(const Event *event_ptr)
static llvm::StringRef GetStaticBroadcasterClass()
#define LLDB_INVALID_QUEUE_ID
#define LLDB_INVALID_LINE_NUMBER
#define LLDB_INVALID_THREAD_ID
#define LLDB_INVALID_INDEX32
#define LLDB_INVALID_ADDRESS
@ DoNoSelectMostRelevantFrame
@ SelectMostRelevantFrame
A class that represents a running process on the host machine.
Log * GetLog(Cat mask)
Retrieve the Log object for the channel associated with the given log enum.
bool StateIsStoppedState(lldb::StateType state, bool must_exist)
Check if a state represents a state where the process or thread is stopped.
std::unique_ptr< T > clone(const std::unique_ptr< T > &src)
llvm::Expected< StoppedExecutionContext > GetStoppedExecutionContext(const ExecutionContextRef *exe_ctx_ref_ptr)
std::shared_ptr< lldb_private::ThreadPlan > ThreadPlanSP
std::shared_ptr< lldb_private::Queue > QueueSP
std::shared_ptr< lldb_private::StackFrame > StackFrameSP
std::shared_ptr< lldb_private::Thread > ThreadSP
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP
@ eStateSuspended
Process or thread is in a suspended state as far as the debugger is concerned while other processes o...
@ eStateRunning
Process or thread is running and can't be examined.
std::shared_ptr< lldb_private::Process > ProcessSP
InstrumentationRuntimeType
@ eStepTypeInto
Single step into a specified context.
@ eStepTypeTraceOver
Single step one instruction, stepping over.
@ eStepTypeTrace
Single step one instruction.
@ eStepTypeOut
Single step out a specified context.
@ eStepTypeOver
Single step over a specified context.
std::shared_ptr< lldb_private::StopInfo > StopInfoSP
StopReason
Thread stop reasons.
@ eStructuredDataTypeFloat
@ eStructuredDataTypeDictionary
@ eStructuredDataTypeInteger
@ eStructuredDataTypeNull
@ eStructuredDataTypeBoolean
@ eStructuredDataTypeString
std::shared_ptr< lldb_private::StackFrameList > StackFrameListSP
bool IsValid() const
Check if a line entry object is valid.
AddressRange range
The section offset address range for this line entry.
const FileSpec & GetFile() const
Helper to access the file.
A wrapper class representing an execution context with non-null Target and Process pointers,...
TargetAPIMutex AllowResume()
Clears this context, unlocking the ProcessRunLock and returning the locked API lock,...