Как создать minidump для моего процесса, когда он сработает?

Я не могу создать minidump из своего процесса, изменив настройку системы. Поэтому мой вопрос

  • Будет ли система создавать minidump для пользовательского процесса при сбое

    Если да, какой настройке мне нужно настроить

  • Или мне нужно создавать программный файл minidump программно.

  • Насколько эффективны мини-насосы при исследовании аварии

Я использую Windows XP, С++, VC6

Ответ 1

Вам необходимо программно создать мини-накопитель (с одним исключением, см. следующую ссылку). CodeProject имеет приятную статью о MiniDumps. В принципе, вы хотите использовать dbghelp.dll и использовать функцию MiniDumpWriteDump() (см. MSDN на MiniDumpWriteDump).

Насколько эффективны такие отвалы, во многом зависит от приложения. Иногда для оптимизированных двоичных файлов они практически бесполезны. Кроме того, без опыта, ошибки кучи/стека коррупции приведут вас в заблуждение.

Однако, если оптимизатор не был слишком сложным для вас, существует большой класс ошибок, в которых помогают дампы, а именно все ошибки, имеющие значения стека-трассировки + локально используемых переменных, то есть многие операции с чистой виртуальной функцией (т.е. неправильный порядок уничтожения), нарушения доступа (неинициализированные доступ или отсутствие проверок NULL) и т.д.

Кстати, если ваша политика обслуживания каким-то образом позволяет это, переносите приложение с VC6 на что-то приемлемое, например VC8 или 9. Вы сделаете себе большую услугу.

Ответ 2

Спасибо всем за просмотр и ответную благодарность gimpf, я googled в интернете и msdn.

Я нашел отличную статью на debugInfo.com. Это стоит прочитать:

эффективные мини-прыжки

Ответ 3

Мы используем Google Breakpad в Firefox, хотя для этого требуется хотя бы Visual С++ 2003. Хорошим преимуществом является то, что он также поддерживает OS X и Linux.

Ответ 4

Я закончил использование CrashRpt в Windows (мне нужно было переместить всю базу кода и инструментальную цепочку из MinGW в собственный компилятор Microsoft C/С++) и google-breakpad в Linux.

Ответ 5

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