将VB6调试从.exe转换为.dll

5

可能是以前被问过的问题。请指导我到任何可能回答我的问题的问题...

我有一个调用VB6 .dll的VB6 .exe。我想从.exe代码中调试.dll。

有什么想法可以实现吗?自从我玩vb6以来已经很长时间了。

谢谢

4个回答

6
在一个VB6 IDE中打开两个VB6项目(如果我没记错的话,VB项目组会创建并使用.vbg文件扩展名)。另外,将调试设置为在类模块中断点。

我尝试过了,我需要在.exe中取消对.dll的引用吗?如果是这样,我应该引用什么来代替它? - webdad3
1
天啊...我好久没写VB6了。应该有一种方式可以引用.DLL项目而不是已构建的文件,就像在.NET中一样。但就像我说的那样,已经过了这么长时间,我记不清楚了。 - HardCode
1
这正是我的问题...很长一段时间以来,但现在似乎我将要使用VB6一段时间了... :( - webdad3
2
据我所记,您引用的是VBP而不是DLL。有关更多详细信息,请参阅VB6手册中的教程http://msdn.microsoft.com/en-us/library/aa733606(v=VS.60).aspx - MarkJ
@MarkJ - 我到办公室后会尝试一下。谢谢! - webdad3
显示剩余2条评论

4

您需要访问DLL符号(通常是PDB文件)。确保正在生成dll符号。

如果您将DLL作为原始文本打开并转到文件结尾,您可以找到期望PDB文件位于的路径。


我更新了我的问题,发现有一个打字错误。我需要在vb6.exe中调试一个vb6 .dll文件。你能解释一下如何做吗? - webdad3
你是指用VB6编译的dll还是msvb6.dll(我不记得确切的名称,但我的意思是运行时)?如果是前者,我认为你需要做我回答过的事情。 - David
我有2个vb6项目。一个是UI(.exe),另一个是.dll项目。我的.exe中有对.dll的调用,我想能够进入.dll进行调试。 - webdad3
好的,这就是我从一开始理解的内容。这是完全可能的,你不需要做任何特殊的事情,但如果它不能工作,原因可能是你没有为你的dll生成调试信息,或者dll的pdb文件无法访问。 - David
我想我的问题更多是关于pdb文件... 我要如何连接到那个文件呢? - webdad3
显示剩余4条评论

3

我认为你需要将dll项目添加到exe项目中(文件->添加项目),以便进入dll代码。 更新: 是的,我认为您还需要删除对已编译dll的引用。


0

我遇到了类似的问题,而且我一直在按照您提供的所有步骤进行操作,但是仍然没有进展。我感觉很无助。

我认为您需要将dll项目添加到exe项目中(文件->添加项目),以便能够进入dll代码。您还需要删除对已编译dll的引用。


参考文献在这里是关键,正如Kabo Moleti所指出的那样。当您在vbg(组)中打开exe和DLL时,进入exe项目的引用时,您将看到两个与您的DLL相关的条目。另一个是项目引用。它将显示为对.vbp文件而不是.dll的引用。调试时选择此引用。当您运行调试器并且您的exe调用DLL方法时,对该项目的引用会告诉指令指针进入您的开放代码而不是编译后的DLL。完成调试后将引用更改回DLL! - MiloNC
谢谢MiloNC,是的,我确实这样做了,但它没有进入我的dll项目。我使用了断点。 - Kabo Moleti
Kabo Moleti。我的下一个建议是,既然你已经配置好了,就清除临时文件。多年来,这个方法在VB偶尔表现奇怪的时候帮了我很多次。关闭VB和所有应用程序,重新启动,在文件资源管理器中转到地址%temp%,它会扩展为C:\Users....\temp。删除所有文件。系统会保护您免受删除正在使用的文件的影响。如果您感到更加谨慎,请查找以“VB”开头的文件和具有.tmp扩展名的其他文件。然后再试一次。 - MiloNC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接