Claims
- 1. A method of forming a stack signature responsive to execution of a computer program in a digital computer, the method comprising the steps of:
halting execution of the computer program; tracing the program's call stack to determine a series of stack frames resulting from execution of the program; capturing a selected metric with respect to each stack frame in the series; encoding each captured metric into a corresponding symbol; and assembling the series of encoded symbols into an ordered list thereby forming a stack frame signature that reflects generally the execution of the computer program.
- 2. A method according to claim 1 wherein the selected metric comprises a length of each of the stack frames.
- 3. A method according to claim 1 wherein the selected metric comprises an identifier of a generic type of callee module corresponding to each of the stack frames.
- 4. A method according to claim 1 wherein the selected metric comprises an identifier of a specific callee code module corresponding to each of the stack frames.
- 5. A method according to claim 1 wherein the selected metric comprises an identifier of a callee library associated with of each of the stack frames.
- 6. A method according to claim 1 wherein the selected metric comprises an indication of a system call as applicable to each of the stack frames.
- 7. A method according to claim 1 wherein the selected metric comprises an indication of a peripheral driver module call as applicable to each of the stack frames.
- 8. A method according to claim 1 and further including delimiting the series of encoded symbols so as to indicate the start and the end of the call stack.
- 9. A method according to claim 1 and further comprising filtering the stack frame signature by deleting symbols corresponding to stack frames associated with predetermined callee code modules.
- 10. A method according to claim 1 and further comprising filtering the stack frame signature by deleting symbols corresponding to stack frames associated with selected types of modules.
- 11. A method according to claim 1 and further comprising filtering the stack frame signature by deleting symbols corresponding to stack frames associated with system calls.
- 12. A method according to claim 1 and further comprising filtering the stack frame signature by deleting symbols corresponding to stack frames associated with calls to peripheral drivers.
- 13. A method according to claim 1 and further comprising truncating the stack frame signature so as to preserve only a selected portion of the signature.
- 14. A method according to claim 1 and wherein said encoding includes transforming the captured metric into a representation that is more compact than a binary representation, thereby facilitating human inspection and recognition of the stack frame signature.
- 15. A method of assessing a computer program under actual working conditions comprising the steps of:
executing the computer program multiple times under actual working conditions; in response to each unhandled exception encountered during execution of the computer program, creating a corresponding stack frame signature to characterize the state of the program; and comparing the stack frame signatures to determine which unhandled exceptions are likely to have resulted from similar features.
- 16. A method of assessing a computer program according to claim 15 wherein said comparing the stack frame signatures includes identifying at least one category of stack frame signatures based on a common attribute.
- 17. A method of assessing a computer program according to claim 16 wherein the common attribute is that the stack frame signatures are identical.
- 18. A method of assessing a computer program according to claim 16 wherein the common attribute is that each of the stack frame signatures reflects a series of frames having correspondingly equal sizes.
- 19. A method of assessing a computer program according to claim 16 wherein the common attribute is an identical substring.
- 20. A method of assessing a computer program according to claim 15 wherein each stack frame signature comprises a series of symbols, each symbol representing a predetermined attribute of a corresponding stack frame, and the series of symbols including at least one symbol responsive to each frame of the program stack.
- 21. A method of assessing a computer program according to claim 15 wherein said comparing the stack frame signatures includes searching for a matching substring.
- 22. A method of assessing a computer program according to claim 15 wherein said comparing the stack frame signatures includes first filtering the stack frame signatures so as to remove indicia of certain predetermined types of calls.
- 23. A method of assessing a computer program according to claim 22 wherein said types of calls include driver calls.
- 24. A stack frame signature data structure encoded in machine-readable form for characterizing an unhandled exception caused by a computer program, the stack frame signature comprising a series of symbols, each symbol responsive to a predetermined attribute of a corresponding stack frame.
- 25. A stack frame signature according to claim 24 wherein the series of symbols includes at least one symbol responsive to each frame of at least a portion of the program stack.
- 26. A stack frame signature according to claim 24 comprising a linear array of symbols, each symbol encoding a respective length of a corresponding one of the stack frames determined from tracing the call stack, so that the stack frame signature broadly reflects execution of the application program independent of specific address information.
- 27. A stack frame signature computer program encoded in machine-readable form for execution on a platform comprising:
registry means for registering the stack frame signature program in an operating system so that the operating system will launch the stack frame signature program responsive to abnormal termination of an application program; means for tracing the application program's call stack to determine a series of stack frames resulting from execution of the application program up to the termination; means for collecting a size metric of each stack frame in the series; means for encoding each size metric into a corresponding symbol; and means for assembling the series of symbols so as to form a stack frame signature.
RELATED APPLICATIONS
[0001] This application is a continuation of and claims priority from U.S. Provisional Application No. 60/293,864 filed May 24, 2001. The provisional application is incorporated herein by this reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60293864 |
May 2001 |
US |