4

是否可以在 Visual Basic 6.0 中获取堆栈跟踪信息。我的意思是我想找出导致类似于 .NET 堆栈跟踪的错误的函数名称和确切行。我创建了一个 ActiveX DLL,它在我的测试环境中运行良好,但在生产环境中引发错误(错误:91-Object 变量或未设置块变量)。对此非常感谢任何帮助。

4

5 回答 5

4

是一个很好的方法 - 对现有重复问题的回答。使用 MZTools 自动插入错误处理程序


或者,您可以使用Microsoft 提供的免费独立调试器WinDBG在生产环境中调试您构建的 DLL 。将您的 DLL 编译为带有符号的本机代码(创建 PDB 文件)。

这是 Microsoft 人员2006 年关于将 Windbg 与 VB6 结合使用的博客文章,以及另一位 Microsoft 人员 2004 年关于 Windbg的简要介绍的博客文章。

于 2010-07-30T07:58:39.347 回答
1

VB6 似乎没有一种体面的方式来实现这一点。

这有点麻烦,但您可以组合一个自定义解决方案,随时在文本文件中添加行。在某处放置一个如下所示的方法:

Public Sub LogCall(message as String)
    Open "c:\My Documents\sample.txt" For Output As #1
    Print #1, message
    Close #1
End Sub

然后从您自己的函数中手动调用它

LogCall "MyFunction: Line 42"

它不能解决问题,但可以帮助您缩小范围。

关于您的具体错误,我会检查您将对象分配给变量的情况 - 我发现很容易忘记Set关键字并在我最不期望的时候得到完全相同的错误。

于 2010-07-30T00:53:08.543 回答
1

我首选的方法是 HuntERR ;它在许可许可下,因此可以在任何项目中不受惩罚地使用。

http://www.devx.com/vb2themax/Tip/19792

这是一个出色的 VB6 静态库,它允许完整的堆栈跟踪以及您希望包含的尽可能多的信息。

在 IDE 中自动插入错误处理程序和行号会极大地受益。

链接的存档有许多我不熟悉的附加功能,包括似乎是 VB6 IDE 插件的东西——我将把它添加到我的 VB6 套件集合中。

这个图书馆真的可以让你远离“嗯?” 拥有完整的行编号的堆栈跟踪,它在正确使用时为 VB6 提供了专业级别的错误处理。

于 2012-08-10T20:33:06.467 回答
1

唯一的选择是手动进行,使用 VB6 的错误处理。
这是一个例子:
http ://www.vbaccelerator.com/home/vb/code/Techniques/RunTime_Debug_Tracing/article.asp

于 2010-07-30T00:45:03.457 回答
0

在 VB6 中您可能无法做到这一点。上一个问题从Err 对象
中获取尽可能多的信息。

于 2010-07-30T00:43:56.133 回答