Search code examples
debuggingvb6error-handlingstack-traceproduction-environment

Runtime error stacktrace or location in VB6


I maintain an old application written in VB6. In client's environment it raises runtime errors which I can't reproduce under debugger. Is there any way to get the stacktrace or location of error?

I mean, without putting trace statements all over the code like here or adding error handlers for logging to every procedure like here.

It seems to be a simple question. Sorry. I just don't know VB6 very well. And it is surprisingly hard to google out any information, considering how widely it is (or used to be) used.


Solution

  • Try compiling to pcode and see if you still get the error. This is one common difference between the debug mode of VB6 and runtime. I used to compile to native and ran into errors that only occurred in runtime. When I switched to pcode I found either the error went away or more likely a new error that reflected the real problem cropped up and was more easily reproduced in debug mode.

    If despite that you still getting the error then I really recommend starting at the top of your procedure stack and working you way down using Maero's suggestion of

    On Error Goto Handler
    <code>
    Exit <routine>
    Handler:
    Err.Raise Err.Number, "(function_name)->" & Err.source, Err.Description
    

    It is a pain but there is no real way around it.