Потерянный в WindBG с 64-битным сбросом на 32-битной машине
Вопрос
Я новичок в WindBG и получил этот дамп из папки WER ReportQueue на 64-битном сервере Windows 2008. Мне нужно изучить дамп, и я хочу сделать это на моей машине разработчика, на которой я установил инструменты отладки для пакета Windows. Когда я пытаюсь загрузить SOS, я получил следующую ошибку, которую я никогда раньше не видел:
0:035> .loadby sos mscorwks
The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos) failed, Win32 error 126
"The specified module could not be found."
Please check your debugger configuration and/or network access.
Моя машина запускает 32-битную Windows 7, которая, очевидно, не имеет папки Framework64.
Мне нужен совет, указывающий мне в правильном направлении здесь. Что мне нужно сделать, если я хочу осмотреть дамп с 64-битного процесса на 32-битной машине? Можно ли сделать это?
Большое спасибо заранее!
Решение
Если вы хотите проанализировать 64-разрядную дамп процесса, вам необходимо запустить 64-битную версию отладчика на 64-разрядной машине. Выпуск от 32-битного процесса может быть проанализирован на 32-битной и 64-битной машине. Поэтому, если вы уверены, что дамп от 64-битного процесса, его необходимо проанализировать на 64-битной машине.
Другие советы
Проблема не в том, что вы можете проанализировать 64-разрядную свалку с 32-битного WindBG, который вы можете. Из файла справки WindBG:
Если вы анализируете файл дампа, и если файл дампа был сделан в Windows XP или более поздней версии Windows, вы можете использовать либо 32-разрядный пакет, либо пакет x64. (Не важно, является ли файл дампа файлом дампа пользовательского режима или файлом дампа режима ядра, и не важно, был ли файл дампа на основе x86 или на платформе на основе X64.)
Если вы анализируете файл дампа, и если файл дампа был сделан в операционной системе Windows 2000, вам следует использовать 32-битный пакет. (Не важно, является ли файл дампа файлом дампа пользователя или файлом дампа режима ядра)
Если вы выполняете отладку в прямом эфире режима ядра, и если целевой компьютер запускает Windows XP или более позднюю версию Windows, вы можете использовать 32-разрядную пакет или пакет X64. (Эта ситуация применяется как к целям на основе X86, так и к X64.)
Если вы выполняете отладку в режиме реального времени в прямом эфире, и если целевой компьютер запускает Windows 2000, вам следует использовать 32-битный пакет.
Если вы выполняете отладку в режиме реального времени в прямом эфире, используйте пакет X64 для отладки WOW64 с 64-битным и 32-битным кодом. Чтобы отлаживать другие цели, используйте 32-битный отладчик для отладки 32-разрядного кода.
В чем проблема? Здесь вы пытаетесь загрузить 64-битное расширение для анализа проблемы. Невозможно загрузить 64-битные расширения на 32-битный WindBG. Вопрос будет тогда, будет ли 32-разрядная версия 64-битного анализа SOS, можете ли вы заставить WindBG использовать 32-битный SOS?
Вы можете заставить конкретную версию SOS загрузить с помощью
. загрузка в соответствии с http://msdn.microsoft.com/en-us/library/bb190764.aspx
Однако я ожидаю, что 32-разрядная версия не будет работать для анализа 64-битного процесса, хотя не пробовал это.