Back to results
US 10,853,041 B2Granted
Extensible instrumentation
AssigneeMicrosoft Technology Licensing, LLC
InventorsAleksey Tsingauz, John Lawrence Hamby, Manish Kumar Jayaswal
Life of this patent
Estimating the term…
Abstract
Instrumentation is extensible because the language construct to be instrumented and the particular instrumentation desired for the language construct can be provided to the compiler for each individual compilation using input provided during compilation of a program using a dynamic analyzer. The dynamic analyzer can identify the programming language construct to be instrumented and the instrumentation to be inserted into the code. The dynamic analyzer can analyze the data that is collected.
Claims20
A system comprising:
- a compiler executing on a processor of a computing device comprising a memory connected to the processor, the compiler configured to:
- receive identification of a particular programming language construct of a program, the particular programming language construct to be instrumented, wherein the particular programming language construct of the program comprises at least one of a statement, an invocation, a basic block, an expression, a class constructor, or an operator;
- receive a representation of the program for compilation;
- receive instrumentation for the particular programming language construct for a particular compilation of the program, the instrumentation being provided by a dynamic analyzer and not previously defined in the compiler;
- and
- insert the instrumentation for the particular programming language construct into the representation of the program during compilation without reprogramming the compiler,
- wherein the representation is an intermediate representation of the program and the instrumentation comprises a call to the dynamic analyzer that is inserted, by the compiler, into the intermediate representation of the program.
4 more elements
A method comprising:
- providing, to a processor:
- an identification of a particular programming language construct of a program to be compiled and instrumented by a compiler, the particular programming language construct to be instrumented, wherein the particular programming language construct of the program comprises at least one of a statement, an invocation, a basic block, an expression, a class constructor, or an operator,
- the program to be compiled and instrumented;
- a dynamic analyzer, the dynamic analyzer implementing an application programming interface;
- and
- a location of the particular programming language construct in the program;
- and
- using the application programming interface implemented by the dynamic analyzer, inserting instrumentation for the particular programming language construct into a representation of the program during a front end phase of compilation without reprogramming the compiler.
5 more elements
A device comprising:
- a memory;
- and
- a processor connected to the memory, the processor configured to:
- receive, by a compiler, identification of a particular programming language construct of a program, the particular programming language construct to be instrumented, wherein the particular programming language construct of the program comprises at least one of a statement, an invocation, a basic block, an expression, a class constructor, or an operator;
- receive, by the compiler, extensible instrumentation for the particular programming language construct of the program for a particular compilation of the program, the extensible instrumentation not previously defined in the compiler;
- and
- insert the extensible instrumentation for the particular programming language construct into a representation of the program during compilation without reprogramming the compiler, the extensible instrumentation collecting dynamic analysis information upon execution of a compiled binary generated from the program,
- wherein the extensible instrumentation comprises a call to a dynamic analyzer.
5 more elements
Dependencies are inferred from the claim text.