Отладка библиотеки ActiveX VB6, вызываемой через VBScript в классическом приложении ASP - PullRequest
0 голосов
/ 24 сентября 2018

Дракончик, я избегал этого как можно дольше, но наконец пришло время внести некоторые изменения в некоторый древний код VB6.Я недавний выпускник колледжа, поэтому я надеялся держаться подальше от этого кода, который почти так же стар, как и я.

DLL скомпилирована в локальной установке VB6 и развернута через службы компонентов.Затем этот компонент вызывается VBScript в приложении Classic ASP, работающем на Windows 2003 Server.

Я пытался почти все для отладки этого кода с помощью отладчика VB6, но я не могу заставить его работать,Я скомпилировал библиотеку DLL в то же место, в котором развернуты службы компонентов (случайная папка на несистемном диске), и установил двоичную совместимость с той же библиотекой DLL.Для каждого файла класса установлено значение экземпляра MultiUse, а для MTSTransactionMode установлено значение «1 - NoTransactions».Компонент работает нормально, пока я не присоединяю отладчик, затем я получаю «ActiveX компонент не может создать объект» при попытке создать экземпляр объекта.Если я отсоединяю отладчик, он снова работает.

Я заметил, что в службах компонентов, когда я присоединяю отладчик, расположение DLL изменяется на C: \ Program Files \ Microsoft Visual Studio \ VB98 \ VB6DEBUG.DLL, чтоЯ предполагаю, что это просто VB6 перехватывает вызовы компонента.Когда я отсоединяю отладчик, он меняется обратно.Следует также отметить, что компонент настроен на использование определенной идентификационной информации пользователя, отдельной от моей учетной записи, однако каждому предоставлен доступ к компоненту через роль пользователя.Тип активации компонента также «Серверное приложение», однако установка его на «Активация библиотеки», похоже, не имеет значения.

Я также пытался использовать VC ++ 6 IDE и VS2010,но не повезло.Я смог отладить dllhost.exe в VS2010 и смог достичь некоторых точек останова, но символы были загружены неправильно.Я попытался скомпилировать DLL с отладочными символами и загрузить их в среду VS2010 через меню настроек отладки, однако это не помогло решить проблему.

Я также не нашел, что JIT Debugger служб компонентов является оченьполезно.Я бы предпочел просто иметь возможность отладки в VB6.

Больше всего меня удивляет то, что этот код состоит из тысяч строк и поддерживается без использования какого-либо отладчика.Моя молодая, испорченная личность не готова признать, что этот код не может быть отлажен.

...