如何在WinDbg中查看VB6控件级变量?

8
我有一个崩溃文件,其中我可以看到我的一个VB6用户控件是崩溃的原因;即其某个方法是堆栈跟踪的一部分,我可以看到负责的行。
从这里开始,我想检查其成员变量的状态。我该怎么做?
注意:我还有我的控件的私有符号。问题在于能否检查“Me”。命令!object address_of_Me似乎行不通,所以我不知所措。
谢谢。

+1 我也非常想知道如何做到这一点。 - MarkJ
2个回答

1

距离我上次在VB6中这样做已经过去10年了,但我还记得我的过去生活中有很多Printer.Print语句 :)

我曾经为调试而这样做(但不是为发布代码)

Sub MySub
    On Error Goto ErrorTrap
    Dim intX as integer
    Dim intY as integer

    ' do some horrible error here

Exit Sub

ErrorTrap:
    Printer.Print "Error"
    Printer.Print intX
    Printer.Print intY
    Printer.Print ...

End Sub

0

好的,codeSMART有一个选项,在您的应用程序第一次调用SetUnhandledExceptionFilter(win api)时安装全局句柄。当加载您的模块主要表单或主控程序关闭时,应该安装它,因此调用SetUnhandledExceptionFilter。

代码有点长,所以请复制方法名称和api调用。

Public Sub InstallGlobalHandler()
On Error Resume Next

If Not lnFilterInstalled Then
    Call SetUnhandledExceptionFilter(AddressOf GlobalExceptionHandler)
    lnFilterInstalled = True
End If
End Sub

Public Sub UninstallGlobalExceptionHandler()
On Error Resume Next

If lnFilterInstalled Then
    Call SetUnhandledExceptionFilter(0&)
    lnFilterInstalled = False
End If
End Sub

还有该模块的记录结构和API声明

- CopyMemory 
- SetUnhandledExceptionFilter
- RaiseException
' Public enums
-EExceptionType
-EExceptionHandlerReturn    
-Private Const EXCEPTION_MAXIMUM_PARAMETERS = 15
' Private record structure
-Private Type CONTEXT      
'Structure that describes an exception.
-Private Type EXCEPTION_RECORD
'Structure that contains exception information that can be used by a debugger.
-Private Type EXCEPTION_DEBUG_INFO
-Private Type EXCEPTION_POINTERS

请参阅修订版,如何将exe异常返回到VB6应用程序?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接