VB6中的堆栈跟踪

时间:2010-07-30 00:36:22

标签: vb6 line-numbers

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

5 个答案:

答案 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获取尽可能多的信息。