This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: minimalistic MI catch support
- From: Bob Rossi <bob at brasko dot net>
- To: Markus Schiltknecht <markus at bluegap dot ch>, gdb-patches at sourceware dot org
- Date: Mon, 6 Feb 2006 20:16:01 -0500
- Subject: Re: minimalistic MI catch support
- References: <1138453464.15400.9.camel@localhost.localdomain> <20060206232913.GD29510@nevyn.them.org>
On Mon, Feb 06, 2006 at 06:29:13PM -0500, Daniel Jacobowitz wrote:
> On Sat, Jan 28, 2006 at 02:04:24PM +0100, Markus Schiltknecht wrote:
> > Hello gdb hackers,
> >
> > working on an automated debugging layer on top of gdb I figured the
> > catchpoint functions in the MI interface is missing. The attached patch
> > against current CVS at least makes gdb report a catchpoint-break via MI.
> > This is already sufficient for my application. However, I would
> > appreciate a complete catchpoint implementation for the MI interface. I
> > haven't figured out how to implement the '-break-catch' command. If
> > somebody more knowledgable could do that I'd be thankfull.
> >
> > Please CC me in responses, as I'm not subscribed.
>
> For the patch, in general it's better to avoid ui_out_is_mi_like_p when
> we can. Because the text outputs are ignored in non-MI mode, this is
> usually pretty easy; see the attached.
Daniel, could you please explain the above in more detail. In
particular, this patch adds specific functionality when in MI mode. Why
do we care about how it acts in non-MI mode? Just curious.
> This changes from:
>
> *stopped,thread-id="0",frame={addr="0x00002aaaaaeb6462",func="fork",args=[],from="/lib/libc.so.6"}
>
> to:
>
> *stopped,reason="breakpoint-hit",bkptno="1",forked-process="6570",thread-id="0",frame={addr="0x00002aaaaaeb6462",func="fork",args=[],from="/lib/libc.so.6"}
>
> You used fork and vfork for the reasons; I'm not sure whether these
> should have separate reasons or be marked as catchpoint-hit. Bob,
> Nick, any opinions on that?
Defiantly this reason is better than the original patch. I think it would be
best if we added a new enumeration called EXEC_ASYNC_CATCHPOINT_HIT, and
returned that as the reason. In the future, we could easily return the kind
of catchpoint that was caught. For instance,
*stopped,reason="catchpoint-hit",catchpoint-kind="vfork",bkptno="1",forked-process="6570",thread-id="0",frame={addr="0x00002aaaaaeb6462",func="fork",args=[],from="/lib/libc.so.6"}
Finally, it irks me that all of the bp_catch_* commands are not being
implemented in this patch. I see these enumeration values:
bp_catch_load,
bp_catch_unload,
bp_catch_fork,
bp_catch_vfork,
bp_catch_exec,
bp_catch_catch,
bp_catch_throw
I would really like to see a patch that supports all of these cases, or
none. It's just confusing to FE's to have 2/7'ths of the case's
implemented.
If no one has time to do this, I will. I certainly am running thin
though.
Thanks,
Bob Rossi