DEBUGGING PROGRAM CODE AT INSTRUCTION LEVEL THROUGH EMULATION
First Claim
1. A computer-implemented method for debugging executable code, the method comprising:
- executing the executable code stopping execution of the executable code at a current function;
locating an instruction code segment of the current function;
emulating the instruction code segment;
after emulating the instruction code segment, retrieving at least one value of non-volatile registers for a caller function of the current function, wherein the instruction code segment modifies at least one value of non-volatile registers; and
providing the at least one value of a non-volatile registers for the caller function.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and systems are disclosed for debugging program code at instruction level by emulating an epilog. Issues with retrieving values that a caller function has stored in non-volatile registers before calling a callee function are addressed at the instruction code level by through emulation. The epilog of the callee function may be emulated after copying a computing environment of the target program code from a target system to an emulation system. When the debugged code does not include an epilog, values that a caller function stored before calling a callee function in non-volatile registers may be retrieved by emulating the calling function forward from the breakpoint.
13 Citations
20 Claims
-
1. A computer-implemented method for debugging executable code, the method comprising:
-
executing the executable code stopping execution of the executable code at a current function; locating an instruction code segment of the current function; emulating the instruction code segment; after emulating the instruction code segment, retrieving at least one value of non-volatile registers for a caller function of the current function, wherein the instruction code segment modifies at least one value of non-volatile registers; and providing the at least one value of a non-volatile registers for the caller function. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computing device, comprising:
-
at least one processing unit; and at least one memory storing computer executable instructions for debugging program code at instruction level, the instructions when executed by the at least one processing unit causing the computing device to; execute the executable code stop execution of the executable code at a current function; locate an instruction code segment of the current function; emulate the instruction code segment; after emulating the instruction code segment, retrieve at least one value of non-volatile registers for a caller function of the current function, wherein the instruction code segment modifies at least one value for non-volatile registers; and provide the at least one value of a non-volatile registers for the caller function. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A computer storage device storing computer executable instructions for debugging program code at instruction level, the instructions when executed by at least one processing unit, cause the at least one processing unit to:
-
execute the program code; stop execution of the program code at a current function; locate an instruction code segment of the current function; emulate the instruction code segment; after emulating the instruction code segment, retrieve at least one value of non-volatile registers for a caller function of the current function, wherein the instruction code segment modifies at least one value for non-volatile registers; and provide the at least one value of a non-volatile registers for the caller function. - View Dependent Claims (17, 18, 19, 20)
-
Specification