Patent ID: 8732681

Claim:
A method of operating a computer for debugging a software application comprising the steps of: compiling and linking the software application to run on the computer including specifying a plurality of functions, each function called to perform a corresponding data processing task and each function stored in memory at a corresponding range of addresses, and specifying a memory address of a start of a stack of the software application and a maximum expected stack size; running the compiled and linked software application on the computer; upon a crash of the compiled and linked software application running on the computer performing the following steps: searching memory locations from the memory address of the start of the stack to the maximum expected stack size for any address value that map to an address within one of the plurality of functions; determining the current function for the call frame from the debug information indicating the target of any branches; determining the value of the program counter and the stack pointer from the stack pointer offset value contained in the debug information; repeating the above for all possible address values found that map to an address within a function; generating multiple stack call lists based on thus determined program counter and stack pointer values; removing duplicate stack call lists; removing shorter call lists that are within a longer call list; selecting the last recovered stack call list indicating the location of the event causing the crash.