← Back to Patent Explorer
US3707725A Expired / Lapsed US ⏱️ 0.0 years remaining

Program execution tracing system improvements

Assignee: International Business Machines Corp
•
Filing: 1970-06-19
•
Granted: 1972-12-26
•
Expires: 1990-06-19
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A tracing program method that copies into an area within a tracing program each instruction to be executed and traced in a manner which makes each traced instruction subservient to the tracing program. A hardware instruction counter of the computer system addresses the tracing program, rather than the program being traced. A programmed instruction counter controlled by the tracing program maintains the address within the traced program of its next instruction to be executed and traced. While being traced, the traced program is effectively executing its data using the same instruction sequence that it would use on the same data as if the tracing program was not in the system and as if the traced program was alone operating on its data. The tracing method can control the entire computer system while tracing the programs that are being executed by the system. The tracing method can wholly or partially trace a program by sampling it over a cycle determined by time or by instruction count, or by an overriding manual control. When not tracing, the tracing program can go into a quiescence state, therein it retains control of the system in preparation for later tracing, but permits a speedup in the execution of subservient instructions. The tracing method requires neither machine interrupts, nor modifications to the hardware or to the traced program code, for control of the computer system. The tracing method provides data for each traced instruction in a form that can be subsequently analyzed by a disclosed trace analysis program so that the output from a single run of the tracing method can be used any number of times for varying types of analyses.

Inventors

  • 👤 John L Dellheim

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-23 12:32
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/36; G06F11/362; G06F11/3636; G06F11/30; G06F11/34; G06F11/3466

Claims Analysis

Total Claims: 14
Claim 1
Independent Claim 361 words
Within a computer system using instructions of variable length having operation codes that also indicate the instruction lengths; the computer system operation being controlled by a program tracing method; initially inputting into said computer system said program tracing method, a program to be traced and data to be processed by said program to be traced; said program tracing method including the steps of controlling a hardware instruction counter in said computer system for accessing each next required tracing instruction in said program tracing method, said program tracing method thereafter maintaining continuous control over said computer system, loading a programmed instruction counter with a direct or indirect address of a current instruction in said program to be traced, selecting one of a plurality of program tracing method routines by interpretation of an operation code in the current instruction determined by said loading step, moving the current instruction into an assigned area provided by the selected program tracing method routine obtained by said selecting step, executing said current instruction in said assigned area under control of the selected program tracing method routine, the execution of said current instruction being with said data to be processed and with data generated from execution of any prior instructions in said program to be traced, said executing step providing generated data for subsequent execution by said program to be traced, the data generated during said executing step by each instruction in said program to be traced being the same as data which would be generated by direct execution of said program to be traced with said data to be processed, machine-recording addresses in a tracing record for said current instruction executed by said executing step, and iteratively repeating the sequence of said loading step, said selecting step, said moving step, said executing step, and said machine-recording step for each next instruction indicated by the setting of said programmed instruction counter for said program to be traced, whereby no machine interrupt is required for tracing purposes by either the program tracing method or the program to be traced, and whereby no modification is required for tracing purposes to either the hardware or to said program to be traced.
Claim 2
Dependent Claim 361 words
Within a computer system using instructions of variable length having operation codes that also indicate the instruction lengths; the computer system operation being controlled by a program tracing method; initially inputting into said computer system said program tracing method, a program to be traced and data to be processed by said program to be traced; said program tracing method including the steps of controlling a hardware instruction counter in said computer system for accessing each next required tracing instruction in said program tracing method, said program tracing method thereafter maintaining continuous control over said computer system, loading a programmed instruction counter with a direct or indirect address of a current instruction in said program to be traced, selecting one of a plurality of program tracing method routines by interpretation of an operation code in the current instruction determined by said loading step, moving the current instruction into an assigned area provided by the selected program tracing method routine obtained by said selecting step, executing said current instruction in said assigned area under control of the selected program tracing method routine, the execution of said current instruction being with said data to be processed and with data generated from execution of any prior instructions in said program to be traced, said executing step providing generated data for subsequent execution by said program to be traced, the data generated during said executing step by each instruction in said program to be traced being the same as data which would be generated by direct execution of said program to be traced with said data to be processed, machine-recording addresses in a tracing record for said current instruction executed by said executing step, and iteratively repeating the sequence of said loading step, said selecting step, said moving step, said executing step, and said machine-recording step for each next instruction indicated by the setting of said programmed instruction counter for said program to be traced, whereby no machine interrupt is required for tracing purposes by either the program tracing method or the program to be traced, and whereby no modification is required for tracing purposes to either the hardware or to said program to be traced.
Claim 3
Dependent Claim 110 words
Within a program tracing method as defined in claim 1 in which, the tracing operation is quiesced while said tracing program maintains control of said computer system, in which after said loading step, the following steps are included branching around said selecting step, said moving step, said executing step, and said machine-recording step for each next instruction of said program to be traced while being quiesced; and said branching step correspondingly modifying said iteratively repeating step, executing-in-place each next instruction indicated by the content of said programmed instruction counter for said program to be traced under control of said program tracing method, whereby said branching step quiesces the tracing operation.
Claim 4
Dependent Claim 54 words
Within a program tracing method as defined in claim 2, in which the following steps are provided before said branching step, testing a program control switch for a quiescence status indication, and whereby the tracing operation continues in the absence of said testing step sensing any quiescence status indication by said program control switch.
Claim 5
Dependent Claim 70 words
Within a program tracing method as defined in claim 2, in which the following steps are provided before said branching step resetting a control bit by external control at any time during execution of said program tracing method, activating said iteratively repeating step, and deactivating said branching step in response to said control bit being reset, whereby said program tracing method is actiVated to trace said program to be traced.
Claim 6
Dependent Claim 102 words
Within a program tracing method as defined in claim 2, in which the following steps are provided before said branching step setting a control bit by external control at any time during execution of said program tracing method, activating said branching step and said executing-in-place step in response to said control bit being set by said setting step, whereby said program tracing method is in a quiescent state as long as said control bit is set, in which each next instruction in said program to be traced is executed without being traced but is continuously under control of said program tracing method.
Claim 7
Dependent Claim 179 words
Within a program tracing method as defined in claim 2, in which the following steps are provided before said loading step inputting first and second parameters to control an on-count sampling period and an off-count sampling period, which are alternate periods in a tracing sampling cycle, machine-changing a current one of said on-count and off-count sampling periods in accordance with a machine-measured progression of said program to be traced, machine-testing a current state of a no-sampling bit to determine which one of said alternate periods is a current sampling period, and switching said no-sampling bit to an opposite state when said machine-testing step indicates expiration of the current sampling period, whereby during each tracing sampling cycle said program tracing method is in a quiescent state as long as said no-sampling bit indicates said off-count sampling period is current and is in an active tracing state as long as said no-sampling bit indicates said on-count sampling period is current, and whereby cyclic sampling periods of tracing are independent of any predetermined sequence of instructions in said program to be traced.
Claim 8
Dependent Claim 71 words
Within a program tracing method as defined in claim 6, in which said machine-changing step comprises machine-computing the time for machine-execution of the current instruction of the program to be traced to determine its machine-measured progression, and decrementing the current sampling period in response to the time indicated by said machine-computing step, whereby said first and second parameters are the periods of time for the on-count and off-count sampling periods, respectively.
Claim 9
Dependent Claim 54 words
Within a program tracing method as defined in claim 6, in which said machine-changing step includes machine-decrementing the current sampling count by one for each instruction to be executed in the program to be traced, whereby said first and second parameters are the numbers of instructions in the on-count and off-count sampling periods, respectively.
Claim 10
Dependent Claim 307 words
Within a program tracing method for use with a computer system using instructions of variable length having operation codes that also indicate the instruction lengths, comprising the steps of inputting to the computer system a tracing program, a program to be traced, and data to be processed by said program to be traced, setting a programmed instruction counter in said tracing program with a direct or indirect address to a current traceable instruction to be executed in said program to be traced, setting a hardware instruction counter in said computer system with an address of a current tracing instruction to be executed in said tracing program, initiating execution of said tracing program with initial settings of said hardware and programmed instruction counters to the first instruction in said tracing program and in said program to be traced, respectively, accessing the operation code of the current traceable instruction at the address in said programmed instruction counter, selecting a tracing program routine by interpretation of the operation code of the current traceable instruction, signalling if said traceable instruction indicates that its following instruction to be executed in said program to be traced is a sequentially or non-sequEntially addressed instruction, recording any sequentially addressed instruction indicated by said signalling step from said program to be traced into one area in said tracing program routine, and recording any non-sequentially addressed instruction indicated by said signalling step into another area in said tracing program routine, executing any sequentially addressed instruction or any non-sequentially addressed instruction provided by said recording step within said tracing program routine without any required machine interrupt, setting into said programmed instruction counter the address of the next instruction to be executed in the program to be traced and generating a trace record based on data related to said sequentially addressed instruction as a result of said executing step.
Claim 11
Dependent Claim 307 words
Within a program tracing method for use with a computer system using instructions of variable length having operation codes that also indicate the instruction lengths, comprising the steps of inputting to the computer system a tracing program, a program to be traced, and data to be processed by said program to be traced, setting a programmed instruction counter in said tracing program with a direct or indirect address to a current traceable instruction to be executed in said program to be traced, setting a hardware instruction counter in said computer system with an address of a current tracing instruction to be executed in said tracing program, initiating execution of said tracing program with initial settings of said hardware and programmed instruction counters to the first instruction in said tracing program and in said program to be traced, respectively, accessing the operation code of the current traceable instruction at the address in said programmed instruction counter, selecting a tracing program routine by interpretation of the operation code of the current traceable instruction, signalling if said traceable instruction indicates that its following instruction to be executed in said program to be traced is a sequentially or non-sequEntially addressed instruction, recording any sequentially addressed instruction indicated by said signalling step from said program to be traced into one area in said tracing program routine, and recording any non-sequentially addressed instruction indicated by said signalling step into another area in said tracing program routine, executing any sequentially addressed instruction or any non-sequentially addressed instruction provided by said recording step within said tracing program routine without any required machine interrupt, setting into said programmed instruction counter the address of the next instruction to be executed in the program to be traced and generating a trace record based on data related to said sequentially addressed instruction as a result of said executing step.
Claim 12
Dependent Claim 70 words
Within a program tracing method as defined in claim 9, including before said accessing step the steps of examining for and servicing any computer interrupt signals caused by the addressed instruction in said program to be traced, said interrupt not being generated for tracing said addressed instruction, and said generating step providing a trace record that includes information provided by each computer interrupt generated in the program to be traced.
Claim 13
Dependent Claim 42 words
Within a program tracing method as defined in claim 10, in which said generating step further records into the trace record the location addresses within old and new status control words responding to a handled interrupt for said program to be traced.
Claim 14
Dependent Claim 73 words
Initialization for a program tracing method as defined in claim 9, in said inputting step further includes generating an address of a memory location for storing a control of quiescing and active tracing states of the tracing program, outputting the address of said memory location provided by said generating step for subsequent action, and setting a bit in said memory location to control the quiescing and active tracing states of said tracing program.

References Cited (Backward Citations)

US3213427A Cited
US3286239A Cited
US3348211A Cited
US3343141A Cited
US3366929A Cited
US3509541A Cited
US3548384A Cited
US3415981A Cited
US3518413A Cited
US3551659A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1975-12-26 1976-06-26 1976-12-26 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 1979-12-26 1980-06-26 1980-12-26 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 1983-12-26 1984-06-26 1984-12-26 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag