2012-01-17 10 views
8

Tengo un archivo de bloqueo donde puedo ver que uno de mis propios controles de usuario de VB6 es responsable del bloqueo; es decir, uno de sus métodos forma parte del seguimiento de pila y puedo ver que la línea es responsable.¿Cómo ver las variables de nivel de control de VB6 en WinDbg?

Desde aquí, me gustaría inspeccionar el estado de sus variables miembro. ¿Cómo hago esto?

Nota: También tengo los símbolos privados para mis controles. El problema es poder inspeccionar "Yo". El comando ! Object address_of_Me no parece funcionar, por lo que estoy perdido.

Gracias.

+0

+1 Me gustaría también muy gustaría saber cómo hacer esto – MarkJ

Respuesta

0

bien, codeSMART tiene una opción para instalar el identificador global en su aplicación La primera llamada a SetUnhandledExceptionFilter (win api) debe instalarse cuando cargue el formulario principal o principal de su módulo cuando cierre el programa así que llame a SetUnhandledExceptionFilter.

el código es poco largo para copiar nombres y Métodos API llama

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 

También aquí se encuentra Record declaraciones Estructura y APIs para el módulo

- 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 

Tome un revisado que How to route the exe exception back to VB6 app?

1

Han pasado 10 años desde que tuve que hacer esto en VB6, pero recuerdo muchas declaraciones de Printer.Print en mi vida anterior :)

que solía hacer cosas como esta para la depuración (pero no para el código de liberación)

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 
Cuestiones relacionadas