【问题标题】:How to debug VC++ dll in VB6如何在VB6中调试VC++ dll
【发布时间】:2014-05-20 11:38:26
【问题描述】:

我尝试了几种不同的方法,但都不起作用。

我试过的方法一:

启动 VB 程序并运行直到 DLL 运行。 打开 VC++(无项目)并选择 Build |开始调试 |附加到进程 附加到 VB 程序 在VC++中打开DLL源代码文件,在代码中选择一个断点。 继续运行VB程序,并没有跳转到VC++。

我试过的方法二:

“经过长时间的努力找到了答案。实际上我们必须在Projects->settings->debug->category->general->Executable for debug session中给出VB6.exe的路径。然后当你尝试通过在需要检查的函数中设置断点来调试 VC++ dll,将打开一个新的 VB6 IDE。请选择实际调用 VC++6 dll 的 VB6 Dll 项目。运行该应用程序,当对 VC++6 的函数调用来自 VB6 函数,控件自动转到 VC++ IDE,您可以像使用 usua 一样对其进行调试”来自 MSDN---->它只是转到 VB 应用程序中的下一行代码,没有像方法 1 那样进入 VC++ IDE。

VB 应用程序声明 dll 文件如下:

 dim query as object
 query=CreateObject("ClientServer.getResultClass")

 query.execute(parameter1,parameter2)

我不确定是否需要将调试 dll 放到特定的位置,或者我可能需要注册调试 dll 文件(我检查了 gedit,ClientServer.getResultClass 已注册)。

【问题讨论】:

  • 您可能需要注册调试DLL。您可以使用 SysInternals ProcessView 来检查 vb6 是否真的在调用调试 DLL 或仍在您的系统上注册的其他版本。
  • 谢谢,Debug Dll 名称最后包含 D。是否必须更改名称并替换原始 DLL 文件或将其放在同一个文件夹中。

标签: vb.net visual-c++ dll vb6


【解决方案1】:

您在方法 1 的正确轨道上。您需要确保附加“本机”调试器,并且 DLL 包含调试信息,并且源代码与 DLL 匹配。如果满足所有三个条件,它应该可以工作。请注意,几乎总是需要使用新构建的 DLL 来确保满足第三个条件。

【讨论】:

  • 谢谢。 “DLL 包含调试信息”是什么意思?我是否必须构建一个调试版本的 DLL 并替换原来的?例如,应用程序的 DLL 文件的默认路径位于 C\Program Files\Common Files\ProjectName。所以我得把调试DLL复制到这个路径下开始调试?
  • 您的项目设置控制 DLL 是否包含调试信息。默认情况下,您的 Debug 版本应该有它。是的,将新构建的调试 DLL 复制到应用程序将加载它的任何位置,然后按照您在方法 1 中概述的步骤进行操作。
  • 谢谢。如果我将 DLL 替换为 debug DLL ,我将无法运行该程序。我收到消息说检查 xxx.dll 是否已安装并注册。我也无法注册调试 DLL。 “找不到指定的模块”,但适用于发布 DLL。有什么建议吗?
  • 你所描述的听起来像是一个完全不同且不相关的问题。我建议发布一个关于这个问题的新问题。确保提供足够的详细信息。
猜你喜欢
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
相关资源
最近更新 更多