IP Library Patent Application 13867057
Patent Application
App. No. 13/867,057

Tracing Closures in a Callback Environment

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 None
App. No.
13/867,057
Abstract

An automated tracing system may create wrapping functions for each function in an application, including callback functions that may be passed as arguments to or from a given function. The wrapping function may include tracing data which may be used to generate a topology of the application, as well as other tracing data which may be used for performance measurements. In many cases, the wrapping function may be at least partially isomorphic with respect to the inner function being wrapped.

Claims (62)

1 . A method performed on a computer processor, said method comprising:

receiving an application;

identifying a first function in said application;

wrapping said first function in a first tracing closure;

identifying a second function passed to said first function, said second function being a first callback function;

wrapping said second function in a second tracing closure; and

executing said first function with said first tracing closure and executing said second function with said second tracing closure.

2 . The method of claim 1 further comprising:

identifying a plurality of properties of said first function; and

projecting said plurality of properties of said first function to said first tracing closure.

3 . The method of claim 2 further comprising:

determining that a first property of said plurality of properties of said first function is a third function; and

wrapping said third function in a third tracing closure.

4 . The method of claim 1 , said first tracing closure that:

captures a first start time for said first function; and

causes said first start time to be stored.

5 . The method of claim 4 , said first tracing closure that further:

transmits said first start time to a data collector for storage.

6 . The method of claim 5 , said second tracing closure that:

captures a second start time for said second function; and

transmits said second start time to said data collector.

7 . The method of claim 1 , said first tracing closure that:

identifies a first calling function for said first function; and

causes an identifier for said first calling function to be stored.

8 . The method of claim 7 , said first tracing closure that:

detects that said first calling function is wrapped with a tracing closure.

9 . The method of claim 7 , said identifier being a unique identifier for an instance of said function.

10 . The method of claim 7 , said identifier being a unique identifier for a class related to said function.

11 . The method of claim 7 further comprising:

identifies said first function as a calling function for said second function; and

stores a second identifier for said first function as said calling function for said second function.

12 . The method of claim 11 further comprising:

linking said calling function to said first function and linking said first function to said calling function from stored identifiers.

13 . The method of claim 1 further comprising:

compiling said first function with said first tracer closure.

14 . The method of claim 13 , said compiling being a just-in-time compilation.

15 . The method of claim 1 further comprising:

identifying a third function returned from said first function, said third function being a second callback function;

wrapping said third function in a third tracing closure; and

executing said third function with said third tracing closure.

16 . A system comprising:

a processor;

a execution environment operating on said processor, said execution environment that:

receives an application;

receives a tracing library, said tracing library that:

identifies a first function in said application;

wraps said first function in a first tracing closure;

identifies a second function passed to said first function, said second function being a first callback function; and

wraps said second function in a second tracing closure;

said execution environment that further:

executes said first function with said first tracing closure and executes said second function with said second tracing closure.

17 . The system of claim 16 , said execution environment comprising just in time compiler.

18 . The system of claim 16 further comprising:

a data collector that collects data from a plurality of tracing closures and stores said data in a database.

19 . The system of claim 18 further comprising:

a data analyzer that analyzes said data in said database and produces a visualization of at least a subset of said data, said visualization comprising a visual link between said first function and said second function.

20 . An executable library comprising executable computer instructions that, when executed with an application perform a method comprising:

identifying a first function in said application;

wrapping said first function in a first tracing closure;

identifying a second function passed to said first function, said second function being a first callback function;

wrapping said second function in a second tracing closure; and

executing said first function with said first tracing closure and executing said second function with said second tracing closure.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2015
From: CONCURIX CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036139/0069 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2013
From: GOUNARES, ALEXANDER G.
To: CONCURIX CORPORATION
Reel/Frame 031836/0110 →