This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA]: error_silent for use in pending breakpoint support
- From: Andrew Cagney <cagney at gnu dot org>
- To: Jeff Johnston <jjohnstn at redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com,Elena Zannoni <ezannoni at redhat dot com>
- Date: Sun, 11 Jan 2004 15:46:00 -0500
- Subject: Re: [RFA]: error_silent for use in pending breakpoint support
- References: <3FE21F2B.3030104@redhat.com>
To properly support pending breakpoints, gdb needs to be able to suppress the "not found" messages at will, but it also needs to sometimes issue these messages and determine the cause of the error was a "not found" event.
To handle the problem, I propose two new useful functions in utils.c. The first is error_silent() which works just like error(), only it does not issue the error message. Like error(), it stores the error message in gdb_lasterr. This leads to the other new function: error_last_output() which is used to output the last error message.
This allows the pending breakpoint support to issue the error message when the user is doing the initial break command and to suppress it when shared libraries are being loaded or a pending breakpoint is reenabled.
(I noticed this mentioned linespec so left it, it's really more of a
change to utils though).
What does the stack look like at the point where error_silent is being
called?
I'm thinking that something more like:
catch_exception_error (....., &error_mesg);
with
throw_error (message, ...) // silent
or
catch_exception_silently (..., &error_mesg);
with
error (message, ...)
would be better. With that it should be possible to avoid the stateful
error_last_output interface. I think this would also be better long
term as it should lend itself to the recursive case (where an error is
being propogated up the stack).
Andrew