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

Real-time tracing of dynamic local data in high level languages in the presence of process context switches

Assignee: Philips North America LLC
•
Filing: 1990-11-16
•
Granted: 1992-06-30
•
Expires: 2010-11-16
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An improved real-time debugger accommodates high level language computer programs containing dynamic local data and process context switches. Information thus acquired is used to deduce the stack frame pointer. Inputs and outputs of a target processor are tapped to capture key instructions, particularly indicating context switches. A local tag memory in the debugger stores images of stack frames during context switches.

Inventors

  • 👤 Charles R. Hill
  • 👤 Fryderyk Tyra
  • 👤 Samuel O. Akiwumi-Assani

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 01:26
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/36; G06F11/362; G06F11/3636

Claims Analysis

Total Claims: 33
Claim 1
Independent Claim 84 words
Apparatus for aiding in debugging of real-time programs executing on a target processor, which programs do not contain special trace instructions, comprising: a. means for capturing inputs to and outputs from the target processor; and b. means for real-time tracing of values of at least one local variable referenced in one of the programs, using the inputs to and outputs from the target processor, during a process context switch on the target processor, which process context switch involves the at least one local variable.
Claim 2
Dependent Claim 84 words
Apparatus for aiding in debugging of real-time programs executing on a target processor, which programs do not contain special trace instructions, comprising: a. means for capturing inputs to and outputs from the target processor; and b. means for real-time tracing of values of at least one local variable referenced in one of the programs, using the inputs to and outputs from the target processor, during a process context switch on the target processor, which process context switch involves the at least one local variable.
Claim 3
Dependent Claim 28 words
The apparatus of claim 1 wherein the inputs to and outputs from the target processor comprise address, data, and status signals appearing on pins of the target processor.
Claim 4
Dependent Claim 50 words
The apparatus of claim 1 wherein the capturing means comprises a clamp for placing over a chip which contains the target processor, the clamp including a plurality of inputs for coupling with respective pins of the chip and reading data therefrom substantially without disturbing the operations of the target processor.
Claim 5
Dependent Claim 26 words
The apparatus of claim 1 wherein the means for tracing comprises means for deducing a stack frame pointer of the program from the inputs and outputs.
Claim 6
Dependent Claim 21 words
The apparatus of claim 4 wherein the means for deducing comprises means for recognizing standard machine instructions of the target processor.
Claim 7
Dependent Claim 37 words
The apparatus of claim 5 wherein the standard machine instructions comprise an instruction which restores, from a memory coupled with the target processor, a plurality of register values one of which values is the stack frame pointer.
Claim 8
Dependent Claim 13 words
The apparatus of claim 6 wherein the the instruction is a moveml-type instruction.
Claim 9
Dependent Claim 32 words
The apparatus of claim 5 wherein the standard machine instructions comprise an instruction which restores from a memory coupled with the target processor a register value which is the stack frame pointer.
Claim 10
Dependent Claim 12 words
The apparatus of claim 8 wherein the instruction is a movel-type instruction.
Claim 11
Dependent Claim 27 words
The apparatus of claim 5 wherein the standard machine instructions comprise an instruction which creates a stack frame for storing local data belonging to a local procedure.
Claim 12
Dependent Claim 12 words
The apparatus of claim 10 wherein the instruction is a link-type instruction.
Claim 13
Dependent Claim 19 words
The apparatus of claim 5 wherein the standard machine instructions comprise a second instruction which removes the stack frame.
Claim 14
Dependent Claim 13 words
The apparatus of claim 12 wherein the second instruction is an unlink-type instruction.
Claim 15
Dependent Claim 134 words
The apparatus of claim 1 wherein: a. the inputs t and outputs from the target processor comprise address, data, and status signals appearing on pins of the target processor; and b. the tracing means comprises: i. a local tag memory for storing an image of tag information which represents a selection by a user of which local data to trace; ii. means for deducing a stack frame pointer of the program from the address, data and status signals; iii. means for storing a base address corresponding to a location of tag information in the local tag memory; iv. means for locating the tag information within the local tag memory using the base address and an offset which corresponds to a difference between the stack frame pointer and an address captured by the capturing means.
Claim 16
Dependent Claim 132 words
The apparatus of claim 14 wherein: a. the program comprises a plurality of procedures, each call to one of the procedures corresponding to a respective stack frame; b. the image represents the selection by the user of local data to trace from more than one of the procedures, whereby the local tag memory contains a plurality of sets of tag information relating to respective procedure stack frames; c. the means for storing the base address stores a plurality of base addresses one for each set of tag information; d. the means for locating uses as the base address one of the start addresses which corresponds to a procedure which includes the address captured by the capturing means, whereby parallel means for locating for each of the procedures of the program are eliminated.
Claim 17
Dependent Claim 18 words
The apparatus of claim 1 comprising means or real-time ignoring machine instructions which are prefetched and not executed.
Claim 18
Dependent Claim 66 words
The apparatus of claim 16 wherein the ignoring means comprises a global tag memory; means for setting a basic block bit in the global tab memory corresponding to each instruction in an object code representation of the program; and means for sensing a value of a basic block bit corresponding to an instruction after a prefetched instruction to determine whether the prefetched instruction should be ignored.
Claim 19
Dependent Claim 55 words
The apparatus of claim 1 comprising a host processor which comprises a. means for storing source code for the program; b. means for compiling the source code, the compiling means supplying an object code representation of the program and a symbol table; and c. means for downloading the object code representation into the target processor.
Claim 20
Dependent Claim 35 words
The apparatus of claim 18 wherein the symbol table comprises: a. start and end addresses of procedures of the program; b. offsets of local data locations; and c. addresses of instructions which begin basic blocks.
Claim 21
Dependent Claim 36 words
The apparatus of claim 19 wherein the host processor further comprises: a. means for accepting a selection by a user of local data in the program to be traced; and b. means for displaying trace results.
Claim 22
Dependent Claim 31 words
The apparatus of claim 20 wherein the selection further comprises an indication of whether the local data is to be traced on write references only or on read and write references.
Claim 23
Dependent Claim 42 words
The apparatus of claim 20 wherein the host processor comprises: means for deriving from the symbol table a set of procedure code bounds which comprises the respective start and end addresses of the procedures in which local data are to be traced.
Claim 24
Dependent Claim 42 words
The apparatus of claim 22 wherein the host processor further comprises means for deriving from the symbol table, an image of contents of a global memory, the image comprising basic block bits that are set to indicate instructions that begin basic blocks.
Claim 25
Dependent Claim 194 words
The apparatus of claim 23 wherein I. the tracing means comprises: a. input means for receiving data derived from the symbol table and the selection from the host processor; b. second means for capturing a frame pointer of the program from the inputs and outputs of the target processor, by decoding op-codes of the program, which op-codes are captured by the means for capturing; c. a local tag table memory for storing the selection, the local tag table memory having addressable locations and an output for supplying an indication of whether a particular local datum is part of the selection; and d. logic means for determining, from: i) the set of procedure code bounds; ii) the frame pointer, and iii) address and data information appearing in the inputs and outputs of the target processor, whether control in the target processor is currently in a given procedure and for specifying a given one of the locations in the local tag table memory which corresponds to the local datum within the given procedure; and II. the capturing means provides values of the local data in the selection under the control of the local tag table memory.
Claim 26
Dependent Claim 42 words
The apparatus of claim 24 wherein the determining means comprises a plurality of pairs of registered comparators, each pair of registered comparators containing respective upper and lower procedure code bounds, the registered comparators being loaded from the set of procedure code bounds.
Claim 27
Dependent Claim 263 words
The apparatus of claim 24 wherein the second capturing means comprises: a. input means for receiving a plurality of flags indicating: i. whether an instruction which affects the stack frame pointer is present on a data bus of the target processor (link, unlink, movem); ii. which register of the target processor contains the frame pointer (S 10 , S 11 , S 12 ); iii. whether signals on the data bus represent an instruction (FCO); iv. whether an instruction fetch appearing on the pins is part of a prefetch only; and v. which fetch in a move multiple instruction is for the frame pointer register (S3, S2, S1, S0); b. logic for steering signals captured from the data bus and an address bus of the target processor, the steering logic having i. an input for receiving signals captured from the data and addresses buses; and ii. an output; c. a frame pointer register, having i. an input at the output of the steering logic, and ii. a control input, the frame pointer register loading a value of the frame pointer from the steering logic under control of a signal received at the control input; and d. a state machine for converting the plurality of flags into a second plurality of flags indicating whether: i. the steering logic should provide at its output, signals from the address bus; ii. the steering logic should provide at its output, signals from the data bus; iii. to load the frame pointer register from the steering logic; and iv. the frame pointer register contains a valid frame pointer.
Claim 28
Dependent Claim 263 words
Apparatus for aiding in debugging of a real-time program executing on a target processor, the program comprising a plurality of procedures, each call to one of the procedures corresponding to a respective stack frame, the apparatus comprising: a. means for capturing inputs to and outputs from the target processor; b. means (120) for receiving: a selection by a user of local data to be traced, the local data to be traced being from a plurality of procedures; and data derived from a symbol table generated on a host processor as a result of compilation of a source-code version of the program; c. second means for capturing a frame pointer of the program from the inputs and outputs from the target processor, by decoding op-codes of the program, which op codes are captured by the means for capturing; d. a local tag table memory for storing the selection, the local tag table memory having addressable locations and an output for supplying an indication of whether a particular local datum is part of the selection, the local tag memory containing a plurality of sets of tag information relating to respective procedure stack frames; and e. logic means for specifying, based on the inputs and outputs, the data derived from the symbol table, and the frame pointer, a given one of the locations in the local tag table memory which corresponds to the local datum within the given procedure, using a segmented addressing scheme; wherein the capturing means provides values of the local data in the selection under the control of the local tag table memory.
Claim 29
Dependent Claim 263 words
Apparatus for aiding in debugging of a real-time program executing on a target processor, the program comprising a plurality of procedures, each call to one of the procedures corresponding to a respective stack frame, the apparatus comprising: a. means for capturing inputs to and outputs from the target processor; b. means (120) for receiving: a selection by a user of local data to be traced, the local data to be traced being from a plurality of procedures; and data derived from a symbol table generated on a host processor as a result of compilation of a source-code version of the program; c. second means for capturing a frame pointer of the program from the inputs and outputs from the target processor, by decoding op-codes of the program, which op codes are captured by the means for capturing; d. a local tag table memory for storing the selection, the local tag table memory having addressable locations and an output for supplying an indication of whether a particular local datum is part of the selection, the local tag memory containing a plurality of sets of tag information relating to respective procedure stack frames; and e. logic means for specifying, based on the inputs and outputs, the data derived from the symbol table, and the frame pointer, a given one of the locations in the local tag table memory which corresponds to the local datum within the given procedure, using a segmented addressing scheme; wherein the capturing means provides values of the local data in the selection under the control of the local tag table memory.
Claim 30
Independent Claim 200 words
A method for tracing local data used in a high level language program which runs on a target processor, the method comprising the steps of: a) capturing signals input to and output from the target processor, which captured signals include addresses, data, status signals, and contents of a program counter of the target processor; b) continuously sampling the contents of the program counter; c) testing whether the contents of the program counter fall within a set of procedure code bounds; d) decoding op codes of instructions being executed on the target processor, based on the captured signals; e) deducing a stack frame pointer based on decoded op codes which are from the set of op codes which indicate both procedure calls and process context switches, at least one of the decoded op codes indicating a process context switch; f) when the results of the testing step are positive: i) identifying the local data based on an offset from the stack frame pointer; ii) indexing a local tag memory associated with the contents of the program counter using the offset; iii) determining from the indexed tag memory that the local data is to be traced; and iv) capturing the local data.
Claim 31
Independent Claim 200 words
A method for tracing local data used in a high level language program which runs on a target processor, the method comprising the steps of: a) capturing signals input to and output from the target processor, which captured signals include addresses, data, status signals, and contents of a program counter of the target processor; b) continuously sampling the contents of the program counter; c) testing whether the contents of the program counter fall within a set of procedure code bounds; d) decoding op codes of instructions being executed on the target processor, based on the captured signals; e) deducing a stack frame pointer based on decoded op codes which are from the set of op codes which indicate both procedure calls and process context switches, at least one of the decoded op codes indicating a process context switch; f) when the results of the testing step are positive: i) identifying the local data based on an offset from the stack frame pointer; ii) indexing a local tag memory associated with the contents of the program counter using the offset; iii) determining from the indexed tag memory that the local data is to be traced; and iv) capturing the local data.
Claim 32
Dependent Claim 65 words
The method of claim 28 further comprising, after the decoding step, the step of a) if the decoded op code is one which can change the stack frame pointer, checking whether a corresponding instruction is being executed by checking a tag bit of a next instruction; and b) if the corresponding instruction is not being executed, ignoring the corresponding instruction as prefetched and not executed.
Claim 33
Dependent Claim 36 words
The method of claim 29 further comprising, after the checking step, the step of: a) if the decoded op code is a movem, further decoding the corresponding instruction to determine if the frame pointer is modified.

References Cited (Backward Citations)

US3707725A Cited
US4189234A Cited
US4232370A Cited
US4349873A Cited
US4634941A Cited
US4462077A Cited
US4636940A Cited
US4835675A Cited
US4720778A Cited
US4885717A Cited
US4866665A Cited
US4881228A Cited
US4819233A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1995-06-30 1995-12-30 1996-06-30 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 1999-06-30 1999-12-30 2000-06-30 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2003-06-30 2003-12-30 2004-06-30 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag