Затерялся в 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-битной машине? Можно ли сделать это?

Заранее большое спасибо!


person Johan Andersson    schedule 27.08.2009    source источник


Ответы (2)


Если вы хотите проанализировать дамп 64-битного процесса, вам нужно запустить 64-битную версию отладчика на 64-битной машине. Дамп 32-битного процесса можно анализировать на 32-битной и 64-битной машине. Поэтому, если вы уверены, что дамп сделан из 64-битного процесса, его необходимо проанализировать на 64-битной машине.

person steve    schedule 27.08.2009
comment
Windbg отлично поддерживает удаленную отладку, msdn.microsoft. .com/en-us/library/ff554416(v=VS.85).aspx. Загрузите дамп на 64-битную машину, а затем используйте вашу 32-битную машину в качестве клиента. - person LanceSc; 13.09.2011

Проблема не в том, что вы можете проанализировать 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-битная версия SOS 64-битный анализ? Можно ли заставить WinDbg использовать 32-битную SOS?

Вы можете принудительно загрузить определенную версию SOS, используя

.load согласно http://msdn.microsoft.com/en-us/library/bb190764.aspx

Однако я ожидаю, что 32-битная версия не будет работать для анализа 64-битного процесса, хотя я этого не пробовал.

person Malcolm McCaffery    schedule 12.09.2011