What is the ATEasy crash analysis tool?
The ATEasy Crash Analysis Tool replaces the default exception window generated by Windows when any application crashes. It is designed to provide the user with additional support when developing and debugging ATEasy applications. The ATEasy Exception Window created provides a snapshot of your information at the moment the exception was generated. It displays the exception as reported by Windows and a listing of the ATEasy procedure call stack organized by the user running threads. More information regarding the ATEasy internal libraries is logged to the Windows Application Events Log to be used for user bug tracking and application debugging by Marvin Test Solutions engineers.
The crash analysis tool is available in ATEasy version 8 and later.
The following window shows the generic exception as displayed by Windows when it traps the application exception:
The Windows Generic Exception Dialog
The following window shows the ATEasy Exception window:
The ATEasy Exception Dialog
Exit will close the ATEasy Exception window and the ATEasy application without saving any information.
Save... will prompt the user to select a file location to save the event log with ATEasy events including the currently reported error and other events related to the most recent ATEasy session.
Save All... will prompt the user to select a file location to save the event log with all ATEasy events currently in the Windows Event log including time-stamped exceptions that may have occurred in previous sessions.
If the Dump (.dmp) checkbox is checked, a dump file will be created and zipped. The zip file will be placed in the same directory as the event log created during a Save... or Save All... button press. The dump file contains a memory snapshot of the ATEasy or ATEasy application at the time of the crash.
The event file and dump file can be uploaded to a Magic incident for further analysis by Marvin Test Solutions engineers to debug and possibly fix the issue caused by the application or by internal ATEasy error.
Breakdown: What does the log information mean?
Sample Exception Log Window Information:
Unhandled exception at 0x1051b628 (Base address = 0xfdd0000) in C:\Program Files (x86)\Marvin Test Solutions\ATEasy\2021\ATEasy.exe : Memory access violation 0xc0000005
Thread (Current) Index=0, ID=0x4164, Handle=0x1430, UUT=-1
ATEasy Call Stack
ATEasyExceptionProcedure (Program=Language, Type=Procedure) Line 6
Parameters
astNested=??????
al={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Local Variables
dw=0
Internal PCode
...
Internal Call Stack
...
Thread Index=1, ID=0x2464, Handle=0x0, UUT=-1
...
Thread Index=2, ID=0x940, Handle=0x0, UUT=-1
...
Thread Index=3, ID=0x46e4, Handle=0x0, UUT=-1
...
The Threads Call Stack tree view displays the following information:- Thread. The first line always displays the thread where the crash occurred. This could be a user thread running ATEasy code or a thread created by the ATEasy development environment or the ATEasy run-time. If your application is multi-threaded, additional user threads are also displayed at the time of the crash as top level items of the tree view.
- Call Stack and PCODE. The items below each of the threads are the call stack followed by PCODE (pseudo code) information (only for the current thread). The current thread top item is the position in the code where the crash occurred. The position can be a procedure or test followed by a line number in the ATEasy code. For the current thread the next line shows the position in the PCODE followed by a PCODE memory dump of the procedure or test that caused the exception
Getting more information with the Windows Application Event Log
The ATEasy call stack will help you pinpoint where the error occurred. If you still require assistance with analyzing the crash, you can send Marvin Test Solutions the Windows Application Event Log filtered for ATEasy events from the Windows Events Viewer.
How to access the Windows Application Event Log for ATEasy events?
- Open the Event Viewer application.
- Navigate the tree view to Event Viewer | Applications and Service Logs | ATEasy
- Each entry in the Event Log corresponds to a documented crash.
Saving the log
After clicking on an entry in the Event View, the Actions panel on the right will be updated with additional options, including "Save Log File As..." The Event Viewer allows you to save to a file with different file formats, select the the EVT log for Windows XP (EVTX for Windows Vista+) and submit to Marvin Test Solutions by uploading the file to your support incident.
The ATEasy Crash Analysis Tool. |
---|
|
What causes these exceptions?
ATEasy catches several common exceptions and attempts to notify the user without allowing the application to crash. This protection does not generally extend to external libraries such as DLLs, COM/ActiveX or .NET assemblies that are called by your ATEasy application. Common cause of these exceptions are:- Buffer Overrun: Error occurs when more data is given to an array than it was allocated. For example calling a DLL function passing in a string that was not sized properly prior to the call, than the DLL function write to the buffer and corrupts the memory which later on cause a crash when accessing the corrupted memory. Generally this shows as memory access violation (0xC0000005) but could also shows as unexpected behavior since memory is corrupted.
- Buffer Not Allocated: Similar to buffer overrun, however the crash will show exactly the location of the problem. Usually memory access as well (0xC0000005). Most likely passing a NULL string to a DLL that does not check for that. The crash occurs when the DLL attempt to write to address 0.
- DLL Parameter Mismatch: Parameter expected by DLL are not configured properly: wrong number of parameters or wrong data type.
- Exception Thrown from an External Library: Exceptions generated from DLL/ActiveX or .NET will be passed up to ATEasy for reporting.