Re: Unbreaking gdb's catch throw

From: David Chisnall <theraven_at_freebsd.org>
Date: Fri, 4 Jan 2013 12:54:03 +0000
On 4 Jan 2013, at 12:49, Stefan Farfeleder wrote:

> On Fri, Jan 04, 2013 at 12:38:44PM +0000, David Chisnall wrote:
>> Is this on 9.1?  In -CURRENT and 9.1, libstdc++ is a filter library, and libsupc++ or or libcxxrt are the filtee.  This means that the __cxa_throw symbol appears to be in libstdc++ (for symbol versioning purposes), but is actually in the ABI library.  If you tell gdb to put the breakpoint on __cxa_throw itself, then it should tell you that there are multiple definitions and ask which one you want (if it doesn't, it's a gdb bug).  
>> 
> 
> This is on 10.0-CURRENT r244738 amd64. The commands 'b __cxa_throw' and
> 'catch throw' seemd to be identical, and gdb does not ask about multiple
> versions of __cxa_throw.
> 
> To be honest, I don't care exactly whose bug it is, I want it to work again :D

As a work-around, you can put the breakpoint on _Unwind_RaiseException instead.  This will work for any language, not just C++ (e.g. it will notice Objective-C or gcj-compiled Java exceptions).

David
Received on Fri Jan 04 2013 - 11:54:12 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:33 UTC