C ++ эквивалент библиотеки трассировки Python - PullRequest
8 голосов
/ 04 марта 2011

Мне нужно получить несколько библиотек / инструментов для отладки, чтобы отслеживать информацию стека, выводимую на стандартный вывод.

Библиотека Python traceback может быть примером.

Что может быть C ++ эквивалентом библиотеки трассировки Python?

Ответы [ 5 ]

2 голосов
/ 04 марта 2011

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

Это не автономное решение, поскольку он является частью большего движка, но код полезен:

Это включает в себя возврат с указателем кадра с помощью gcc, если он доступен, и эвристический возврат, когда его нет;это может привести к ложным записям в трассировке, но для получения обратной трассировки для отчета о сбое гораздо лучше, чем полностью потерять трассировку.

В этих каталогах есть другой связанный код, на который вы бы хотели взглянутьиспользовать этот код (поиск символов, обработка сигналов);эти ссылки являются хорошей отправной точкой.

1 голос
/ 24 марта 2013

Там теперь cpp-traceback , это точно трассировки в стиле Python для C ++.

1 голос
/ 04 марта 2011

Попробуйте google core dumper , он даст вам дамп ядра, когда вам это нужно.

0 голосов
/ 04 марта 2011

Если вы хотите получить «трассировку стека» в случае сбоя, попробуйте « google breakpad '

0 голосов
/ 04 марта 2011

Я имел успех с libunwind в прошлом.Я знаю, что это хорошо работает с Linux, но не уверен, как Windows, хотя он претендует на переносимость.

...