Как отладить COM-объект в Visual Studio 6.0, созданный на странице ASP?
-
21-08-2019 - |
Вопрос
У меня есть старый COM-компонент C++, который должен оставаться в формате Visual Studio 6.0.Я хоть убей не могу понять, как отлаживать код реального COM-компонента.
Я могу собрать его в режиме отладки, добавить точки останова и присоединить к процессу dllhost.exe, но среда Visual Studio покажет мне только дизассемблирование из dllhost.exe, а не мой исходный код (это также не останавливает на точках останова).
Я помню, некоторое время назад был способ сделать IIS (или inetinfo.exe) цель вашего действия отладки (т.е.когда Visual Studio 6.0 запрашивает исполняемый файл для запуска вашей dll), и IIS будет работать в режиме одного процесса.Вам нужно было изменить ключ реестра, но поиск в Google не помог.
Решение
Если это COM-компонент на базе VB6, вы можете открыть проект в VB6 и запустить его (проект DLL запустить невозможно).В свойствах проекта есть опция, с помощью которой его можно попросить запустить, чтобы он запустился и зарегистрировался.
Теперь попробуйте перейти на страницу ASP, которая вызывает компонент COM.Точки останова, установленные в файлах классов, будут задействованы, поскольку вызовы выполняются со страницы ASP.
Другие советы
Прежде всего, файл PDB (созданный во время компиляции) должен находиться в том же каталоге, что и DLL (можно установить в свойствах проекта).
Если ваш объект не использует некоторые специфичные для ASP функции (объекты Request, Response, Session), вы можете скопировать его код вызова в файл .vbs и выполнить отладку с помощью настройки cscript.exe ваш.vbs в качестве целевой программы отладки.
Есть пояснения(например), как отлаживать библиотеки DLL ISAPI — они применимы и к вашему COM-объекту (с точки зрения ОС/отладчика обе библиотеки DLL загружаются в процесс IIS).Обратите внимание на версию IIS, а также на внутрипроцессные и внепроцессные процессы.
И, наконец, если ничего не помогает, вы можете добавить логирование через Выходная строка отладки функцию и посмотрите ее бесплатно Дебагвиев программа.