Чтобы создать аварийный дамп, я бы не написал необработанный обработчик исключений, предложенный @Abyx по следующим причинам:
a) в случае переполнения буфера или переполнения стекакод, который обрабатывает необработанное исключение, может быть поврежден.В случае OutOfMemoryException, как вы можете загрузить другую библиотеку, такую как DbgHelp.dll?
b) написанный вами код может содержать ошибки.Проверяет ли этот код свободное место на диске перед тем, как записать дамп?Как вы тестируете код, чтобы написать аварийный дамп?У вас есть тестовый модуль для этого?Как ваш модульный тест проверяет правильность дампа?
в) зачем вообще писать код, если Windows может сделать это за вас?
В MSDN есть статья на Сбор дампов пользовательского режима .В основном, есть некоторые настройки реестра, которые вы можете сделать.Преимущество заключается в следующем: Windows создает аварийный дамп операционной системой, а не каким-либо поврежденным кодом в вашем собственном приложении.