Проиграл в WinDbg с 64-битным дампом на 32-битной машине - PullRequest
1 голос
/ 27 августа 2009

Я новичок в WinDbg и получил этот дамп из папки WER ReportQueue на 64-битном Windows 2008 Server. Мне нужно проверить дамп и сделать это на компьютере разработчика, на котором я установил пакет средств отладки для 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-битной машине? Возможно ли это сделать?

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

Ответы [ 2 ]

12 голосов
/ 27 августа 2009

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

3 голосов
/ 13 сентября 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, используя

. Нагрузка согласно http://msdn.microsoft.com/en-us/library/bb190764.aspx

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

...