Я пытаюсь создать BHO с проектом ATL в Visual Studio 2010. Я следую этой статье:
http://msdn.microsoft.com/en-us/library/bb250489.aspx
Когда я дохожу до пункта «Прохождение тест-драйва» — я нажимаю F5, проект успешно компилируется, но я получаю всплывающее сообщение об ошибке: «Невозможно запустить программу» … HelloWorld.dll ‘
Я попробовал решение, которое описано здесь: Невозможно запустить программу ATL Project C ++ .
Я установил «C: \ Program Files (x86) \ Internet Explorer \ iexplore.exe» в «Проект — Свойства — Свойства конфигурации — Отладка — Команда». Я нажимаю F5 и получаю еще одно предупреждение:
«Не удалось найти информацию об отладке для« iexplore.exe »или не соответствует. Не удается найти или открыть файл PDB
Вы хотите продолжить отладку? «
Я отвечаю «ДА», и IE запускается, все мои контрольные точки отключены, и отладчик завершает работу. Если я пытаюсь подключиться к работающему экземпляру IE, отладчик не выходит, но снова все мои точки останова отключаются.
Как правильно отлаживать C ++ BHO DLL с помощью Visual Studio 2010. Моя версия IE — 11.
С помощью Process Explorer от Sysinternals, Вы можете найти PID процесса iexplore.exe, на котором расположена страница, поскольку Process Explorer может отображать имя каждой «вкладки», присоединенной к процессу IE, когда вы наводите курсор мыши на процесс.
Как только PID определен, используйте Attach to Process.
РЕДАКТИРОВАТЬ: если вы хотите отладить свой BHO с самого начала (до SetSite и др.), Есть отвратительный взлом: использовать MessageBox
в DllMain
(ATTACH_PROCESS) и заставить его отображать текущий PID). Присоедините к процессу, а затем закройте окно сообщения.
Проверьте этот ключ HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ Internet Explorer \ Main \ TabProcGrowth, и установите его значение равным нулю, если это не так, это приведет к запуску только одного процесса Internet Explorer (вместо одного для каждой вкладки).
Может быть, это проблема, которую вы испытываете при попытке отладки …