Well, judging by this snippet
=====
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-  case lldb::eStateStopped:
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-    pEventType =
"eStateStopped";
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-    bOk =
HandleProcessEventStateStopped(vEvent, bShouldB
rk);
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-    if (bShouldBrk)
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-      break;
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-    LLVM_FALLTHROUGH;
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-  case lldb::eStateCrashed:
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-  case lldb::eStateSuspended:
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-    pEventType =
"eStateSuspended";
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp:    bOk =
HandleProcessEventStateSuspended(vEvent);
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp-    break;
=====

it looks like HandleProcessEventStateSuspended can be called in three cases:
1) HandleProcessEventStateStopped sets bShouldBrk to false
2) we get an eStateSuspended event
3) we get an eStateCrashed event

As I said earlier I don't believe (2) can ever happen. I haven't
looked at what can cause (1), but I am sure you can get (3) on a
Mac(*) if your process does a null pointer dereference or a similar
"crashing" action. Is there any test like that in the lldb-mi test
suite?

(*) On linux we just report this as a regular eStateStopped event with
stop_reason = SIGSEGV.

On Mon, 23 Jul 2018 at 09:38, Adrian Prantl <apra...@apple.com> wrote:
>
> Have you tried my other suggestion; doing an actual debug session with an 
> lldb-mi client (emacs/vim/vs code/eclipse)? Of that doesn't work,  I'm afraid 
> you may have to do some detective work here to figure out how to add test 
> coverage for this code path. I ssume that you already tried to create a 
> synthetic test that suspends a process and then queries the status through 
> the MI interface?
>
> -- adrian
>
> On Jul 19, 2018, at 10:14 PM, Александр Поляков <polyakov....@gmail.com> 
> wrote:
>
> I've tried to put an assert into HandleProcessEventStateSuspended, but there 
> wasn't a testcase triggering it. So, my question is still actual, any help 
> will be really appreciate.
>
> пн, 16 июл. 2018 г. в 13:56, Pavel Labath <lab...@google.com>:
>>
>> The eStateSuspended state is used for threads (you can set it via
>> SBThread::Suspend/Resume). It controls whether a "continue" operation
>> on the process will run the thread or not.
>>
>> I am not sure if you can ever see that state on the process itself.
>>
>>
>> On Sat, 14 Jul 2018 at 15:39, Adrian Prantl via lldb-dev
>> <lldb-dev@lists.llvm.org> wrote:
>> >
>> >
>> >
>> > > On Jul 13, 2018, at 10:59 PM, Александр Поляков <polyakov....@gmail.com> 
>> > > wrote:
>> > >
>> > > Hi lldb-dev,
>> > >
>> > > I'm looking at re-implementing of 
>> > > CMICmnLLDBDebugHandleEvents::HandleProcessEventStateSuspended to get rid 
>> > > of HandleCommand("process status") hack and use SB API instead. To check 
>> > > my changes I need to get HandleProcessEventStateSuspended called, so 
>> > > could someone help me with a sequence of lldb-mi commands which will 
>> > > call HandleProcessEventStateSuspended.
>> >
>> > Other than reading through the code and manually tracing a sequence where 
>> > this function gets called, one simple trick you can try is to put an 
>> > assert(false) into HandleProcessEventStateSuspended, run the testsuite (or 
>> > perform an lldb-mi debug session) and look for a testacase that triggers 
>> > the new assertion.
>> >
>> > -- adrian
>> >
>> > >
>> > > Thanks in advance.
>> > >
>> > > --
>> > > Alexander
>> >
>> > _______________________________________________
>> > lldb-dev mailing list
>> > lldb-dev@lists.llvm.org
>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
>
>
> --
> Alexander
>
>
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to