Selectively tracing portions of computer process execution

US10747645B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10747645-B2
Application numberUS-201815965026-A
CountryUS
Kind codeB2
Filing dateApr 27, 2018
Priority dateApr 27, 2018
Publication dateAug 18, 2020
Grant dateAug 18, 2020

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Expressly turning tracing on and off at each juncture between code that a developer wants to have traced and other code may reduce trace file size but adds computational cost. Described technologies support selectively tracing a process's execution, with some extra tracing done beyond the code the developer wanted traced, but with significantly reduced computational cost, by reducing the number of trace enablement and disablement operations. A trace controller uses a tracing disablement distance variable whose values indicate the computational distance from trace disablement. A distance variable modifier automatically moves the distance variable closer to a stop-tracing value as the process executes. The amount of extra tracing is balanced against the reduction in trace enablement/disablement operations by tuning thresholds, based on information about routine size and computational cost. Operation of the trace controller is illustrated by sample APIs, a tracing state diagram, and a side-by-side comparison, among other items.

First claim

Opening claim text (preview).

What is claimed is: 1. A selective execution tracing system, comprising: at least one processor; a digital memory in operable communication with the processor; an executable code which is configured to, upon execution, perform a computer-implemented process, the executable code having one or more first portions which are designated for tracing, and one or more second portions which are not designated for tracing; an execution tracer that traces executing code when tracing is enabled; a trace disabler which is configured to, upon execution, disable tracing by the execution tracer; a trace enabler which is configured to, upon execution, enable tracing by the execution tracer; a trace controller including a distance variable representing a maximum number of instructions of the executable code to trace prior to invoking the trace disabler, the trace controller configured to, upon execution, invoke the trace disabler in conjunction with the distance variable reaching a stop-tracing value and to subsequently invoke the trace enabler in conjunction with the distance variable not having the stop-tracing value; and a distance variable modifier configured to (i) incrementally move the distance variable closer to the stop-tracing value when the one or more second portions of the executable code executes, and (ii) move the distance variable away from the stop-tracing value when the one or more first portions of the executable code executes, wherein, during execution of at least a subset of the one or more second portions, a value of the distance variable results in the execution tracer tracing the at least a subset of the one or more second portions. 2. The selective execution tracing system of claim 1 , wherein the system is further characterized in that a cost-with-distance-variable of the system is less than a cost-without-distance-variable of the system, where: the cost-with-distance-variable is a total computational cost of executing the executable code configured with the trace controller, comprising executing an initial invocation of the trace enabler, executing modifications of the distance variable, executing one or more invocations of the trace disabler when the distance variable reaches a stop-tracing value and executing any subsequent invocations of the trace enabler, and including the computational cost of tracing when tracing is enabled; and the cost-without-distance-variable is a total computational cost of executing a variation of the executable code that is configured without the trace controller, in which the distance variable is not used, in which the trace enabler is invoked with each entry to an executable code portion which is designated for tracing, and the trace disabler is invoked with each exit from an executable code portion which is designated for tracing, and including the computational cost of tracing when tracing is enabled; wherein the computational costs are measured by at least one of the following: total number of instructions executed, total number of processor cycles performed, total system clock time elapsed, or number of trace entries. 3. The selective execution tracing system of claim 1 , wherein the one or more first portions of the executable code which are designated for tracing comprise managed code, namely, code that is configured to run under the control of a runtime which implements at least one of memory garbage collection or code compilation. 4. The selective execution tracing system of claim 1 , wherein at least one first portion of the executable code which is designated for tracing consists of native code, namely, code that is configured to run without a runtime. 5. The selective execution tracing system of claim 1 , wherein the trace controller comprises: a set-N routine which has a local-n parameter and which is configured to, upon execution, set a thread local variable, denoted here as N, to the value of the parameter local-n; a get-N routine which is configured to, upon execution, return the current value of the thread local variable N; a set-DV routine which has a tracing-max parameter and which is configured to, upon execution, set the distance variable to the value of the parameter tracing-max; a get-DV routine which is configured to, upon execution, return the current value of the distance variable; and a try-to-trace routine which is configured to, upon execution, enable tracing of a current thread by the execution tracer, if tracing is not already enabled. 6. The selective execution tracing system of claim 1 , wherein: the distance variable modifier is configured to move the distance variable closer to the stop-tracing value when the one or more second portions of the executable code executes by decrementing the distance variable when the executable code executes; and the trace controller is configured to, upon execution, invoke the trace disabler in conjunction with the distance variable reaching zero as the stop-tracing value and to subsequently invoke the trace enabler in conjunction with the distance variable being positive, the executable code configured to, upon execution, perform at least one of the following to ensure that the distance variable does not equal the stop-tracing value upon entry to any of the one or more first portions of the executable code which are designated for tracing: confirm that the distance variable is nonzero, or set the distance variable to a positive high-count threshold. 7. The selective execution tracing system of claim 6 , wherein the high-count threshold satisfies at least one of the following criteria: the high-count threshold indicates logical infinity; the high-count threshold exceeds a first number of instructions in any code unit of the one or more first portions of the executable code which are designated for tracing; the high-count threshold exceeds a second number of instructions in any routine of the one or more first portions of the executable code which are designated for tracing; the high-count threshold exceeds a third number of instructions in ninety percent of routines of the executable code; or the high-count threshold exceeds an average number of instructions in the routines of the executable code. 8. The selective execution tracing system of claim 6 , wherein the trace controller comprises: an outer high-count-ensuring code in the executable code at an entry point of a code unit, the high-count-ensuring code configured to, upon execution, set the distance variable to a value which is not less than the high-count threshold, wherein the code unit includes at least one of the following: a thread, a function, a routine, a coroutine, an exception handler, or an interrupt handler; a low-count-ensuring code in the executable code prior to a call made to a virtual method within the code unit, the low-count-ensuring code configured to, upon execution, set the distance variable to a nonzero value which is not greater than a nonzero low-count threshold, the low-count threshold being less than the high-count threshold; and an inner high-count-ensuring code in the executable code in a first implementation of the virtual method, configured to, upon execution, set the distance variable to a value which is not less than the high-count threshold; and wherein a second implementation of the virtual method is free of any code setting the distance variable. 9. The selective execution tracing system of claim 6 , wherein the trace controller comprises a high-count-ensuring code in an exception handler, the high-count-ensuring code configured to, upon execution, set the distance variable to a value which is not less than the high-count threshold. 10. A computer-implemented selective execution tracing method

Assignees

Inventors

Classifications

  • Monitoring of software · CPC title

  • Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes · CPC title

  • by runtime analysis (performance monitoring G06F11/3466) · CPC title

  • Performance evaluation by tracing or monitoring · CPC title

  • where the computing system component is a software system · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10747645B2 cover?
Expressly turning tracing on and off at each juncture between code that a developer wants to have traced and other code may reduce trace file size but adds computational cost. Described technologies support selectively tracing a process's execution, with some extra tracing done beyond the code the developer wanted traced, but with significantly reduced computational cost, by reducing the number…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F11/3636. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 18 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).