Что ты вкладываешь в понятие «stacktrace»? Можно получить адреса, из которых были вызваны функции (man backrace), затем эти адреса преобразовать в номера строк (man addr2line). А вот значения локальных переменных, аргументов и еще какой-нибудь содомии — фигушки (без серьезного «заимствования» больших объемов кода из дебаггеров).
А если исключение не моё?
Выясняешь адрес функции __cxa_throw
Делаешь туда mprotect с целью «исправить пару фатальных недостатков».
Вставляешь jump на твою функцию
В tls-переменную записываешь backtrace
Анализируешь бактрейс из tls-переменной в catch-обработчике
мы его использовали на большом проекте для телекома. были проблемы при запуске нового софта, когда ошибка могла случиться раз в несколько суток. отловить почти нереально. вот, использовали google-breakpad для мониторинга и отладки. штука хорошая. правда, под юниксом она не работает. но на линюксе всё зашибись.