在经典ASP应用程序中调试通过VBScript调用的VB6 ActiveX DLL

时间:2018-09-24 19:21:25

标签: asp-classic vb6 activex windows-2003-webserver component-services

Whelp,我尽可能地避免了它,但是现在终于该对一些古老的VB6代码进行一些更改了。我是一名应届大学毕业生,所以我希望远离这个与我年龄差不多的代码。

该DLL是在VB6的本地安装中编译的,并通过组件服务进行部署。然后,在Windows 2003 Server上运行的Classic ASP应用程序中,VBScript将调用该组件。

我已经尝试了几乎所有使用VB6调试器调试此代码的方法,但是我无法使其正常工作。我已经将DLL编译到组件服务已部署到的位置(非系统驱动器上的随机文件夹),并将二进制兼容性设置为该DLL。每个类文件的实例化设置为MultiUse,MTSTransactionMode设置为“ 1- NoTransactions”。直到我连接调试器,该组件才能正常工作,然后在尝试实例化对象时得到“ ActiveX组件无法创建对象”。如果我分离调试器,它将再次起作用。

我注意到,在附加调试器时,在组件服务中,DLL位置更改为C:\ Program Files \ Microsoft Visual Studio \ VB98 \ VB6DEBUG.DLL,我认为这只是VB6拦截对组件的调用。当我分离调试器时,它会变回来。我还应注意,该组件已配置为使用与我登录的用户帐户不同的特定用户身份,但是已通过用户角色向每个人授予了对该组件的访问权限。组件激活类型也是“服务器应用程序”,但是将其设置为“库激活”似乎没有什么不同。

我也尝试过使用VC ++ 6 IDE和VS2010,但是没有运气。我能够在VS2010中调试dllhost.exe,并能够遇到一些断点,但是符号未正确加载。我尝试使用调试符号编译DLL,然后通过“调试设置”菜单将其加载到VS2010环境中,但是并不能解决问题。

我也没有发现组件服务JIT Debugger很有用。我非常希望能够在VB6中进行调试。

最让我惊讶的是,这段代码成千上万行,并且无需使用任何调试器即可对其进行维护。我年轻的,被宠坏的自我还不准备接受无法调试此代码。

0 个答案:

没有答案