Возникли проблемы при анализе .dmp с WinDBG - PullRequest
1 голос
/ 12 августа 2010

Начну с того, что я впервые что-то сделал с WinDbg, так что извините за мои глупые ошибки, если в этом проблема. Мой сайт использует много памяти, и после чтения блогов и просмотра видео от Тесс Фернандес я пытаюсь использовать WinDBG для анализа файла дампа.

Настройка: Мой веб-сервер - это 64-битная машина Windows 2008, на которой мой веб-сайт asp.net 2.0 работает в режиме 32-битной совместимости. Я установил переменную окружения, чтобы получить все символы, поэтому я не получаю ошибки при загрузке WinDbg

Я использую следующие команды в WinDbg:

.load C:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos.dll
.load C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
!eeheap -gc

и получаю следующую ошибку:

Структуры данных сборщика мусора не находятся в действительном состоянии для ВТП. Это либо в "плане" фаза, "где объекты перемещаются вокруг, или мы находимся на инициализация или отключение gc куча. Команды, связанные с отображением, нахождение или перемещение объектов, а также поскольку сегменты кучи gc могут не работать должным образом. ! dumpheap и! verifyheap может неправильно жаловаться на кучу ошибки согласованности. Количество ГК Кучи: 1 Ошибка при запросе деталей

Я прочитал, что это может быть вызвано несовпадением версий, и я думаю, что это может быть проблемой. Чтобы продвинуться так далеко, мне пришлось создать путь

C: \ Windows \ Symbols \ mscordacwks_AMD64_x86_2.0.50727.4016.dll \ 49CC5B00590000 \ mscordacwks_AMD64_x86_2.0.50727.4016.dll

поэтому библиотеки загружаются, когда я вызываю! Eeheap -gc (в противном случае появляются другие ошибки). Проблема в том, что я взял этот mscordacwks.dll из обычной папки .NET, а не Framework64. Я не знаю, является ли это причиной проблемы, но я бился головой о кирпичную стену и не знаю, что еще делать, поэтому я был бы признателен за помощь.

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 20 августа 2010

Взгляните на этот пост. Также убедитесь, что вы используете отладчик и SOS с той же разрядностью, что и дамп. Связанный блог в сообщении объясняет это. Поэтому, в вашем случае, используйте 64-битную версию windbg, загрузите sos.dll из Framework64 и убедитесь, что ваш mscordacwks имеет значение «mscordacwks_amd64_amd64_2.0.50727.4016.dll» и находится в доступном пути. Мне нравится копировать эту сборку и соответствующий sos.dll в отдельную папку, но YMMV.

0 голосов
/ 12 декабря 2013

Настройте свою систему, как объясняет Джон Роббинс в своем великом посте: http://devcenter.wintellect.com/jrobbins/automatically-load-the-right-sos-for-the-minidump

Затем сначала выполните !analyze -v.

...