Troubleshoot

Parent Previous Next

Troubleshoot.

If a trace file doesn't have all trace events available, you may run into trouble.


Deliberately Discarding Events.

It is easy and perfectly legitimate to generate trace files, which don't have all trace events available.


Here's a few examples of that:


In most situations the debugger can import such an incomplete trace file for debugging.


However, you may experience some issues as described next.


The Invalid Call Stack.

The call stack can become invalid in which case it cannot be presented.


Presenting the call stack requires being able to show all call levels - starting at level zero and with no missing call levels.


If the call stack becomes invalid, you can still continue debugging, and once the code does some execution at level zero in the Main function, the call stack can once again track the path of calls.


Debug Multiple VMs.

If you debug one VMA calling another VMB (with trace events generated for both), missing trace events can cause havoc.


The reason is, that while the trace file is being imported, all code events of VMs on an inner level (here VMB) will have their source code level recalculated to allow the call stack to present the path of calls. Missing trace events can cause these calculations to fail.


Example:

Imagine VMA within a function at level X makes a call to VMB. The entry point of VMB is the Main function, which VMB considers to be level 0, but this level must be imported as level X+1, otherwise the debugger can't handle the path of calls correctly. All source code levels of VMB must be adjusted in this manner. If VMB calls VMC another recalculation is needed for VMC which is based on the new levels of VMB.


In case of missing events this recursive calculation can fail or lead to wrong source code levels.


TIP: To debug one VMA calling another VMB NEVER allow missing trace events in the trace file!