Methods and systems of function-specific tracing
First Claim
1. A method of function-specific tracing in a distributed application, the method comprising:
- generating a trace profile identifying one or more functions of a target program of the distributed application, wherein the trace profile identifies one or more functions to trace using a binary-relative address for each function to be traced and depth of tracing for each function to be traced;
patching, by a tracer process, the target program of the distributed application in accordance with the generated trace profile to trace the one or more functions to the identified depth for each of the one or more functions;
loading, into a compute controller in a distributed computing system, the patched target program;
executing, by the compute controller, the patched target program;
identifying, by the compute controller, traced functions in the patched target program based on a binary-relative address, wherein the traced functions are identified at runtime;
observing function calls for traced functions of the target program, wherein observing function calls for traced functions of the target program includes executing the patched target program by a first process of the compute controller, and wherein observing function calls for traced functions of the patched target program is performed by a second process;
constructing a per-process call stack for each traced function;
combining, by the compute controller, the per-process call stacks to generate a distributed call stack, wherein the distributed call stack is utilized to show call flows among several functions within and between processes, permitting tracing of calls from receiving of requests to the distributed application; and
fixing, by the compute controller, a call stack after execution of the traced functions.
5 Assignments
0 Petitions
Accused Products
Abstract
A system and methods are provided for function-specific tracing of a program. In one embodiment, a method includes generating a trace profile identifying one or more functions of a target program, wherein the trace profile identifies one or more functions to trace and depth of tracing for each function to be traced, loading the trace profile and the target program, identifying traced functions in the target program based on the trace profile, patching the target program to call a trace parameter for one or more functions, wherein traced functions are declared at runtime, and observing function calls for traced functions of the application. In this regard, individual functions are traced and debugged on a function-by-function basis without modifying the code or pre-arranging functions so they are traceable. As such, the scope of tracing may be dynamically limited to yield only information that is desired.
20 Citations
25 Claims
-
1. A method of function-specific tracing in a distributed application, the method comprising:
-
generating a trace profile identifying one or more functions of a target program of the distributed application, wherein the trace profile identifies one or more functions to trace using a binary-relative address for each function to be traced and depth of tracing for each function to be traced; patching, by a tracer process, the target program of the distributed application in accordance with the generated trace profile to trace the one or more functions to the identified depth for each of the one or more functions; loading, into a compute controller in a distributed computing system, the patched target program; executing, by the compute controller, the patched target program; identifying, by the compute controller, traced functions in the patched target program based on a binary-relative address, wherein the traced functions are identified at runtime; observing function calls for traced functions of the target program, wherein observing function calls for traced functions of the target program includes executing the patched target program by a first process of the compute controller, and wherein observing function calls for traced functions of the patched target program is performed by a second process; constructing a per-process call stack for each traced function; combining, by the compute controller, the per-process call stacks to generate a distributed call stack, wherein the distributed call stack is utilized to show call flows among several functions within and between processes, permitting tracing of calls from receiving of requests to the distributed application; and fixing, by the compute controller, a call stack after execution of the traced functions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A system comprising:
-
one or more processors;
one or more memory devices; and
plurality of modules including;a trace profile module to generate a trace profile identifying one or more functions of a target program, wherein the trace profile identifies one or more functions to trace using a binary-relative address for each function to be traced and depth of tracing for each function to be traced; a tracer module to patch the target program in accordance with the generated trace profile to trace the one or more functions to the identified depth for each of the one or more functions; a module to load, into a controller module of a distributed computing system, the patched target program; and a controller module to; execute the patched target program; identify traced functions in the patched target program based on the trace profile and based on a binary-relative address, wherein the traced functions are declared at runtime; observe function calls for traced functions of the target program by executing the patched target program by a first process of the controller module; cause observing of function calls for traced functions of the patched target program; construct a per-process call stack for each traced function; combine the per-process call stacks to generate a distributed call stack, wherein the distributed call stack is utilized to show call flows among several functions within and between processes, permitting tracing of calls from receiving of requests to the target program; and fix a call stack after execution of the traced functions. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A non-transitory computer-accessible storage medium storing program instructions that when executed by a computer cause the computer to implement a function-specific tracing of a program, including instructions to:
-
generate a trace profile identifying one or more functions of a target program, wherein the trace profile identifies one or more functions to trace using a binary-relative address for each function to be traced and depth of tracing for each function to be traced; patch, by a tracer process, the target program in accordance with the generated trace profile to trace the one or more functions to the identified depth for each of the one or more functions; load, into a compute controller in a distributed computing system, the patched target program; execute, by the compute controller, the patched target program; identify, by the compute controller, traced functions in the patched target program based on a binary-relative address, wherein the traced functions are identified at runtime; observe function calls for traced functions of the target program by executing the patched target program by a first process of the controller module and observing function calls for traced functions of the patched target program by a second process of the controller module; construct a per-process call stack for each traced function; combine, by the compute controller, the per-process call stacks to generate a distributed call stack, wherein the distributed call stack is utilized to show call flows among several functions within and between processes, permitting tracing of calls from receiving of requests to the target program; and fix, by the compute controller, a call stack after execution of the traced functions.
-
Specification