"catch throw" vs. "b __cxa_throw"
Tom Kacvinsky via Gdb <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAG_eJLfUEMtrie5w+uB42m40MuP4qc0Rx+w4puv_AG73H42m3Q@mail.gmail.com> |
We happened to notice that with gdb 7.6.1, "catch throw" caught an exception (a logic_error exception from initializing a std::string with nullptr). However, with GDB 11.1 and 12.1 (I have not tested earlier versions than that), we did not break on the exception when using "catch throw". However, I was able to break when I used "b __cxa_throw" I looked in sourceware's bugzilla for a report on this, but I didn't see anything. I also perused the code and from what I could gather, "catch throw" basically mapped to setting a breakpoint on __cxa_throw. I did not figure out the logic for "catch throw" in the GDB 12.1 source. What is really odd is that "catch throw" works fine for some small examples, but the use case I have where it is not working is our full blown project (a mix of C, C++ and Ada) and I wouldn't know where to begin constructing an MRE. Any ideas as to what is going on with this? Thanks, Tom