Я пытаюсь прочитать файл дампа в VS2010 с надеждой получить в стеке трассировку того, где произошел сбой в моей сборке релиза. Однако, когда я открыл файл дампа в VS2010, в нем говорится
Вы не можете отладить 64-битный дамп 32-битного процесса, вы должны собрать
32-битный дамп 32-процессного
Теперь мое приложение 32-разрядное, и оно работало в 64-разрядной системе. Значит ли это, что я не могу читать файлы дампа сейчас, так как он работает на 64-битной системе ?? Какие-либо предложения ? Файлы дампов были созданы с помощью 64-разрядного диспетчера задач в Windows 7. Если я запустил 32-разрядный диспетчер задач и сгенерировал дамп из этого в Windows 7, это решит проблему?
Вы по-прежнему можете открыть этот дамп, используя WinDbg из пакета Debugging Tools for Windows.
Для создания хороших дампов для приложения Win32 в системах x64 вам необходимо создать дамп, используя версию Win32 MiniDumpWriteDump
API. Обычный диспетчер задач, запускаемый из меню содержимого панели приложений или сочетания клавиш Ctrl + Shift + Esc (а также из Process Explorer), имеет разрядность ОС, а созданные дампы не помогают. 32-разрядные дампы могут быть взяты самой Visual Studio, присоединяясь к процессу, приостанавливая его и сохраняя мини-дамп из меню, или используя 32-разрядный диспетчер задач, запускаемый напрямую: C:\Windows\SYSWOW64\taskmgr.exe
,
я использую LogProcessExceptions утилита (я уверен, что есть и много других) для создания мини-дампов на исключениях и по интерактивному запросу. Поскольку утилита доступна как в Win32, так и в 64-битной разрядности, 32-битная версия инструмента даст вам нужные вам свалки.
Да, использование 32-битного диспетчера задач для создания дампа 32-битного процесса — это путь.
Использование 64-разрядного диспетчера задач в 32-разрядном процессе создает аварийный дамп wow64, который на самом деле не очень полезен.
Вот соответствующий блог MSDN: http://blogs.msdn.com/b/amb/archive/2012/05/28/10163879.aspx