| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- //===-- SBThreadPlan.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_SBTHREADPLAN_H
- #define LLDB_API_SBTHREADPLAN_H
- #include "lldb/API/SBDefines.h"
- #include <cstdio>
- namespace lldb {
- class LLDB_API SBThreadPlan {
- public:
- SBThreadPlan();
- SBThreadPlan(const lldb::SBThreadPlan &threadPlan);
- SBThreadPlan(const lldb::ThreadPlanSP &lldb_object_sp);
- SBThreadPlan(lldb::SBThread &thread, const char *class_name);
- SBThreadPlan(lldb::SBThread &thread, const char *class_name,
- lldb::SBStructuredData &args_data);
- ~SBThreadPlan();
- explicit operator bool() const;
- bool IsValid() const;
- void Clear();
- lldb::StopReason GetStopReason();
- /// Get the number of words associated with the stop reason.
- /// See also GetStopReasonDataAtIndex().
- size_t GetStopReasonDataCount();
- /// Get information associated with a stop reason.
- ///
- /// Breakpoint stop reasons will have data that consists of pairs of
- /// breakpoint IDs followed by the breakpoint location IDs (they always come
- /// in pairs).
- ///
- /// Stop Reason Count Data Type
- /// ======================== ===== =========================================
- /// eStopReasonNone 0
- /// eStopReasonTrace 0
- /// eStopReasonBreakpoint N duple: {breakpoint id, location id}
- /// eStopReasonWatchpoint 1 watchpoint id
- /// eStopReasonSignal 1 unix signal number
- /// eStopReasonException N exception data
- /// eStopReasonExec 0
- /// eStopReasonFork 1 pid of the child process
- /// eStopReasonVFork 1 pid of the child process
- /// eStopReasonVForkDone 0
- /// eStopReasonPlanComplete 0
- uint64_t GetStopReasonDataAtIndex(uint32_t idx);
- SBThread GetThread() const;
- const lldb::SBThreadPlan &operator=(const lldb::SBThreadPlan &rhs);
- bool GetDescription(lldb::SBStream &description) const;
- void SetPlanComplete(bool success);
- bool IsPlanComplete();
- bool IsPlanStale();
- bool IsValid();
- bool GetStopOthers();
- void SetStopOthers(bool stop_others);
- // This section allows an SBThreadPlan to push another of the common types of
- // plans...
- SBThreadPlan QueueThreadPlanForStepOverRange(SBAddress &start_address,
- lldb::addr_t range_size);
- SBThreadPlan QueueThreadPlanForStepOverRange(SBAddress &start_address,
- lldb::addr_t range_size,
- SBError &error);
- SBThreadPlan QueueThreadPlanForStepInRange(SBAddress &start_address,
- lldb::addr_t range_size);
- SBThreadPlan QueueThreadPlanForStepInRange(SBAddress &start_address,
- lldb::addr_t range_size,
- SBError &error);
- SBThreadPlan QueueThreadPlanForStepOut(uint32_t frame_idx_to_step_to,
- bool first_insn = false);
- SBThreadPlan QueueThreadPlanForStepOut(uint32_t frame_idx_to_step_to,
- bool first_insn, SBError &error);
- SBThreadPlan QueueThreadPlanForRunToAddress(SBAddress address);
- SBThreadPlan QueueThreadPlanForRunToAddress(SBAddress address,
- SBError &error);
- SBThreadPlan QueueThreadPlanForStepScripted(const char *script_class_name);
- SBThreadPlan QueueThreadPlanForStepScripted(const char *script_class_name,
- SBError &error);
- SBThreadPlan QueueThreadPlanForStepScripted(const char *script_class_name,
- lldb::SBStructuredData &args_data,
- SBError &error);
- private:
- friend class SBBreakpoint;
- friend class SBBreakpointLocation;
- friend class SBFrame;
- friend class SBProcess;
- friend class SBDebugger;
- friend class SBValue;
- friend class lldb_private::QueueImpl;
- friend class SBQueueItem;
- lldb::ThreadPlanSP GetSP() const { return m_opaque_wp.lock(); }
- lldb_private::ThreadPlan *get() const { return GetSP().get(); }
- void SetThreadPlan(const lldb::ThreadPlanSP &lldb_object_sp);
- lldb::ThreadPlanWP m_opaque_wp;
- };
- } // namespace lldb
- #endif // LLDB_API_SBTHREADPLAN_H
|