Thanks, this was exactly what I was looking for Eran
On Thu, Apr 17, 2014 at 10:39 PM, Greg Clayton <[email protected]> wrote: > When doing multi-threaded debugging, you might have more than one thread > that is stopped due to a signal, breakpoint, watchpoint etc. You you must > ask the threads for their stop reason. A process doesn't stop for a reason, > but threads do. > > So you need to iterate through the threads: > > uint32_t num_threads = process.GetNumThreads(); > > for (uint32_t i=0; i<num_threads; ++i) > { > SBThread thread = process.GetThreadAtIndex(i); > > > Then ask each thread for its stop reason: > > lldb::StopReason stop_reason = thread.GetStopReason(); > > Then based on the thread stop reason, you can then query for more detailed > info based on what "stop_reason" is: > > /// Get the number of words associated with the stop reason. > /// See also GetStopReasonDataAtIndex(). > size_t > SBThread::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 > /// eStopReasonPlanComplete 0 > > //-------------------------------------------------------------------------- > uint64_t > SBThread::GetStopReasonDataAtIndex(uint32_t idx); > > > > On Apr 17, 2014, at 11:49 AM, Eran Ifrah <[email protected]> wrote: > > > Hi, > > > > How do I obtain the exact reason of the process stop state? > > > > Atm, I have a background thread that calls "m_listener.WaitForEvent(..)" > once an event arrives > > it extracts the process state from the event using the following method: > > > > lldb::StateType state = m_process.GetStateFromEvent( event ); > > > > And I handle it accordingly. > > However, if a process state is lldb::eStateStopped > > I would like to know the reason why, e.g. 'Breakpoint Hit', 'SIGSEGV' > etc > > > > Any advice? > > > > -- > > Eran Ifrah > > Author of codelite, a cross platform open source C/C++ IDE: > http://www.codelite.org > > wxCrafter, a wxWidgets RAD: http://wxcrafter.codelite.org > > _______________________________________________ > > lldb-dev mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev > > -- Eran Ifrah Author of codelite, a cross platform open source C/C++ IDE: http://www.codelite.org wxCrafter, a wxWidgets RAD: http://wxcrafter.codelite.org
_______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
