The ATEasy Crash Analysis Tool

Knowledge Base Article # Q200213

Read Prior Article Read Next Article
Summary A breakdown of the ATEasy v8.0 Crash Analysis Tool.

What is the ATEasy crash analysis tool?

The ATEasy Crash Analysis Tool replaces the default exception window generated by Windows when any application running 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 Geotest engineers.

The crash analysis tool is available in ATEasy version 8 and later.

The following window shows the genereic exception as displayed by WIndows when it traps the application exception:

An application without crash analysis

The Windows Generic Exception Dialog

The following windows show the ATEasy Exception window:

ATEasy using crash analysis

The ATEasy Exception Dialog

Breakdown: What does the log information mean?

Sample Exception Log Window Information:

Unhandled exception at 0x7614fbae in C:\Windows\system32\kernel32.dll: 0xe06d7363
Thread (Current) Index=0, ID=0x1178, Handle=0x2e0
     HeartBeatMonitor.tmrHeartBeat.OnTimer Line 12
     IoPort.Msg8Byte Line 11
     Program1.Erase_HOST_EEPROM Line 76
     Program1.4 Line 1
     Internal Call Stack
     Internal PCode
Thread Index=1, ID=0x1484, Handle=0x4a0
     AbortTest.WaitOnEvent Line 2
Thread Index=2, ID=0x17f8, Handle=0x560
     Program1.GUI_Abort.btnAbort.OnClick Line 7
     Program1.startAbortBtn Line 6

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 and thread created by the 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 a top level items of the tree view.
  • Call Stack and PCODE. The items bellow the 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 Geotest 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?

Right-click My Computer and click Manage
Navigate the tree view to System Tools | Event Viewer | Application
Use menu item View | Filter... and set event source to 'ATEasy' and click OK

Each entry in the Event Log corresponds to 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/ Windows 7) and submit to Geotest by uploading the file to your support incident.

The ATEasy Crash Analysis Tool.
The Windows Application Event Viewer

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 (0x5) but could also shows as unexpected behavior since memory is corrupted.
  • Buffer Not Allocated: Similar to buffer overrun, however the crash will show excetly the location of the problem. Usally memory access as well (0x5). 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.
Article Date 4/6/2011 2:57:28 PM     Updated: 7/23/2012 9:01:16 AM
Keywords ATEasy, Error, Exception, Crash, Debug, Debugging, Troubleshoot

0 ratings | 0 out of 5
Read Prior Article Read Next Article