> On Jun 25, 2015, at 10:36 AM, Eugene Birukov <eugen...@hotmail.com> wrote: > > Hi, > > I am running on Linux Ubuntu 14.04 with lldb-4.7 I built from sources about a > month ago. > > My C++ debugger does pretty much the following: > • Initializes LLDB, sets it to async mode > • Gets listener from debugger, subscribes for process and target events > • Sets a few breakpoints > • Waits for event on the listener > • If event is a process event > • If event type is eBroadcastBitSTDOUT or eBroadcastBitSTERR > • call SBDebugger::HandleProcessEvent() to get it > printed > • else if process state is eStateStopped > • scan all the target threads and checks their stop > reason, registers, etc. > • call SBProcess::Continue() > • Loop to 4 > > Now, the program behavior varies - so it might be I am doing something > wrong... > > One version of the program always gets stray stopped event in the very > beginning after reporting several module loads. In this case it has only one > thread yet and the thread stop reason is eStopReasonNone. when it happens, I > have to skip calling SBProcess::Continue() - i.e. just ignore this event as > if the target state was eStateRunning and reissue wait for event. This is a > bit annoying but detection and workaround are simple.
You must check to see if a eStateStopped event was restarted: lldb::SBEvent event = ...; // Get event somehow lldb::StateType state = SBProcess::GetStateFromEvent(event); if (state == eStateStopped) { if (SBProcess::GetRestartedFromEvent (event)) { // Ignore this eStateStopped event, as the process already continued } else { // Process the stop event. } } > > Another version of the program does not subscribe for target events. It often > works smooth, but once in a while gets stray stopped event and the thread > state is eStopReasonTrace. I should not call SBProcess::Continue() in this > case too. Now the problem is that I do turn on tracing sometimes, and if it > is genuine trace event I have to call continue. > > Any advice - how to investigate this problem - if it is my bug or something > in LLDB? Check for restarted events and let me know if you still see problems after you ignore restarts... Greg Clayton _______________________________________________ lldb-dev mailing list lldb-dev@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev