From: Joel Brobecker <brobecker@gnat.com>
To: gdb-patches@sources.redhat.com
Subject: Re: [RFC] Unexpected automatic language switch - get_frame_language()
Date: Wed, 10 Dec 2003 19:16:00 -0000 [thread overview]
Message-ID: <20031210191614.GK1296@gnat.com> (raw)
In-Reply-To: <20031210182008.GA21929@nevyn.them.org>
[quick reply before I run to catch my flight]
> You may want to look in the archives for the breakpoint_ops and catch
> exception patches I posted earlier this year; they're broader but do
> essentially the same thing.
Wildo.
> Personally I don't like this "language dependent breakpoint syntax"
> idea. Here's one reason why: judging from your implementation I bet
> that a breakpoint on the starting instruction of the exception raising
> function will cause this magic to happen.
I don't think so, because we actually also added a field in the
breakpoint structure that says whether the breakpoint is an exception
breakpoint or not. So what happens is that we only try to walk up the
stack only if that flag is set.
I should have mentionned that in my previous message, my bad.
Incidentally, this makes our change a bit more intrusive than it
actually looks from my previous message. Given yours and Andrew's
feedback, I am sold on the "catch" approach, but I need to discuss this
within ACT. We do have a backward compatibilty problem, since this
command has been used for a long time by our users, now... In any case,
this is orthogonal to how this will be supported by the FSF version
of GDB, so it's not something for you to worry about, our problem.
> With "catch exception" that information is stored at a higher level,
> so you can break *0x08010102 and _not_ have GDB try to walk up a
> couple of frames.
Same for Ada exception breakpoints.
> > Yes, here is what happens when hitting an exception breakpoint:
> >
> > Breakpoint 1, CONSTRAINT_ERROR at 0x08049457 in a () at a.adb:3
> > 3 raise Constraint_Error;
> > (gdb) bt
> > #0 <__gnat_raise_nodefer_with_msg> (e=0x80548f8) at a-except.adb:863
> > #1 0x0804bdce in ada.exceptions.raise_with_location_and_msg (e=0x80548f8,
> > f=0x804fee7, l=3, m=0x80510cb) at a-except.adb:977
> > #2 0x0804bc7d in <__gnat_raise_constraint_error_msg> (file=0x804fee7, line=3,
> > msg=0x80510cb) at a-except.adb:853
> > #3 0x0804bee9 in <__gnat_rcheck_04> (file=0x804fee7, line=3)
> > at a-except.adb:1041
> > #4 0x08049457 in a () at a.adb:3
> > #5 0x0804942d in main (argc=1, argv=(system.address) 0xbffffa14,
> > envp=(system.address) 0xbffffa1c) at b~a.adb:109
>
> Hmm, that's quite nice.
Thanks :)
--
Joel
next prev parent reply other threads:[~2003-12-10 19:16 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-05 22:48 Joel Brobecker
2003-12-05 23:57 ` Michael Snyder
2003-12-06 0:18 ` Joel Brobecker
2003-12-06 0:28 ` Andrew Cagney
2003-12-10 1:50 ` Joel Brobecker
2003-12-10 16:14 ` Andrew Cagney
2003-12-10 17:42 ` Joel Brobecker
2003-12-06 0:42 ` Michael Snyder
2003-12-10 17:47 ` Daniel Jacobowitz
2003-12-10 18:10 ` Joel Brobecker
2003-12-10 18:20 ` Daniel Jacobowitz
2003-12-10 19:16 ` Joel Brobecker [this message]
2003-12-10 19:18 ` Daniel Jacobowitz
2003-12-10 18:33 ` Ada's throw/catch; Was: " Andrew Cagney
2003-12-10 19:04 ` Joel Brobecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20031210191614.GK1296@gnat.com \
--to=brobecker@gnat.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox