IP Library Granted Patent US 8,661,415
Granted Patent B2
US 8,661,415 · App. 13/153,949 · Granted Feb 25, 2014

Path-sensitive visualizations of aggregated profiling and trace date

Inventors: Michael C. Fanning (Redmond, WA); Timothy Scott Rice (Seattle, WA); Christopher Paul Schmich (Seattle, WA)
Assignee: Microsoft Corporation
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 8,661,415
App. No.
13/153,949
Granted
Feb 25, 2014
Kind
B2
Abstract

Performing tracing functionality. A method includes collecting runtime information that describes the execution of code. The collected runtime information is correlated to specific lines of code and one or more paths taken to get to specific lines of code. User input is received defining a view preference. A code visualization is provided based on the user input defining a view preference and the act of correlating the collected runtime information to specific lines of code and a path taken to get to the line of code.

Claims (55)

1. In a computing environment, a method of performing code visualization with tracing functionality, the method comprising:

collecting runtime information that describes the execution of code;

correlating the collected runtime information to specific lines of code and one or more paths taken to get to specific lines of code;

displaying a code visualization interface with three selectable icons that each correspond to a different code visualization, the three selectable icons including a code coverage icon, a frequency icon and time icon, the three selectable icons being displayed simultaneously;

receiving user input defining a view preference, the user input including at least a selection of one of the three selectable icons; and

providing a code visualization based on the user input defining a view preference and the act of correlating the collected runtime information to specific lines of code and a path taken to get to the line of code, wherein the code visualization includes:

a display of the three selectable icons;

a display of a plurality of lines of code from the specific lines of code, the plurality of lines of code being color coded; and

a plurality of colored segments below one or more of the three selectable icons, the plurality of colored segments corresponding to the plurality of colored lines of code,

wherein colored segments below the code coverage icon reflect which lines of code from the specific lines of code have executed or not,

wherein colored segments below the frequency icon reflect a particular frequency in which corresponding lines of code from the specific lines of code have been called, and

wherein colored segments below the time icon reflect a relative amount of time spent processing corresponding lines of code from the specific lines of code.

2. The method of claim 1 , wherein collecting runtime information comprises collecting data values.

3. The method of claim 1 , wherein receiving user input defining a view preference comprises receiving user input selecting filter options and wherein providing a code visualization is based on the selected filter options.

4. The method of claim 3 , wherein the filter options comprise the ability to specify one of three states including indicating that a trace hits a code location to be included in a visualization, indicating that a trace does not hit a code location to be included in a visualization, and indicating that no filtering is applied to a code location.

5. The method of claim 3 , wherein the filter options comprise the ability to specify one of three states including indicating that a trace associated with a specific call stack should be included in a visualization, indicating that a trace associated with a specific call stack should not be included and indicating that no filtering is applied to a code location.

6. The method of claim 3 , wherein the filter options comprise the ability to specify a condition associated with one or more runtime variables, including one or more of parameters, class instance data, global data, current thread id, or process name.

7. The method of claim 3 , wherein the filter options comprise the ability to specify a condition associated with the return value of a function or the set of exceptions raised by calls to the function.

8. The method of claim 3 , wherein the filter options comprise the ability to specify a condition associated with at least one of machine or operating system configuration.

9. The method of claim 1 , wherein providing the code visualization comprises displaying a visualization of metrics defining type and cost of memory allocations associated with a portion of code.

10. The method of claim 1 , wherein providing the code visualization comprises displaying code coverage data.

11. The method of claim 1 , wherein providing the code visualization comprises displaying a visualization of metrics defining the number of times that a portion of code has been called.

12. The method of claim 1 , wherein providing the code visualization comprises displaying a visualization of metrics defining the amount of time spent processing specific portions of code.

13. In a computing environment, one or more hardware storage devices comprising computer executable instructions that when executed by one or more processors, cause one or more processors to perform the following:

collecting runtime information that describes the execution of code;

correlating the collected runtime information to specific lines of code and one or more paths taken to get to specific lines of code;

displaying a code visualization interface with three selectable icons that each correspond to a different code visualization, the three selectable icons including a code coverage icon, a frequency icon and time icon, the three selectable icons being displayed simultaneously;

receiving user input defining a view preference, the user input including at least a selection of one of the three selectable icons; and

providing a code visualization based on the user input defining a view preference and the act of correlating the collected runtime information to specific lines of code and a path taken to get to the line of code, wherein the code visualization includes:

a display of the three selectable icons;

a display of a plurality of lines of code from the specific lines of code, the plurality of lines of code being color coded; and

a plurality of colored segments below one or more of the three selectable icons, the plurality of colored segments corresponding to the plurality of colored lines of code,

wherein colored segments below the code coverage icon reflect which lines of code from the specific lines of code have executed or not,

wherein colored segments below the frequency icon reflect a particular frequency in which corresponding lines of code from the specific lines of code have been called, and

wherein colored segments below the time icon reflect a relative amount of time spent processing corresponding lines of code from the specific lines of code.

14. The one or more hardware storage devices of claim 13 , wherein collecting runtime information comprises collecting data values.

15. The one or more hardware storage devices of claim 13 , wherein receiving user input defining a view preference comprises receiving user input selecting filter options and wherein providing a code visualization is based on the selected filter options.

16. one or more hardware storage devices of claim 15 , wherein the filter options comprise the ability to specify one of three states including indicating that a trace hits a code location to be included in a visualization, indicating that a trace does not hit a code location to be included in a visualization, and indicating that no filtering is applied to a code location.

17. The one or more hardware storage devices of claim 13 , wherein providing the code visualization comprises displaying code coverage data.

18. The one or more hardware storage devices of claim 13 , wherein providing a code visualization comprises displaying the visualization of metrics defining the number of times that a portion of code has been called.

19. The one or more hardware storage devices of claim 13 , wherein providing the code visualization comprises displaying a visualization of metrics defining the amount of time spent processing specific portions of code.

20. In a computing environment, a computing system comprising functionality for performing tracing, the computing system comprising:

one or more processors;

one or more computer readable media coupled to the one or more processors, wherein the one or more computer readable media comprise computer executable instructions that when executed by one or more of the one or more processors cause one or more of the one or more processors to perform the following:

collecting runtime information that describes the execution of code;

correlating the collected runtime information to specific lines of code and one or more paths taken to get to specific lines of code;

displaying a code visualization interface with three selectable icons that each correspond to a different code visualization, the three selectable icons including a code coverage icon, a frequency icon and time icon, the three selectable icons being displayed simultaneously;

receiving user input defining a view preference, the user input including at least a selection of one of the three selectable icons; and

providing a code visualization based on the user input defining a view preference and the act of correlating the collected runtime information to specific lines of code and a path taken to get to the line of code, wherein the code visualization includes:

a display of the three selectable icons;

a display of a plurality of lines of code from the specific lines of code, the plurality of lines of code being color coded; and

a plurality of colored segments below one or more of the three selectable icons, the plurality of colored segments corresponding to the plurality of colored lines of code,

wherein colored segments below the code coverage icon reflect which lines of code from the specific lines of code have executed or not,

wherein colored segments below the frequency icon reflect a particular frequency in which corresponding lines of code from the specific lines of code have been called, and

wherein colored segments below the time icon reflect a relative amount of time spent processing corresponding lines of code from the specific lines of code.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2011
From: FANNING, MICHAEL C.; RICE, TIMOTHY SCOTT; SCHMICH, CHRISTOPHER PAUL
To: MICROSOFT CORPORATION
Reel/Frame 026407/0282 →
Continuity (1)
Related Publication 20120311540A1 · Dec 6, 2012