2013-06-02 9 views
1

Я пишу плагин (в основном dll) для 3D-приложения, и иногда происходят сбои. Иногда их очень сложно найти, и я хотел бы потратить некоторое время на создание (или интеграцию существующего) регистратора сбоя, который будетC++ простой журнал аварийных сообщений

  1. Дайте мне трассировку стека.
  2. Дайте мне список локальных переменных.
  3. Сбросьте эти элементы в файл или загрузите их в заданный URL.

До сих пор я смотрел Google breakpad, но понятия не имею, как его интегрировать, и документация кажется в лучшем случае бедной. Я попытался использовать его и сумел довести его до окон, но некоторые модульные тесты терпят неудачу, и нет никакой помощи в том, что делать в этот момент. Кроме того, это может быть немного чрезмерно для моих нужд.

Я нашел следующий сайт, который подробно описывает, как получить трассировку стека GENERATE STACK TRACES ON CRASH PORTABLY IN C++. Но я не уверен, что это будет работать на удаленной системе. Я предполагаю, что это должна быть версия отладки и быть предоставленным файлу pdb для этого? Что касается получения локальных переменных, я еще ничего не нашел. Кто-нибудь знает о некоторых ресурсах, которые помогут?

ответ

1

this article, хотя и написанный в 2002 году, по-прежнему имеет отношение к посмертной отладке. Он показывает вам все причины и шаги, необходимые для его работы.

В настоящее время его немного проще (хотя мне понравилось Windbg!), Вы получаете свое приложение для вызова SetUnhandledExceptionFilter и напишите файл .dmp, а затем просто дважды щелкните его, чтобы загрузить его в Visual Studio. Вам понадобятся хорошие символы (.pdf-файлы) в системе отладки, чтобы понять дамп, но создайте свой собственный сервер символов (инструкции в статье, его мертвый легко), и он должен иметь возможность выяснить, какие символы необходимы для любое приложение. Вы должны быть дисциплинированы в сохранении символов, хотя неправильные символы хуже, чем бесполезно.

+0

Спасибо за ресурс. Я должен был указать в моем оригинальном посте, что мне также нужно создать для OSX:/ Я немного поработал с передовой панелью Google, я могу заставить ее создать и создать файл crash_generation_app.exe, но ни одна из аварийных операций похоже, работает и запрашивает, чтобы дамп всегда терпел неудачу (в 32 и 64-битных сборках). Я не уверен, полностью ли отказаться от перекладины google, поскольку я мог бы быть близок к получению того, что мне нужно (что в основном является дамп-файлом и возможностью изучения его содержимого), но я не мог быть рядом с тем, чтобы получить то, что мне нужно за все, что я знаю: / –

Смежные вопросы