Профилирование x86 исполняемого файла с помощью Dependency Walker зависает на Windows 7 x64
В Windows 7 x64, когда я пытаюсь профилировать исполняемый файл x86 с последней версией Dependency Walker (2.2.6000), процесс профилирования всегда зависает при определенном точка. В большинстве случаев последняя загруженная DLL c:\windows\syswow64\URLMON.DLL
, поэтому кажется, что что-то внутри этой DLL вызывает проблему. Профилирование одного и того же исполняемого файла в Windows 7 x86 работает безупречно.
Я довольно широко разобрался в googled, но не смог найти решение проблемы. Одним из предложений, которое я нашел, было удаление IE 8 или IE 9 и замена его на IE 7, но это на самом деле не помогает. Единственный эффект, который я могу наблюдать, это то, что с IE 7 процесс профилирования зависает в другой DLL (iertutil.dll
, если я правильно помню, также из папки syswow64
системы).
Итак, мой вопрос: как я могу заставить Dependency Walker профилировать приложения x86 на x64 Windows 7? Конечно, было бы неплохо узнать, почему проблема существует в первую очередь: -)
Некоторые окончательные примечания:
- Я использую x86 версию Dependency Walker, потому что хочу профилировать исполняемый файл x86
- Запуск зависимостей Уокер как администратор не помогает
- Все параметры профилирования, помеченные как "могут выходить из строя на WOW64", отключены.
- Исполняемый файл, который я использую в качестве примера для воспроизведения проблемы, - это программа просмотра Sumatra PDF (ссылка для скачивания), потому что это простой .exe, который не требует установки
Ответы
Ответ 1
Обновленная инструкция на основе бесплатных комментариев @Stone
Нужная ссылка для скачивания была изменена на:
https://www.microsoft.com/en-us/download/details.aspx?id=42273
Перейдите в раздел 2. Установка WDK 10 и выберите загрузку:
Найдите и запустите программу установки Wdk (wdksetup.exe) со стадии 2, затем выберите вариант загрузки, а не установку.
После завершения найдите и запустите DownloadLocation\Windows Kits\10\WDK\Installers> "Комплект драйверов Windows-x86_en-us.msi"
Тогда вы найдете Dependency Walker по адресу:
- C:\Program Files (x86)\Windows Kits\10\Tools\x64\зависит .exe для 64-разрядной версии
- C:\Program Files (x86)\Windows Kits\10\Tools\x86\зависит .exe для 32-разрядной версии
Это Dependency Walker версии 2.2.10011, построенный 2015-10-29 ![x86 version]()
Удобным инструментом является использование https://github.com/juntalis/depends-launcher, который является простым средством запуска Dependency Walker, определяющим платформу (x86 | x64 | ia64) образа Windows (dll, exe и т.д.) И Запускает соответствующую версию зависимости .exe для просмотра его зависимостей. Его основное назначение - использовать его в контекстном меню, чтобы легко просматривать зависимости изображения.
Ответ 2
Я столкнулся с той же проблемой, и обнаружил, что она исправлена в последней версии Dependency Walker. Я сравнил 2.2.6000 против 2.2.8288, и проблема существует в первой, но не последней. Тем не менее, вам, вероятно, придется дождаться, когда Windows WDK будет выпущена для широкой публики, чтобы получить последнюю версию.
Ответ 3
Мне пришлось переключиться на использование проекта GitHub: Зависимости.
Начиная с Windows 10 1809 (10.0.17763), я не могу запустить даже зависящий от .exe. Версия 2.2.10011, включенная в WDK 10.0.10586.0.
Ответ 4
Последняя известная на данный момент версия Dependency Walker - 2.2.10011 от 2015-10-29 (ссылки ниже).
Он был развернут с каким-то Windows Development Kit для Windows 10, но содержащаяся в нем версия больше не доступна на страницах Microsoft, и все более новые версии не содержат его по неизвестной причине.
Возможно потому, что в последних версиях есть проблемы с перенаправлением библиотеки Dynamic-Link или другие проблемы с производительностью. (Использование обходчика зависимостей в Windows 10 кажется гораздо более медленным и громоздким, чем в предыдущих версиях Windows - но все же отличный инструмент для работы)
Доступны следующие версии:
- 2.2.10011 (2015-10-29)
- 2.2.9600 (2013-08-22)
- 2.2.6000 (2006-10-28)
Потенциальная замена:
Для простых задач стоит изучить Gitub- проект lucasg/Dependencies. Но в настоящее время он не поддерживает профилирование работающего приложения для отладки нарушенных зависимостей времени выполнения, как может сделать зависящий depends.exe
.