IP Library Granted Patent US 10,223,237
Granted Patent B2
US 10,223,237 · App. 15/338,454 · Granted Mar 5, 2019

Mid-method instrumentation

Inventors: Ryan Nicholas TerBush (San Francisco, CA); Haojun Li (Berkeley, CA); Anthony Kilman (Redwood City, CA)
Assignee: Cisco Technology, Inc.
G06F11/3644
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,223,237
App. No.
15/338,454
Granted
Mar 5, 2019
Kind
B2
Abstract

A system for performing mid-method instrumentation includes a processor; a memory; and one or more modules stored in the memory and executable by a processor to perform operations including: obtain bytecode representation of an application; identify a method in the bytecode including a beginning and an end of the method; identify lines of bytecode between the beginning and the end of the identified method; identify one or more of the lines of bytecode between the beginning and the end of the method to instrument with one or more interceptors; during runtime of the application, instrument the identified one or more of the lines of bytecode between the beginning and the end of the identified method by apply the one or more interceptors; and during the runtime of the application, receive information associated with the instrumented one or more lines of bytecode between the beginning and the end of the method.

Claims (60)

1. A system for performing mid-method instrumentation to monitor information from middle of a method, the system including:

a processor;

a memory; and

one or more modules stored in the memory and executable by the processor to perform operations including:

obtain bytecode representation of an application;

identify a method in the bytecode including a beginning and an end of the method;

identify middle of the identified method, the middle of the identified method including lines of bytecode between the beginning and the end of the identified method excluding the beginning and the end of the identified method;

define a predetermined set of rules for identifying lines of bytecode in the middle of the identified method for instrumentation;

define a start of a business transaction at a location of a loop in the middle of the identified method and create custom rules for instrumenting one or more lines of bytecode of the loop with one or more interceptors dynamically;

execute the application and during runtime of the application, instrument the identified one or more lines of bytecode including the one or more lines of bytecode in the loop in the middle of the identified method by applying the one or more interceptors; and

during the runtime of the application, receive information associated with the instrumented one or more lines of bytecode in the middle of the identified method, wherein the received information includes a flow map for the business transaction that shows touch points for the business transaction in the application.

2. The system of claim 1 , wherein the one or more modules are executable to perform operations including: during the runtime of the application, detect an error or exception associated with the identified method in the application; and

generate a report of the detected error or exception to include a stack trace associated with the detected error or exception and the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method.

3. The system of claim 2 , wherein the one or more modules are executable to perform operations including:

correlate the detected error or exception with the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method.

4. The system of claim 1 , wherein the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method includes local variables or parameters.

5. The system of claim 4 , wherein the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method includes changes to the local variables or parameters.

6. The system of claim 4 , wherein the one or more modules are executable to perform operations including: target an interceptor at a specific read or write of the local variables or parameters.

7. The system of claim 1 , wherein the one or more modules are executable to perform operations including: target an interceptor at a specific invocation of the identified method.

8. The system of claim 1 , wherein the one or more modules are executable to perform operations including: identify a loop in the identified method.

9. The system of claim 8 , wherein the one or more modules are executable to perform operations including: target an interceptor at a specific invocation of the identified loop in the identified method.

10. The system of claim 1 , wherein the one or more modules are executable to perform operations including: target the interceptors to define a business transaction to begin or end at a location in the middle of the identified method.

11. The system of claim 1 , wherein the one or more modules are executable to perform operations including: apply a mid-method identifier to instrument the one or more lines of bytecode in the middle of the identified method, wherein the mid-method identifier includes a class name, a method name, and a location in the middle of the identified method.

12. The system of claim 1 , wherein the one or more modules are executable to perform operations including: provide a user interface that displays an interactive dashboard of the application; and display, through the user interface, a generated report.

13. A method for performing mid-method instrumentation to monitor information from middle of a method in an application, including;

obtaining bytecode representation of an application;

identifying a method in the bytecode including a beginning and an end of the method;

identifying middle of the identified method, the middle of the identified method including lines of bytecode between the beginning and the end of the identified method to be instrumented excluding the beginning and the end of the identified method;

defining a predetermined set of rules for identifying lines of bytecode in the middle of the identified method for instrumentation;

defining a start of a business transaction at a location of a loop in the middle of the identified method and create custom rules for instrumenting one or more lines of bytecode of the loop with one or more interceptors dynamically;

executing the application and during runtime of the application, instrumenting the identified one or more of the lines of bytecode including the one or more lines of bytecode in the loop in the middle of the identified method by applying the one or more interceptors; and

during the runtime of the application, receiving information associated with the Instrumented one or more lines of bytecode in the middle of the identified method, wherein the received information includes a flow map for the business transaction that shows touch points for the business transaction in the application.

14. The method of claim 13 , including:

during the runtime of the application, detecting an error or exception associated with the identified method in the application; and

generating a report of the detected error or exception to include a stack trace associated with the detected error or exception and the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method.

15. The method of claim 14 , including:

correlating the detected error or exception with the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method.

16. The method of claim 13 , wherein the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method includes local variables or parameters.

17. The method of claim 16 , wherein the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method includes changes to the local variables or parameters.

18. The method of claim 16 , including: targeting an interceptor at a specific read or write of the local variables or parameters.

19. The method of claim 13 , including: targeting an interceptor at a specific invocation of the identified method.

20. The method of claim 13 , including: identifying a loop in the identified method.

21. The method of claim 20 , including: targeting an interceptor at a specific invocation of the identified loop in the identified method.

22. The method of claim 13 , including:

targeting the interceptors to define a business transaction to begin or end at a location in the middle of the identified method.

23. The method of claim 13 , including:

applying a mid-method identifier to instrument the one or more lines of bytecode in the middle of the identified method to be instrumented, wherein the mid-method identifier includes a class name, a method name, and a location in the middle of the identified method.

24. The method of claim 13 , including: providing a user interface that displays an interactive dashboard of the application; and displaying, through the user interface, a generated report.

25. A non transitory computer readable medium embodying instructions when executed by a processor to cause operations to be performed for mid-method instrumenting to monitor information from middle of a method, the operations including:

obtaining bytecode representation of an application;

identifying a method in the bytecode including a beginning and an end of the method;

identifying middle of the identified method, the middle of the identified method including lines of bytecode between the beginning and the end of the identified method excluding the beginning and the end of the identified method;

defining a predetermined set of rules for identifying lines of bytecode in the middle of the identified method for instrumentation; defining a start of a business transaction at a location of a loop in the middle of the identified method and create custom rules for instrumenting one or more lines of bytecode of the loop with one or more interceptors dynamically;

executing the application and during runtime of the application, instrumenting the identified one or more lines of bytecode including the one or more lines of bytecode in the loop in the middle of the identified method by applying the one or more interceptors; and

during the runtime of the application receiving information associated with the instrumented one or more lines of bytecode in the middle of the identified method, wherein the received information includes a flow map for the business transaction that shows touch points for the business transaction in the application.

26. The non-transitory computer readable medium of claim 25 , wherein the operations include:

during the runtime of the application, detecting an error or exception associated with the identified method in the application; and

generating a report of the detected error or exception to include a stack trace associated with the detected error or exception and the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method.

27. The non-transitory computer readable medium of claim 26 , wherein the operations include:

correlating the detected error or exception with the received information associated with the instrumented one or more lines of bytecode in the middle of the identified method.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2017
From: APPDYNAMICS LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 044173/0050 →
CHANGE OF NAME Recorded Jun 23, 2017
From: APPDYNAMICS, INC.
To: APPDYNAMICS LLC
Reel/Frame 042964/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2017
From: LI, HAOJUN; TERBUSH, RYAN NICHOLAS; KILMAN, ANTHONY
To: APPDYNAMICS, INC.
Reel/Frame 041206/0749 →
Continuity (1)
Related Publication 20180121325A1 · May 3, 2018