在调试VB6应用程序时,我注意到,如果被调试的应用程序使用了任何库,则VB6 IDE都会保持加载。库在调试会话之间保持加载状态。这会干扰我的调试,因为不幸的是,我们的一个库(用delphi编写)在全局变量中保持状态,并且具有重要的初始化/终止逻辑。
问题的简化示例:我有一个
foo.dll
里面有个柜台。我使用vb6中声明的以下内容访问此计数器:
Public Declare Function GetCounter Lib "foo.dll" () As Long
Public Declare Function IncrementCounter Lib "foo.dll" () As Long
这种情况下的问题是,当我启动新的调试会话时,计数器不会重置。我不想编写应用程序或库逻辑来考虑这个“回收库状态”场景。我希望能够用一张白板开始调试会话。
当前,我通过重新启动vb6 ide强制卸载库。有更好的方法吗?
编辑
:我在调用kernel32.dll函数以从即时窗口卸载/重新加载libaries方面做了一些尝试;结果证明这只是一个使IDE崩溃或导致随机行为的好方法。我应该预料到,由于IDE无法知道它的库原始句柄已经失效。
我已经接受了Angryhacker的回答,因为我现在确信重新启动vb6.exe是启动vb6调试会话的唯一方法,而且完全没有问题。