Для Windows проверьте API StackWalk64 () (также в 32-битной Windows). Для UNIX вы должны использовать собственный способ ОС или сделать возврат к glibc backtrace (), если таковой имеется.
Однако обратите внимание, что использование Stacktrace в нативном коде редко является хорошей идеей - не потому, что это невозможно, а потому, что вы обычно пытаетесь достичь неправильного результата.
В большинстве случаев люди пытаются получить стековую трассировку, скажем, в исключительных обстоятельствах, например, при обнаружении исключения, сбое утверждения или - худшем и наиболее неправильном из них - когда вы получаете фатальное «исключение» или сигнал, как нарушение сегментации.
Учитывая последнюю проблему, большинство API потребует от вас явного выделения памяти или может сделать это внутренне. Выполнение этого в хрупком состоянии, в котором ваша программа может находиться в данный момент, может на самом деле ухудшить ситуацию. Например, отчет о сбое (или coredump) не будет отражать фактическую причину проблемы, но ваша неудачная попытка ее устранить).
Я предполагаю, что вы пытаетесь достичь этой фатальной обработки ошибок, поскольку большинство людей, кажется, пытаются это сделать, когда дело доходит до получения трассировки стека. Если это так, я бы положился на отладчик (во время разработки) и запуск процесса coredump (или мини-дамп на окнах). Вместе с надлежащим управлением символами у вас не должно возникнуть проблем с выяснением вызывающей инструкции после смерти.