Это зависит от платформы, а также зависит от того, как вы компилируете код.Если вы компилируете код с помощью gcc, используя -fomit-frame-pointer
, очень трудно получить полезную обратную трассировку, обычно требующую эвристики.Если вы используете какие-либо библиотеки, использующие этот флаг, вы также столкнетесь с проблемами - это часто используется для сильно оптимизированных библиотек (например, библиотеки nVidia OpenGL).
Это не автономное решение, поскольку он является частью большего движка, но код полезен:
Это включает в себя возврат с указателем кадра с помощью gcc, если он доступен, и эвристический возврат, когда его нет;это может привести к ложным записям в трассировке, но для получения обратной трассировки для отчета о сбое гораздо лучше, чем полностью потерять трассировку.
В этих каталогах есть другой связанный код, на который вы бы хотели взглянутьиспользовать этот код (поиск символов, обработка сигналов);эти ссылки являются хорошей отправной точкой.