2010-07-27 3 views
17

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

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

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

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

ответ

0

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

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

1

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

1

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

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

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

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

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

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

+0

Насколько я могу поддержать WinQual: Microsoft по-прежнему имеет плохую репутацию со многими пользователями с точки зрения конфиденциальности. Я знаю массу людей, которые никогда бы не отправили одну из этих аварийных свалков, пока они с радостью отправят их непосредственно разработчику. Иногда Emotion перехватывает Аргументы и сворачивает вашу собственную коллекцию сбоев - это путь. Но это зависит от целевой аудитории приложения. –

+0

1) Большинство людей не заботятся о том, чтобы иметь мнение о репутации Microsoft 2) Многие пользователи предпочитают отправлять дампы сбоев Microsoft, а не компании или сущности, которые они не узнают, не знают или не доверяют. 3) Множество вредоносных программ тралит пользовательские данные, вызывая предупреждение, которое пользователь нажимает, а затем авторизует UAC. Следующее, что они знают, машина пользователя не будет загружаться, поскольку теперь они заражены установленным вредоносным ПО. В 90% случаев лучше поддерживать встроенную инфраструктуру отчетности об ошибках ОС. –

+0

Благодарим за предложение, но WinQual не относится к нам. – Ziphnor

3

Я использую следующие флаги, чтобы сохранить пространство будет генерировать полезные Минидампы для приложений C++:

MiniDumpWithPrivateReadWriteMemory | 
      MiniDumpWithDataSegs | 
      MiniDumpWithHandleData | 
      MiniDumpWithFullMemoryInfo | 
      MiniDumpWithThreadInfo | 
      MiniDumpWithUnloadedModules 

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