Claims
- 1. A system for injecting code into a compiled application, comprising:
a probe comprising instrumentation code; a directive file containing instructions on injecting said probe into said compiled application; and an instrumentation engine for reading said instructions from said directive file and injecting said probe into said compiled application.
- 2. A system according to claim 1, further comprising a probe library containing said probe.
- 3. A system according to claim 1, wherein said probe is adapted to inject code into at least one of a package, class, method, and line of said compiled application.
- 4. A system according to claim 1, further comprising a user interface for allowing a user to create said directive file.
- 5. A system according to claim 4, wherein said user interface comprises an instrumentation directive.
- 6. A system according to claim 4, wherein said user interface comprises a text file in XML.
- 7. A system according to claim 1, further comprising a global configuration file for storing global configuration parameters for said system.
- 8. A system according to claim 1, further comprising external runtime libraries to which the user can call to implement additional functionality.
- 9. A system according to claim 1, wherein said compiled application contains compiled class files, and said implementation engine is adapted to accept a compiled class file and produce a functionally equivalent instrumented class using said probe.
- 10. A system according to claim 1, wherein said probe contains code for executing a task selected from the group consisting of debugging, tracing, and performance modeling.
- 11. A system according to claim 1, wherein said directive file contains instructions on where in said compiled application to inject said probe.
- 12. A system according to claim 1, wherein said instrumentation engine does not leave code in the application after injecting the probe.
- 13. A system according to claim 1, wherein said instrumentation engine is further adapted to remove said probe from said compiled application.
- 14. A system according to claim 1, wherein said instrumentation engine is further adapted to move said probe to a different injection point in said compiled application.
- 15. A tool for injecting code into compiled applications, comprising:
a probe description language useful for abstracting away the complexity of underlying bytecode instructions; a probe descriptor library comprising instrumentation code written in said probe description language; and an instrumentation engine capable of interpreting the instrumentation code and injecting the instrumentation code into a compiled application.
- 16. A system for monitoring performance of an application, comprising:
a probe comprising instrumentation code for monitoring an application at specific injection points in an application; a directive file containing instructions on injecting said probe into said compiled application; and an instrumentation engine for reading said instructions from said directive file and injecting said probe into said compiled application.
- 17. A system for debugging a compiled Java application, comprising:
a probe comprising instrumentation code for debugging an application at specific injection points in an application; a directive file containing instructions on injecting said probe into said compiled application; and an instrumentation engine for reading said instructions from said directive file and injecting said probe into said compiled application.
- 18. A method for injecting code into a compiled application, comprising:
reading probe specifications from a probe library into an internal representation in an instrumentation engine; interpreting the probe specifications into byte code; and injecting the byte code into method bodies at specific injection points.
- 19. A method according to claim 18, further comprising:
specifying injection points in the application at which to inject the byte code.
- 20. A method according to claim 18, further comprising:
specifying classes and injection points to the injection engine through a directive file.
- 21. A method according to claim 18, further comprising:
reading global information from a global configuration file before injecting said byte code.
- 22. A method according to claim 18, further comprising:
implementing additional functionality by calling external run-time libraries.
- 23. A computer-readable medium, comprising:
means for reading probe specifications from a probe library into an internal representation; means for interpreting the probe specifications into byte code; and means for injecting the byte code into method bodies at specific injection points.
- 24. A computer program product for execution by a server computer for injecting code into a compiled application, comprising:
computer code for reading probe specifications from a probe library into an internal representation; computer code for interpreting the probe specifications into byte code; and computer code for injecting the byte code into method bodies at specific injection points.
- 25. A system for injecting code into a compiled application, comprising:
means for reading probe specifications from a probe library into an internal representation; means for interpreting the probe specifications into byte code; and means for injecting the byte code into method bodies at specific injection points.
- 26. A computer system comprising:
a processor; object code executed by said processor, said object code configured to:
read probe specifications from a probe library into an internal representation; interpret the probe specifications into byte code; and inject the byte code into method bodies at specific injection points.
- 27. A computer data signal embodied in a transmission medium, comprising:
a code segment including instructions to read probe specifications from a probe library into an internal representation; a code segment including instructions to interpret the probe specifications into byte code; and a code segment including instructions to inject the byte code into method bodies at specific injection points.
CLAIM OF PRIORITY
[0001] This application claims priority to U.S. Provisional Patent Application No. 60/349,457, filed Jan. 18, 2002, entitled “FLEXIBLE AND EXTENSIBLE JAVA BYTECODE,” as well as Application No. 60/349,586, filed Jan. 18, 2002, entitled “PROBE DESCRIPTION LANGUAGE,” each of which is hereby incorporated herein by reference.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60349457 |
Jan 2002 |
US |
|
60349586 |
Jan 2002 |
US |