是否可以在 Visual Basic 6.0 中获取堆栈跟踪信息。我的意思是我想找出导致类似于 .NET 堆栈跟踪的错误的函数名称和确切行。我创建了一个 ActiveX DLL,它在我的测试环境中运行良好,但在生产环境中引发错误(错误:91-Object 变量或未设置块变量)。对此非常感谢任何帮助。
5 回答
这是一个很好的方法 - 对现有重复问题的回答。使用 MZTools 自动插入错误处理程序
或者,您可以使用Microsoft 提供的免费独立调试器WinDBG在生产环境中调试您构建的 DLL 。将您的 DLL 编译为带有符号的本机代码(创建 PDB 文件)。
这是 Microsoft 人员2006 年关于将 Windbg 与 VB6 结合使用的博客文章,以及另一位 Microsoft 人员 2004 年关于 Windbg的简要介绍的博客文章。
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
关键字并在我最不期望的时候得到完全相同的错误。
我首选的方法是 HuntERR ;它在许可许可下,因此可以在任何项目中不受惩罚地使用。
http://www.devx.com/vb2themax/Tip/19792
这是一个出色的 VB6 静态库,它允许完整的堆栈跟踪以及您希望包含的尽可能多的信息。
在 IDE 中自动插入错误处理程序和行号会极大地受益。
链接的存档有许多我不熟悉的附加功能,包括似乎是 VB6 IDE 插件的东西——我将把它添加到我的 VB6 套件集合中。
这个图书馆真的可以让你远离“嗯?” 拥有完整的行编号的堆栈跟踪,它在正确使用时为 VB6 提供了专业级别的错误处理。
唯一的选择是手动进行,使用 VB6 的错误处理。
这是一个例子:
http ://www.vbaccelerator.com/home/vb/code/Techniques/RunTime_Debug_Tracing/article.asp