C++ display stack trace on exception

Andrew Grant’s answer does not help getting a stack trace of the throwing function, at least not with GCC, because a throw statement does not save the current stack trace on its own, and the catch handler won’t have access to the stack trace at that point any more.

The only way – using GCC – to solve this is to make sure to generate a stack trace at the point of the throw instruction, and save that with the exception object.

This method requires, of course, that every code that throws an exception uses that particular Exception class.

Update 11 July 2017: For some helpful code, take a look at cahit beyaz’s answer, which points to http://stacktrace.sourceforge.net – I haven’t used it yet but it looks promising.

Leave a Comment