Collection of timing and coverage data through a debugging interface
First Claim
1. A method for monitoring execution of an application comprising:
- reporting debugging information to a program monitor using an application debugging interface, said program monitor executing within address space of said application;
gathering program execution information using the debugging information to monitor execution of the application, wherein said debugging information includes a character offset position associated with a source file;
building a line table associated with the source file, the line table including beginning and ending character offsets corresponding to a source line of the source file; and
determining a source line number for said character offset position;
, wherein said character offset position is included in the debugging information and the source line number is included in the program execution information.
7 Assignments
0 Petitions
Accused Products
Abstract
Techniques for gathering execution information about an application, such as a distributed application, are described. Key communication points in cross execution context calls, such as remote procedure calls, are determined and control is transferred to instrumentation routines to insert and extract execution information. Outgoing remote procedure calls are intercepted on a client that inserts call origin information into the request sent to a server system. Messages received by a server are intercepted. The server system extracts the call origin information and additionally inserts other information in a response sent to the client system upon completion of a remote procedure call. In turn, the client system intercepts the response and extracts other performance information. On each client and server system, information is gathered by a reader and forwarded to a local collector. This information may be further forwarded to and correlated by a client collector from one or more remote server collectors in accordance with processes of each distributed application. Various statistics for a distributed application may be determined in addition to per process statistics. These include wire time, code coverage as related to the distributed application, remote procedure call tracing, and performance profiling. A variety of techniques are described to obtain program execution information in connection with an executing application including instrumentation techniques and use of a debugger interface to obtain profiling and other execution information. All of the program execution data may be collected and correlated at one or more particular points using other techniques described to represent coordinated application monitoring.
-
Citations
50 Claims
-
1. A method for monitoring execution of an application comprising:
-
reporting debugging information to a program monitor using an application debugging interface, said program monitor executing within address space of said application;
gathering program execution information using the debugging information to monitor execution of the application, wherein said debugging information includes a character offset position associated with a source file;
building a line table associated with the source file, the line table including beginning and ending character offsets corresponding to a source line of the source file; and
determining a source line number for said character offset position;
, wherein said character offset position is included in the debugging information and the source line number is included in the program execution information.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 46, 47)
deriving a portion of the program execution information from data reported using the application debugging interface.
-
-
3. The method of claim 1, wherein said application debugging interface is used in connection with debugging the application.
-
4. The method of claim 1, wherein the program execution information includes one of:
- performance profiling data, code coverage data, program tracing data.
-
5. The method of claim 4, wherein the program execution information includes cross execution context call information from a first execution context call to a second execution context call, said first execution context call being associated with a calling function and said second execution context call being associated with a called function.
-
6. The method of claim 5, wherein the application is a distributed application.
-
7. The method of claim 6, wherein the cross execution context call is a remote procedure call.
-
8. The method of claim 7, further comprising:
-
executing the calling function in a client system;
executing the called function in a server system; and
correlating information about the remote procedure call at the client system.
-
-
9. The method of claim 8, further comprising:
reporting program execution information from the server to the client system using in correlating information about the remote procedure call.
-
10. The method of claim 9, wherein said program execution information includes program trace data for understanding execution of said distributed application.
-
11. The method of claim 1, further comprising:
gathering program execution information associated with a portion of the application being monitored without using a pre-execution instrumentation technique.
-
12. The method of claim 11, wherein said portion is produced using one of:
- VBScript code and JavaScript code.
-
13. The method of claim 1, further comprising:
producing a portion of the application is using a non-generative translation technique.
-
14. The method of claim 1, further comprising:
producing a portion of the application is a generative translation technique.
-
15. The method of claim 1, further comprising:
registering the program monitor as a debugger.
-
16. The method of claim 1, further comprising:
transforming debug information into program execution information.
-
17. The method of claim 16, wherein the program execution information includes function entry information, and the method further comprising:
determining a source line included in the function entry information using function information stored in a line table.
-
18. The method of claim 17, wherein said program execution information includes fiction exit information, and the method further comprises:
detecting end of processing by detecting a predetermined period of execution inactivity associated with a portion of code.
-
19. The method of claim 18, further comprising:
transferring control, by address patching, to monitoring software upon detection of end of processing of a portion of code.
-
20. The method of claim 16, wherein said program execution information includes execution information associated with execution of a line of code.
-
21. The method of claim 20, further comprising:
-
transferring control to the program monitor when executing in single step mode;
recording first data after executing a first instruction about said first instruction and about a next subsequent instruction.
-
-
22. The method of claim 21, further comprising:
-
recording second data after executing said next subsequent instruction; and
determining a processing time associated with the next subsequent instruction using said first and second data.
-
-
23. The method of claim 16, wherein said program execution information includes tracing information used in connection with code coverage information.
-
24. The method of claim 1, further comprising:
-
transferring control to the program monitor after executing a line of code; and
recording in the line table code coverage information associated with the line of code.
-
-
25. The method of claim 4, further comprising:
communicating the program execution information from a server to a client.
-
46. The computer program product of claim 5, further comprising:
-
machine executable code for transferring control to the program monitor when executing in single step mode; and
machine executable code for recording first data after executing a first instruction about said first instruction and about a next subsequent instruction.
-
-
47. The computer program product of claim 46, further comprising:
-
machine executable code for recording second data after executing said next subsequent instruction; and
machine executable code for determining a processing time associated with the next subsequent instruction using said first and second data.
-
-
26. A computer program product for monitoring execution of an application comprising:
-
machine executable code for reporting debugging information to a program monitor using an application debugging interface, said program monitor executing within address space of said application;
machine executable code for gathering program execution information using the debugging information to monitor execution of the application, wherein said debugging information includes a character offset position associated with a source file;
machine executable code for building a line table associated with the source file, the line table including beginning and ending character offsets, corresponding to a source line of the source file; and
machine executable code for determining a source line number for said character offset position, wherein said character offset position is included in the debugging information and the source line number is included in the program execution information. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50)
machine executable code for deriving a portion of the program execution information from data reported using the application debugging interface.
-
-
28. The computer program product of claim 26, wherein said application debugging interface is used in connection with debugging the application.
-
29. The computer program product of claim 26, wherein the program execution information includes one of:
- profiling data, performance data, code coverage data, program tracing data.
-
30. The computer program product of claim 29, wherein the program execution information includes cross execution context call information from a first execution context call to a second execution context call, said first execution context call being associated with a calling function and said second execution context call being associated with a called function.
-
31. The computer program product of claim 30, wherein the application is a distributed application.
-
32. The computer program product of claim 31, wherein the cross execution context call is a remote procedure call.
-
33. The computer program product of claim 32, further comprising:
-
machine executable code for executing the calling function in a client system;
machine executable code for executing the called function in a server system; and
machine executable code for correlating information about the remote procedure call at the client system.
-
-
34. The computer program product of claim 33, further comprising:
machine executable code for reporting program execution information from the server to the client system using in correlating information about the remote procedure call.
-
35. The computer program product of claim 34, wherein said program execution information includes program trace data for understanding execution of said distributed application.
-
36. The computer program product of claim 26, further comprising:
machine executable code for gathering program execution information associated with a portion of the application being monitored without using a pre-execution instrumentation technique.
-
37. The computer program product of claim 36, wherein said portion is produced using one of:
- VBScript code and JavaScript code.
-
38. The computer program product of claim 26, further comprising:
machine executable code for producing a portion of the application using a non-generative translation technique.
-
39. The computer program product of claim 26, further comprising:
machine executable code for producing a portion of the application using a generative translation technique.
-
40. The computer program product of claim 26, further comprising:
machine executable code for registering the program monitor as a debugger.
-
41. The computer program product of claim 26, further comprising:
machine executable code for transforming debug information into program execution information.
-
42. The computer program product of claim 41, wherein the program execution information includes function entry information, and the computer program product further comprising:
machine executable code for determining a source line included in the function entry information using function information stored in a line table.
-
43. The computer program product of claim 42, wherein said program execution information includes function exit information, and the computer program product further comprises:
machine executable code for detecting end of processing by detecting a predetermined period of execution inactivity associated with a portion of code.
-
44. The computer program product of claim 43, further comprising:
machine executable code for transferring control, by address patching, to monitoring software upon detection of end of processing of a portion of code.
-
45. The computer program product of claim 41, wherein said program execution information includes execution information associated with execution of a line of code.
-
48. The computer program product of claim 41, wherein said program execution information includes tracing information used in connection with code coverage information.
-
49. The computer program product of claim 26, further comprising:
-
machine executable code for transferring control to the program monitor after executing a line of code; and
machine executable code for recording in the line table code coverage information associated with the line of code.
-
-
50. The computer program product of claim 49, further comprising:
machine executable code for communicating the program execution information from a server to a client.
Specification