Подтвердить что ты не робот

Уменьшение размера мини-дисков управляемых программ при сохранении некоторой информации о куче?

С поддержкой отладки дампа в .NET 4.0 мы автоматически изучаем (после того, как пользователь спрашивает), создавая мини-накопители сбоев программы С#, чтобы загрузить их в нашу систему отслеживания проблем (чтобы мини-пульты могли помочь в разрешении причина аварии).

Все работает нормально при использовании типа minidump WithFullMemory. Мы можем видеть как переменные стека, так и кучи. К сожалению, (zipped) дампы довольно велики даже для небольших программ на С#.

Если мы используем "обычный" тип minidump, мы получаем очень маленький дамп, но даже не информация о переменной стека доступна в управляемом отладчике. Фактически, все, что меньше, чем WithFullMemory, кажется совершенно бесполезным в управляемом отладчике. Мы предприняли несколько попыток использования MINIDUMP_CALLBACK_ROUTINE, чтобы ограничить включенную информацию о модуле нашими собственными модулями, но похоже, что он практически не влияет на управляемый дамп, но все же удается нарушить управляемую отладку?

Есть ли у кого-нибудь советы о том, как обрезать мини-накопитель, сохраняя его полезным для управляемой отладки?

4b9b3361

Ответ 1

Я использую следующие флаги для экономии места, создавая полезные мини-копии для приложений на С++:

MiniDumpWithPrivateReadWriteMemory | 
            MiniDumpWithDataSegs | 
            MiniDumpWithHandleData |
            MiniDumpWithFullMemoryInfo | 
            MiniDumpWithThreadInfo | 
            MiniDumpWithUnloadedModules

Значения флага указаны в DbgHelp.h и должны быть привязаны к С#. Сброс дополнительно ограничен, указав CallbackRoutine.

Ответ 2

Просто fyi, как упоминалось выше, ClrDump выглядит очень круто, но похоже, что он работает только с 1.1. и 2.0 времени выполнения.

Ответ 3

При всем моем уважении я настоятельно рекомендую вам зарегистрироваться в учетной записи Microsoft WinQual, зарегистрировать свои приложения в Microsoft.

http://www.microsoft.com/whdc/winlogo/maintain/StartWER.mspx

Это позволит вам не только воспользоваться преимуществами обширных служб сбора и анализа сбоев Microsoft (бесплатно!), но также позволит публиковать исправления и исправления для ваших приложений через встроенные средства отчетности об ошибках Windows.

Кроме того, участвуя в программе WinQual, предприятия, которые развертывают ваше приложение и которые используют собственную систему отчетов об ошибках Windows, смогут собирать, сообщать и получать исправления для вашего приложения.

Другим преимуществом является использование WinQual, вы на один шаг ближе к тому, чтобы получить логотип вашего приложения!

Каждый OEM и ISV я работал с тем, кто использует WinQual, экономит ENORMOUS объем усилий и расходов по сравнению с их собственной системой сбора и регистрации сбоев.

Ответ 4

ClrDump может помочь вам.

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

Ответ 5

Я написал электронное письмо автору ClrDump, задав вопрос, какие параметры MINIDUMP_TYPE используют его инструмент для создания дампов в режиме "мин". Я разместил его ответ здесь: Что минимально MINIDUMP_TYPE, установленное для выгрузки собственного С++-процесса, в котором размещается компонент .net, который сможет использовать! Clrstack в windbg