Byte code instrumentation
DCFirst Claim
1. A method of instrumenting an initial byte code computer program, comprising:
- (a) examining the initial byte code to determine an identifier associated with at least one block of code included in the initial byte code;
(b) selecting portions of the initial byte code for instrumentation; and
(c) instrumenting, while loading the initial byte code, the portions by supplementing the initial byte code with additional byte code for instrumentation that facilitates runtime data gathering to monitor execution of the computer program, wherein a portion of the additional byte code uses the identifier to instrument portions of the initial byte code associated with said at least one block of code.
7 Assignments
Litigations
0 Petitions
Accused Products
Abstract
Instrumenting a computer program to provide instrumented byte code includes examining the byte code, selecting portions of the byte code for instrumentation, and instrumenting the portions to provide instrumented byte code. Selecting the portions may include choosing portions of the byte code corresponding to method entry, method exit, a throw, a method call, or a new line number. Instrumenting a portion of the byte code corresponding to a method call may include instrumenting a local line number of source code corresponding to the byte code being instrumented. Instrumenting the portions may include adding calls to instrumentation runtime functions that pass parameters indicative of the portions being instrumented. At least one of the parameters that is passed may include a line number of the source code corresponding to the portion being instrumented or a object pointer for the method corresponding to the portion being instrumented. Data from instrumentation may be passed via a message stream that is viewed as the data is being generated and/or stored.
266 Citations
32 Claims
-
1. A method of instrumenting an initial byte code computer program, comprising:
-
(a) examining the initial byte code to determine an identifier associated with at least one block of code included in the initial byte code;
(b) selecting portions of the initial byte code for instrumentation; and
(c) instrumenting, while loading the initial byte code, the portions by supplementing the initial byte code with additional byte code for instrumentation that facilitates runtime data gathering to monitor execution of the computer program, wherein a portion of the additional byte code uses the identifier to instrument portions of the initial byte code associated with said at least one block of code. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
(d) placing an object header in the message buffer; and
(e) placing an array header in the message buffer.
-
-
11. A method, according to claim 10, further comprising:
(f) limiting the message buffer to a predetermined size.
-
12. A method, according to claim 4, wherein data indicative of the parameters are stored in a message buffer.
-
13. A method, according to claim 12, wherein data from the message buffer is passed to at least one viewer routine that displays the data to a user.
-
14. A method, according to claim 1, further comprising:
(d) instrumenting an end of a method to provide instrumentation for handling an abort.
-
15. A method according to claim 1, further comprising:
(d) instrumenting a call to a native function by adding a byte code wrapper to the native function and then instrumenting the wrapper.
-
16. A method, according to claim 15, wherein the wrapper includes byte code corresponding to method entry and exit portions.
-
17. A method, according to claim 1, further comprising:
(d) instrumenting a call to a native function by providing an native assembly language thunk that captures data passed to and from the native function.
-
18. A method, according to claim 17, further comprising:
(e) hooking the assembly language thunk between a virtual machine and the call to the native function.
-
19. A method, according to claim 18, wherein hooking the assembly language thunk includes intercepting a call that provides an address for a procedure.
-
20. A method, according to claim 1, further comprising:
(d) providing a routine to pass data via a message stream.
-
21. A method, according to claim 20, further comprising:
(e) providing a data storage to store data provided via the message stream.
-
22. A method, according to claim 20, further comprising:
(e) providing a viewer to allow viewing at least a subset of data from the message stream as the data is being generated.
-
23. A method of instrumenting a computer program, comprising:
-
(a) examining an initial byte code representation of the program to determine an identifier associated with at least one block of code included in the initial byte code;
(b) creating a program counter mapping table corresponding to the byte code representation;
(c) selecting portions of the initial byte code representation for instrumenting using the program counter mapping table;
(d) instrumenting, while loading the initial byte code representation, the portions by supplementing the initial byte code with calls to instrumentation runtime functions at at least some of the portions to facilitate runtime data gathering for monitoring execution of the computer program, wherein a portion of the additional byte code uses the identifier to instrument portions of the initial byte code representation associated with said at least one block of code; and
(e) modifying the program counter mapping table according to original byte code and supplemented byte code. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32)
(f) instrumenting a call to a native function by adding a byte code wrapper to the native function and then instrumenting the wrapper.
-
-
27. A method, according to claim 26, wherein the wrapper includes byte code instrumentation corresponding to method entry and exit portions.
-
28. A method, according to claim 23, further comprising:
(f) instrumenting a call to a native function by providing an native assembly language thunk that captures data passed to and from the native function.
-
29. A method, according to claim 28, further comprising:
(g) hooking the assembly language thunk between a virtual machine and the call to the native function.
-
30. A method, according to claim 29, wherein hooking the assembly language thunk includes intercepting a call that provides an address for a procedure.
-
31. A method, according to claim 23, further comprising:
(f) following examining an initial byte code representation of the program, registering each of the methods and corresponding line numbers thereof with runtime instrumentation code.
-
32. A method, according to claim 31, wherein registering each of the methods and corresponding line numbers thereof facilitates determining the source code being executed during run time debugging.
Specification