1061da546Spatrick //===-- SBThread.h ----------------------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9061da546Spatrick #ifndef LLDB_SBThreadPlan_h_ 10061da546Spatrick #define LLDB_SBThreadPlan_h_ 11061da546Spatrick 12061da546Spatrick #include "lldb/API/SBDefines.h" 13061da546Spatrick 14061da546Spatrick #include <stdio.h> 15061da546Spatrick 16061da546Spatrick namespace lldb { 17061da546Spatrick 18061da546Spatrick %feature("docstring", 19061da546Spatrick "Represents a plan for the execution control of a given thread. 20061da546Spatrick 21*be691f3bSpatrick See also :py:class:`SBThread` and :py:class:`SBFrame`." 22*be691f3bSpatrick ) SBThreadPlan; 23061da546Spatrick 24061da546Spatrick class SBThreadPlan 25061da546Spatrick { 26061da546Spatrick 27061da546Spatrick friend class lldb_private::ThreadPlan; 28061da546Spatrick 29061da546Spatrick public: 30061da546Spatrick SBThreadPlan (); 31061da546Spatrick 32061da546Spatrick SBThreadPlan (const lldb::SBThreadPlan &threadPlan); 33061da546Spatrick 34061da546Spatrick SBThreadPlan (const lldb::ThreadPlanSP& lldb_object_sp); 35061da546Spatrick 36061da546Spatrick SBThreadPlan (lldb::SBThread &thread, const char *class_name); 37061da546Spatrick 38061da546Spatrick ~SBThreadPlan (); 39061da546Spatrick 40061da546Spatrick bool 41061da546Spatrick IsValid(); 42061da546Spatrick 43061da546Spatrick bool 44061da546Spatrick IsValid() const; 45061da546Spatrick 46061da546Spatrick explicit operator bool() const; 47061da546Spatrick 48061da546Spatrick void 49061da546Spatrick Clear (); 50061da546Spatrick 51061da546Spatrick lldb::StopReason 52061da546Spatrick GetStopReason(); 53061da546Spatrick 54061da546Spatrick %feature("docstring", " 55061da546Spatrick Get the number of words associated with the stop reason. 56061da546Spatrick See also GetStopReasonDataAtIndex().") GetStopReasonDataCount; 57061da546Spatrick size_t 58061da546Spatrick GetStopReasonDataCount(); 59061da546Spatrick 60061da546Spatrick %feature("docstring", " 61061da546Spatrick Get information associated with a stop reason. 62061da546Spatrick 63061da546Spatrick Breakpoint stop reasons will have data that consists of pairs of 64061da546Spatrick breakpoint IDs followed by the breakpoint location IDs (they always come 65061da546Spatrick in pairs). 66061da546Spatrick 67061da546Spatrick Stop Reason Count Data Type 68061da546Spatrick ======================== ===== ========================================= 69061da546Spatrick eStopReasonNone 0 70061da546Spatrick eStopReasonTrace 0 71061da546Spatrick eStopReasonBreakpoint N duple: {breakpoint id, location id} 72061da546Spatrick eStopReasonWatchpoint 1 watchpoint id 73061da546Spatrick eStopReasonSignal 1 unix signal number 74061da546Spatrick eStopReasonException N exception data 75061da546Spatrick eStopReasonExec 0 76*be691f3bSpatrick eStopReasonFork 1 pid of the child process 77*be691f3bSpatrick eStopReasonVFork 1 pid of the child process 78*be691f3bSpatrick eStopReasonVForkDone 0 79061da546Spatrick eStopReasonPlanComplete 0") GetStopReasonDataAtIndex; 80061da546Spatrick uint64_t 81061da546Spatrick GetStopReasonDataAtIndex(uint32_t idx); 82061da546Spatrick 83061da546Spatrick SBThread 84061da546Spatrick GetThread () const; 85061da546Spatrick 86061da546Spatrick bool 87061da546Spatrick GetDescription (lldb::SBStream &description) const; 88061da546Spatrick 89061da546Spatrick void 90061da546Spatrick SetPlanComplete (bool success); 91061da546Spatrick 92061da546Spatrick bool 93061da546Spatrick IsPlanComplete(); 94061da546Spatrick 95061da546Spatrick bool 96061da546Spatrick IsPlanStale(); 97061da546Spatrick 98*be691f3bSpatrick %feature("docstring", "Return whether this plan will ask to stop other threads when it runs.") GetStopOthers; 99*be691f3bSpatrick bool 100*be691f3bSpatrick GetStopOthers(); 101*be691f3bSpatrick 102*be691f3bSpatrick %feature("docstring", "Set whether this plan will ask to stop other threads when it runs.") GetStopOthers; 103*be691f3bSpatrick void 104*be691f3bSpatrick SetStopOthers(bool stop_others); 105*be691f3bSpatrick 106061da546Spatrick SBThreadPlan 107061da546Spatrick QueueThreadPlanForStepOverRange (SBAddress &start_address, 108061da546Spatrick lldb::addr_t range_size); 109061da546Spatrick 110061da546Spatrick SBThreadPlan 111061da546Spatrick QueueThreadPlanForStepInRange (SBAddress &start_address, 112061da546Spatrick lldb::addr_t range_size); 113061da546Spatrick 114061da546Spatrick SBThreadPlan 115061da546Spatrick QueueThreadPlanForStepOut (uint32_t frame_idx_to_step_to, bool first_insn = false); 116061da546Spatrick 117061da546Spatrick SBThreadPlan 118061da546Spatrick QueueThreadPlanForRunToAddress (SBAddress address); 119061da546Spatrick 120061da546Spatrick SBThreadPlan 121061da546Spatrick QueueThreadPlanForStepScripted(const char *script_class_name); 122061da546Spatrick 123061da546Spatrick SBThreadPlan 124061da546Spatrick QueueThreadPlanForStepScripted(const char *script_class_name, 125061da546Spatrick SBError &error); 126061da546Spatrick SBThreadPlan 127061da546Spatrick QueueThreadPlanForStepScripted(const char *script_class_name, 128061da546Spatrick SBStructuredData &args_data, 129061da546Spatrick SBError &error); 130061da546Spatrick 131061da546Spatrick 132061da546Spatrick protected: 133061da546Spatrick friend class SBBreakpoint; 134061da546Spatrick friend class SBBreakpointLocation; 135061da546Spatrick friend class SBFrame; 136061da546Spatrick friend class SBProcess; 137061da546Spatrick friend class SBDebugger; 138061da546Spatrick friend class SBValue; 139061da546Spatrick friend class lldb_private::QueueImpl; 140061da546Spatrick friend class SBQueueItem; 141061da546Spatrick 142061da546Spatrick private: 143061da546Spatrick lldb::ThreadPlanSP m_opaque_sp; 144061da546Spatrick }; 145061da546Spatrick 146061da546Spatrick } // namespace lldb 147061da546Spatrick 148061da546Spatrick #endif // LLDB_SBThreadPlan_h_ 149