Отладка библиотеки ActiveX VB6, вызываемой через VBScript в классическом приложении ASP

Вот так, я избегал этого как можно дольше, но наконец пришло время внести некоторые изменения в какой-то древний код 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.

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

0 ответов

Другие вопросы по тегам