6

I'm trying to do some semi test driven design, and occasionally when I implement a new feature, it will have an exception somewhere. All gtest tells me is what the exception is, and does not give me any backtrace information.

If I run gdb --args --gtest_catch_exceptions=0, it will stop at the test with the exception but not have any backtrace information. It simply states:

[ RUN      ] TESTNAME.test_case
EXCEPTION: exception description[Inferior 1 (process 30528) exited with code 0377]
(gdb) bt
No stack.
eengineer
  • 177
  • 2
  • 9
  • Did you compile with debug symbols? Have you tried disabling inlining to see if it cleans up a stack trace? – NicholasM Nov 14 '14 at 04:43

2 Answers2

10

Use catch throw gdb command to set special breakpoint before your exception is thrown. When it is hit you can see backtrace as usual by command bt. See https://sourceware.org/gdb/onlinedocs/gdb/Set-Catchpoints.html.

ks1322
  • 33,961
  • 14
  • 109
  • 164
3

In a more automatic way, you can add your own listener and then combine the output of failing test-cases by printing additionally the backtrace using How to make backtrace()/backtrace_symbols() print the function names?

Joseph Lisee
  • 3,439
  • 26
  • 21
sfrehse
  • 1,062
  • 9
  • 22