Отладка дампа 32-битного процесса, захваченного на 64-битной машине
Недавно я получил 64-битный аварийный свал из клиента.
Наши процессы все 32-разрядные, но клиентская машина работает на сервере x64 Server 2008.
Visual Studio (как 2008, так и 2010 Express) говорит мне, что мне нужно использовать 64-разрядную версию MSVSMON.EXE
, которую я не могу, потому что у меня нет 64-разрядной машины.
Я уверен, что есть способ сделать это в WinDbg, но я считаю WinDbg враждебным.
Есть ли способ отладить 64-разрядный дамп на 32-битной машине, желательно с помощью Visual Studio?
Ответы
Ответ 1
Вам нужно убедиться, что клиент использует 32-битные инструменты (adplus или DebugDiag) для захвата дампов сбоя для ваших 32-битных процессов. Затем вы можете использовать 32-битную машину для отладки дампов.
http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-processes-on-an-x64-machine.aspx
Хотя комментарий Isalamon технически корректен, никто не хотел бы выполнять это, поскольку трассировка стека ужасна.
Сообщите своему клиенту, что это необходимо, и надеемся, что он/она будет сотрудничать.
Если вы не знакомы с анализом дампов, Microsoft всегда для вас, http://support.microsoft.com
Ответ 2
Является ли это Userdump или дампом ядра? Похоже, вы получили свалку системы. Если это так, то вы можете воспользоваться поддержкой! Wow64exts extension на windbg и могут стать причиной проблемы.
Ответ 3
Я получил отличные результаты, используя советы по переключению на режим x86 с помощью wow64exts.sw, как это описано здесь:
http://blogs.msdn.com/b/ntdebugging/archive/2008/06/03/how-to-debug-wow64-applications.aspx
Здесь приведены те же самые рекомендации:
http://blogs.msdn.com/b/msdnforum/archive/2010/03/14/how-do-i-switch-to-32bit-mode-when-i-use-windbg-to-debug-a-dump-of-a-32bit-application-running-on-an-x64-machine.aspx
И фон и связанные с ним команды:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa384163(v=vs.85).aspx
Надеюсь, что это служит компиляцией достойных материалов по этой теме в дополнение к тому, что уже существует в этом потоке. Спасибо.
Ответ 4
Я работал над проблемой, используя 32-разрядный диспетчер задач (C:\Windows\SysWOW64\Taskmgr.exe) для захвата дампа.
Ответ 5
Я согласен с anwer, что вы должны правильно получить файл dmp, но в последнее время некоторые эксперименты с этим типом неправильно записанного файла dmp. Я использовал WinDbg для исправления файла SOS.dll, чтобы удалить проверку арки. Я не уверен на 100%, если то, что я получаю, действительно, но по крайней мере некоторые из них выглядят так... https://chentiangemalc.wordpress.com/2015/04/17/experimental-use-of-64-bit-dump-of-32-bit-net-process-in-windbg/