I want to inform you about an open source release, libcsdbg that is easy to interface at your code and gives you an easy, transparent way to create/output exception stack traces, and generic stack traces for the executable and its linked dso. I give you its release description:
libcsdbg, linked with C++ code and using GNU g++ on a POSIX platform, transparently simulates the call stack of all executing threads with minimum overhead. When an exception is thrown, the user can print a stack trace (similar to the Java exception.printStackTrace() method) at any place in the code (most usually in the catch sections). The trace is the path the exception propagated through, unwinding the stack from the throw point up to the point where it was caught and handled, detailed with addr2line-like information. The library transparently loads the symbol tables of the executable and any chosen dynamic libraries, demangles function symbols to complete signatures, and binds function names to addresses (even for DSO). Finally, it provides views of the call stacks of all threads at any time. This is particularly useful in cases of fatal errors before the program aborts/exits, such as segmentation faults. libcsdbg can also be used as the base for your instrumentation code.
You may want to use it to really estimate the features that it brings in C++ debugging. Here's the link for the latest stable version: