是否可以在Visual Basic 6.0中获取堆栈跟踪信息。我的意思是我想找出导致错误类似于.NET堆栈跟踪的函数名称和确切行。我创建了一个ActiveX DLL,它在我的测试环境中工作正常,但它在生产环境中抛出错误(错误:91-对象变量或未设置块变量)。对此的任何帮助都非常感激。
答案 0 :(得分:4)
This是一个很好的方法 - 对现有的重复问题的答案。使用MZTools自动插入错误处理程序
或者,您可以使用Microsoft的免费独立调试器WinDBG在生产环境中调试构建的DLL。使用符号将DLL编译为本机代码(创建PDB文件)。
这是一个微软家伙的2006 blog post关于在VB6上使用Windbg的问题,以及另一个微软家伙的2004 blog post,其中简要介绍了Windbg。
答案 1 :(得分:1)
唯一的选择是手动执行,使用VB6的错误处理
这是一个例子:
http://www.vbaccelerator.com/home/vb/code/Techniques/RunTime_Debug_Tracing/article.asp
答案 2 :(得分: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
关键字,当我得到完全相同的错误最不期望的。
答案 3 :(得分:1)
我这样做的首选方法是HuntERR;它属于许可许可,因此可以在任何项目中使用而不受惩罚。
http://www.devx.com/vb2themax/Tip/19792
这是一个优秀的VB6静态库,允许使用尽可能多的信息来提供完整的堆栈跟踪。
通过在IDE中进行一些自动化来插入错误处理程序和行号,可以获得极大的好处。
链接的存档有许多我不熟悉的附加内容,包括似乎是VB6 IDE插件的内容 - 我将把它添加到我的VB6工具包集合中。
这个图书馆真的可以带你去“HUH?”如果堆栈跟踪具有完整的行编号,则在正确使用时为VB6提供专业级别的错误处理。
答案 4 :(得分:0)
你可能无法在VB6中实现这一目标。 previous question。
从Err object获取尽可能多的信息。