Оценка минидампа с помощью windbg

Я написал программу на C# (.NET 4.0) и распространил ее с помощью помощника издателя C# Express.

Он отлично работает для большинства моих пользователей, кроме одного. При установке он получает ошибку, что мое приложение перестало работать. Поэтому он прислал мне mdmp-файл этой ошибки, чтобы я мог оценить его, чтобы получить ошибку.

Проблема в том, что я не знаю, как это сделать. Я посмотрел некоторые учебники для WINDBG и попытался использовать их, но они не помогли.

Я тоже пробовал эту тему. Но я не мог получить доступ к ручкам.

Можно ли как-то оценить этот файл, чтобы я мог обнаружить эту ошибку?

2 ответа

Вам, вероятно, нужно сделать полный (UserMode) дамп, чтобы он фиксировал состояние таблиц дескрипторов, чтобы вы могли выполнить посмертный анализ с использованием WinDBG и т. Д.

Описание разницы здесь:

Если у вас установлен WinDBG и произошел сбой, вы можете использовать команды WinDBG для создания файла дампа, который содержит больше информации, например, используйте опцию "h", чтобы включить информацию "handle" в мини-дамп.

Или вы можете использовать инструмент DebugDiagnostics 1.2, который немного более удобен для клиентов... вы можете получить полный дамп пользователя.


Если вы хотите увидеть фреймы стека.NET и увидеть другое состояние среды выполнения NET, захваченное в дампе, вам нужно загрузить SOS.DLL (Сын Страйка), чтобы получить доступ к этой информации в дампе... это расширение WinDBG это распространяется с платформой.NET при установке на машине.

Как уже указывалось, вам нужно загрузить ту же версию mscordacwks.dll(NET2)/cor.dll (NET4) и sos.dll, которая была на изначально отлаженной машине... это может быть проблемой.

Есть решение... если вы настроили WinDBG для указания на серверы Microsoft Symbol, т.е.

Затем теоретически файл mscordacwks.dll/cor.dll, соответствующий версии NET, используемой на целевом компьютере, будет загружен с сервера символов, если его еще нет на вашем компьютере.

Кроме того, вы можете избежать всех этих махинаций, используя вместо этого PSSCOR... он не имеет жесткой привязки к конкретным версиям mscordacwks/cor.dll.

Загрузите расширения PSSCOR2 (NET 2) или PSSCOR4 (NET 4)... в зависимости от версии платформы NET, под которой работало ваше приложение.....PSSCOR - это расширенный набор SOS. В вашем случае вы хотите загрузить PSSCOR4 (забудьте про обычный SOS).

Вы можете воспользоваться Windows Reporting Reporting (WER), настроенной для создания локальных дампов. Как уже говорили другие, вам нужен полный дамп для.NET.

Помните, что это может быть несколько сотен МБ вместо 1 МБ для файла.MDMP. Вам нужно будет объяснить, как это можно отправить вам.

Если у вас есть дамп, вам не обязательно нужен WinDbg. Вы также можете открыть дамп в Visual Studio (правда, не совсем в Express Edition). Если вы можете открыть его в Visual Studio, это может быть более удобным для вас.

Обратите внимание, что для WinDbg вам также нужны файлы mscordacwks.dll а также SOS.dll с целевого компьютера, если это не точно такая же версия, как у вас. Они могут находиться в разных местах благодаря функции SXS. Может быть, лучше получить их всех. Только для тебя я предварительно выпустил коллекционер Mscordacwks.

В качестве отправной точки для WinDbg должны помочь следующие команды:

*** configure symbols to be downloaded from Microsoft
.symfix c:\symbols
*** Reload anything which has been loaded so far
.reload
*** Load the .NET extension, because WinDbg itself is native only
.loadby sos clr
*** Or, if the version is different to your system
.load c:\filesfromcustomer\sos.dll
*** Print exception information
!pe
*** Get the callstack
!clrstack
Другие вопросы по тегам