Библиотека для регистрации стека вызовов во время выполнения (Windows / Linux) - PullRequest
9 голосов
/ 03 октября 2011

Мне нужен способ записи трассировки стека функций в журнале отладки, чтобы помочь мне диагностировать дефект.Проблема в том, что мне нужно реализовать это в Windows и Linux с использованием C ++.

После небольшого исследования я обнаружил, что:

  • Для реализации Windows я могу использовать StackWalk64 Функция API и семейство.
  • В Linux я нашел libunwind , который звучит великолепно.
  • Или я могу использовать backtrace * glibc
* 1018Перед тем, как приступить к работе, мне нужен совет, если это правильный путь, и спросить, есть ли уже написанная многоплатформенная библиотека, которая может помочь.Я подозреваю, что я не первый программист, которому это нужно.:)

Ответы [ 3 ]

3 голосов
/ 03 октября 2011

Google Breakpad обрабатывает все это за вас, если вы хотите получить аварийные дампы с поля.

2 голосов
/ 03 октября 2011

Я написал 2 статьи на эту тему, в том числе Googles Breakpad, а также очень тонкий самописный подход, который работает для Windows и Linux:

Отладка после смерти - http://drdobbs.com/tools/185300443

Повторная отладка после смерти - http://drdobbs.com/architecture-and-design/227900186

1 голос
/ 03 октября 2011

Несколько лет назад я написал это: http://drdobbs.com/cpp/191100567

В основном некоторые макросы регистрируют место, где происходит раскрутка стека при возникновении исключения.

Обновленная версия платформы может бытьнайдено в библиотеке Imebra (http://imebra.com)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...