Date: Fri, 4 Jan 2013 12:54:03 +0000 From: David Chisnall <theraven@freebsd.org> To: Stefan Farfeleder <stefanf@freebsd.org> Cc: freebsd-current@freebsd.org Subject: Re: Unbreaking gdb's catch throw Message-ID: <8FA4D44F-0D32-4374-810F-5630E995F61F@freebsd.org> In-Reply-To: <20130104124927.GB1430@mole.fafoe.narf.at> References: <20130104123424.GA1430@mole.fafoe.narf.at> <FC255095-1EFB-4713-887E-E79C53C9F193@FreeBSD.org> <20130104124927.GB1430@mole.fafoe.narf.at>
next in thread | previous in thread | raw e-mail | index | archive | help
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). =20 >>=20 >=20 > 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. >=20 > 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=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8FA4D44F-0D32-4374-810F-5630E995F61F>