History-based call stack construction
First Claim
1. In a computing environment, a method of constructing a call stack for a software program, the call stack having allocated memory or registers in the computing environment, comprising:
- obtaining a comprehensive recording of an execution history of the program;
determining which procedure calls have no corresponding returns, the returns having a corresponding return address in either the allocated memory or registers; and
for display to a user in the computing environment, constructing a list of the determined procedure calls having no corresponding returns without reading the return address in the allocated memory or registers.
5 Assignments
0 Petitions
Accused Products
Abstract
In a computing system environment, methods and apparatus relate to constructing a call stack for a software program based upon a comprehensive recording of an execution history of the software program. Upon defining procedure calls and returns in the execution history, a call stack is constructed for the procedure calls having no corresponding returns, but without reading or otherwise examining allocated stack memory or registers, such as return addresses. In this manner, an accurate call stack can be constructed despite stack memory or registers being erased or corrupted or despite various compiler optimizations eliminating convenience or otherwise complicating the construction. Nuances for defining procedure calls and returns as well as stack pointer values for same are also contemplated. Still other embodiments relate to stand-alone computer program products (on computer-readable media or as a download, or other) or those working in conjunction with other programs.
-
Citations
23 Claims
-
1. In a computing environment, a method of constructing a call stack for a software program, the call stack having allocated memory or registers in the computing environment, comprising:
-
obtaining a comprehensive recording of an execution history of the program; determining which procedure calls have no corresponding returns, the returns having a corresponding return address in either the allocated memory or registers; and for display to a user in the computing environment, constructing a list of the determined procedure calls having no corresponding returns without reading the return address in the allocated memory or registers. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 15)
-
-
10. In a computing environment, a method of constructing a call stack for a software program, comprising:
-
allocating memory or registers in the computing environment to the call stack; recording an execution history of the program; determining which procedure calls of the execution history have no corresponding returns, the returns having a corresponding return address in either the allocated memory or registers; constructing a list of the determined procedure calls having no corresponding returns without reading the return address in the allocated memory or registers; and displaying the constructed list as a call stack to a user in the computing environment. - View Dependent Claims (11, 12, 13, 14)
-
-
16. A computer program product having computer-executable instructions for installation on a computing device for constructing a call stack for a software program on or in communication with the computing device, the call stack having allocated memory or registers in the computing environment, comprising:
-
a first component functional to understand a comprehensive recording of an execution history of the program; a second component to determine which procedure calls of the execution history have no corresponding returns, the returns having a corresponding return address in either the allocated memory or registers; a third component to construct a stacked list of the determined procedure calls having no corresponding returns without reading any of the return addresses in the allocated memory or registers; and a fourth component functional to cause display to a user of the stacked list on a monitor of the computing device. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
Specification