Patent ID: 7870541

Claim:
A computer implemented method for determining function call history for a system, which runs both code with a frame pointer and a stack pointer and code with a stack pointer and without a frame pointer, comprising: freezing execution on at least one CPU; stepping through a function of a plurality of functions that were executing on the at least one CPU, wherein some of the plurality of functions have a frame pointer and a stack pointer and some of the plurality of functions have a stack pointer but do not have a frame pointer, comprising: keeping track of instructions that change a stack pointer; keeping track of instructions that change a frame pointer; determining what instructions change at least one of the stack pointer and the frame pointer to determine an offset to a return address, when the function of the plurality of functions being stepped through has a frame pointer and stack pointer; and determining what instructions change the stack pointer to determine an offset to the return address, while retaining a frame pointer of a previous one of the functions, when the function of the plurality of functions being stepped through has a stack pointer but not a frame pointer; using the offset to find a parent function that called the function being stepped through; and stepping backwards to find a beginning of the function when instructions for the function are of constant length and the stepping through the function is unable to step forward to an end of the current function.