[lldb-dev] non-stop mode with lldb-mi?

Ted Woodward via lldb-dev lldb-dev at lists.llvm.org
Fri Feb 3 11:53:13 PST 2017


I think the remote stub only sends extra stop replies in response to a vStopped packet. Here is a stop for 2 threads hitting a common breakpoint:

<  51> send packet: $vCont;c:10b6;c:10f8;c:00b3;c:00b2;c:00b1;c:00b0#e0
<   1> read packet: +
<   6> read packet: $OK#9a
<   1> send packet: +
<  58> read packet: %Stop:T052a:c8f4f5e0;1e:90de101b;1d:48dd101b;thread:af;#1d
<   1> send packet: +
<  12> send packet: $vStopped#55
<   1> read packet: +
<  53> read packet: $T052a:c8f4f5e0;1e:309c101b;1d:e89a101b;thread:b0;#d8
<   1> send packet: +
<  12> send packet: $vStopped#55
<   1> read packet: +
<   6> read packet: $OK#9a

So we won't get any spurious stops in the middle of processing.

"Experimental feature, not tested" is noted - I'll mention that in my meeting today.

--
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project


> -----Original Message-----
> From: jingham at apple.com [mailto:jingham at apple.com]
> Sent: Friday, February 03, 2017 1:22 PM
> To: Ted Woodward <ted.woodward at codeaurora.org>
> Cc: Greg Clayton <gclayton at apple.com>; LLDB <lldb-dev at lists.llvm.org>
> Subject: Re: [lldb-dev] non-stop mode with lldb-mi?
> 
> 
> > On Feb 3, 2017, at 10:51 AM, Ted Woodward
> <ted.woodward at codeaurora.org> wrote:
> >
> > I'm working on plumbing the existing non-stop mode switch (target.non-
> stop-mode) to lldb-mi, to give Eclipse access to non-stop mode.
> >
> > The remote OS is very thread-heavy, and the remote stub doesn't limit the
> debugger to the current process - because there isn't one, from the stub's
> point of view. Just a collection of threads. In all-stop mode, if a 2nd thread
> hits a breakpoint, it will send back a 2nd stop reply, which confuses lldb
> (rightly so). In non-stop mode, it handles things correctly. So we'll just have
> to live with the possible missed breakpoint issue.
> 
> We tried to keep the possibility of a non-stop mode in mind when designing
> lldb, but I know there are places in lldb at present that assume that if you get
> a "stop" event you won't get another stop event till lldb issues a run.  We try
> not to fall over completely if we get events we don't expect, but we're more
> likely to just discard them than do the right thing.  There also don't appear to
> be any tests running programs in non-stop mode and exercising their
> behavior, so any extent to which it works will be accidental and unstable.
> 
> Seems like this is an experimental feature at best, and should be marked as
> such.
> 
> Jim
> 
> >
> > --
> > Qualcomm Innovation Center, Inc.
> > The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> > a Linux Foundation Collaborative Project
> >
> >
> >> -----Original Message-----
> >> From: jingham at apple.com [mailto:jingham at apple.com]
> >> Sent: Friday, February 03, 2017 10:58 AM
> >> To: Greg Clayton <gclayton at apple.com>
> >> Cc: Ted Woodward <ted.woodward at codeaurora.org>; LLDB <lldb-
> >> dev at lists.llvm.org>
> >> Subject: Re: [lldb-dev] non-stop mode with lldb-mi?
> >>
> >>
> >>> On Feb 3, 2017, at 8:45 AM, Greg Clayton via lldb-dev <lldb-
> >> dev at lists.llvm.org> wrote:
> >>>
> >>> Non-stop mode is a huge change to the core of LLDB isn’t it. I think
> >>> you
> >> might think this is easier than it actually is to enable in LLDB?
> >>>
> >>> Is non-stop mode where you can leave some threads running while
> >>> others
> >> are stopped? The biggest issue with this is to do it right we need to
> >> be able to emulate instructions so that if 3 threads hit breakpoints,
> >> we would need to emulate the instruction that used to be at the
> >> breakpoint in LLDB since we can’t remove the breakpoint (unless you
> >> stop the other threads which defeats the purpose of non-stop mode)
> >> without the other 2 threads possibly missing the breakpoint while you
> >> disable breakpoint, single step, enable breakpoint.
> >>
> >> That is just one of the many things that will have to be changed to
> >> support non-stop mode.  For now, non-stop mode is only likely to work
> >> reliably if the threads you are allowing to run never stop - hit
> >> breakpoints, crash or whatever - so worrying about missing breakpoints is
> a second order problem.
> >>
> >> Anyway, even as it is it has some utility - presumably you're using
> >> it because you have some threads in your program that can't stop, so
> >> you're not likely to want them to hit breakpoints anyway...  But the
> >> current help text for the non-stop setting should probably include some
> appropriate caveats.
> >>
> >> Jim
> >>
> >>
> >>>
> >>> Greg
> >>>
> >>>> On Feb 3, 2017, at 7:54 AM, Ted Woodward via lldb-dev <lldb-
> >> dev at lists.llvm.org> wrote:
> >>>>
> >>>> That turns on and off async, but not non-stop.
> >>>>
> >>>> I’m working on adding support for –gdb-set and –gdb-show non-stop,
> >> and will post my changes on phabricator when I’m done.
> >>>>
> >>>> --
> >>>> Qualcomm Innovation Center, Inc.
> >>>> The Qualcomm Innovation Center, Inc. is a member of Code Aurora
> >> Forum, a Linux Foundation Collaborative Project
> >>>>
> >>>> From: Ilia K [mailto:ki.stfu at gmail.com]
> >>>> Sent: Wednesday, February 01, 2017 11:13 PM
> >>>> To: Ted Woodward <ted.woodward at codeaurora.org>
> >>>> Cc: LLDB <lldb-dev at lists.llvm.org>
> >>>> Subject: Re: [lldb-dev] non-stop mode with lldb-mi?
> >>>>
> >>>> Please check `-gdb-set target.async` option. Probably that's what
> >>>> you
> >> need.
> >>>>
> >>>> On Thu, Feb 2, 2017 at 1:44 AM, Ted Woodward via lldb-dev <lldb-
> >> dev at lists.llvm.org> wrote:
> >>>>> Does lldb-mi support non-stop mode?
> >>>>>
> >>>>> If so, is there a way to set it besides “settings set
> >>>>> target.non-stop-mode
> >> true”?
> >>>>>
> >>>>> --
> >>>>> Qualcomm Innovation Center, Inc.
> >>>>> The Qualcomm Innovation Center, Inc. is a member of Code Aurora
> >> Forum, a Linux Foundation Collaborative Project
> >>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> lldb-dev mailing list
> >>>>> lldb-dev at lists.llvm.org
> >>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> - Ilia
> >>>> _______________________________________________
> >>>> lldb-dev mailing list
> >>>> lldb-dev at lists.llvm.org
> >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> >>>
> >>> _______________________________________________
> >>> lldb-dev mailing list
> >>> lldb-dev at lists.llvm.org
> >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> >
> >




More information about the lldb-dev mailing list