This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GDB/MI design question re: Ada exception catchpoints


Hello all,

One of the guys at AdaCore would like to use CDT, and noticed that
some normal CDT notifications do not get triggered when the program
hits an Ada exception catchpoint.  We narrowed down the issue to
the fact that we don't emit the stop reason:

(gdb)
~"\nCatchpoint 2, unhandled CONSTRAINT_ERROR at "
*stopped,frame={addr="0x080497f2",func="test",args=[],file="/[...]/test.adb",fullname="/[...]/test.adb",line="21"},thread-id="1",stopped-threads="all",core="1"
(gdb)

In fact, looking deeper, we get the above, because, well, the
"print_it" routine for Ada exception catchpoints does little more
than `printf ("Catchpoint %d, %s at")', thus not handling the MI case
at all.

But once I rewrote a bit the code to follow what other breakpoint
"print_it" routines do, I now get the following output:

(gdb)
*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame={addr="0x0000000000402062",func="foo",args=[],file="foo.adb",fullname="/[...]/foo.adb",line="3"},thread-id="1",stopped-threads="all",core="3"

The front-end no longer has as much information as before.
The fact that we've just hit an exception catchpoint can probably
be deduced from the breakpoint number.  But we are missing the
exception name.

I think that it would be sufficient to add an extra field providing
that exception name:

*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",exception-name="CONSTRAINT_ERROR",frame={addr="0x0000000000402062",func="foo",args=[],file="foo.adb",fullname="/[...]/foo.adb",line="3"},thread-id="1",stopped-threads="all",core="3"

If the field is missing, it means that we were unable to determine
that exception name (in the CLI, we print "exception" instead of
"CONSTRAINT_ERROR").

Would that be OK? I don't want to change the current code until
we address this issue, because CDT apparently works around the
current situation by parsing the contents of the console stream
output (the `~"..."' stuff).

-- 
Joel


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]