Анализировать аварийные дампы Windows, генерируемые на машинах с XP / 32 с Win7 / 64? - PullRequest
2 голосов
/ 21 февраля 2011

У нас есть проблема с анализом наших аварийных дампов Windows, которые были созданы на пользовательских блоках Windows XP / 32 на наших машинах разработки.

Многие из наших машин для разработки теперь являются блоками Win7 / 64, но создается впечатление, что аварийные дампы, созданные в Windows XP, не могут полностью разрешить их двоичную зависимость, что приводит к появлению предупреждений при отображении стеков вызовов в Visual Studio (2005).

Например, msvcr80.dll не может быть разрешен при загрузке с машины Win7, когда дамп был создан в Windows XP:

В XP путь WinSxS выглядит как C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\msvcr80.dll - в Win7 путь WinSxS к такой же версии DLL выглядит так: x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_d08d7da0442a985d

(я получил эту информацию от ветки форума о codeguru , которая ссылается на статью MSDN .)

Visual Studio (2005) больше не может правильно разрешать двоичные файлы для аварийного дампа.

Как заставить Visual Studio разрешить все правильные двоичные файлы для моего файла дампа?

Примечание : Я уже правильно настроил сервер символов. Публичные символы для большинства системных библиотек DLL (kernel32.dll и т. Д.) И наши символы наших собственных библиотек DLL загружаются правильно. Просто символы DLL, которые находятся в папке WinSxS, загружены , а не , потому что кажется, что Vista / 7 использует другую схему путей для этих DLL, чем XP, и поэтому Visual Studio не может найти dll ( не pdb) на локальной машине разработчика и поэтому не может загрузить соответствующие символы для файла дампа.

Ответы [ 4 ]

3 голосов
/ 21 февраля 2011

Я думаю, что в этом случае следует использовать WinDbg для анализа дампов. Тогда вы можете избавиться от таких блокпостов. Но не забывайте использовать x86-сборку WinDbg (часть средств отладки для Windows).

2 голосов
/ 21 февраля 2011

Насколько я понимаю, это двоичные файлы, с которыми вы сталкиваетесь с трудностями при разрешении неправильных символов?

Помимо копирования в соответствующие двоичные файлы, один из вариантов - настроить компьютер x86, поделиться им с C и просто указатьваш отладчик на эту машину.

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

2 голосов
/ 21 февраля 2011

Использовать сервер символов Microsoft: http://support.microsoft.com/kb/311503
Для этого откройте диалоговое окно параметров, перейдите в ebugging \ Symbols и добавьте http://msdl.microsoft.com/download/symbols в качестве нового местоположения; затем выберите локальный путь для кэширования, и вы готовы пойти

1 голос
/ 19 сентября 2011

попробуйте использовать symchk.exe, это поможет вам извлечь символы и двоичные файлы из файла дампа.(или из каталога)

http://msdn.microsoft.com/en-us/library/ff558845%28v=VS.85%29.aspx

symchk можно найти в пакете windbg

...