Профилирование 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 - но все же отличный инструмент для работы)

Доступны следующие версии:

Потенциальная замена:

Для простых задач стоит изучить Gitub- проект lucasg/Dependencies. Но в настоящее время он не поддерживает профилирование работающего приложения для отладки нарушенных зависимостей времени выполнения, как может сделать зависящий depends.exe.