US20060259823A1 - Determining operating context of an executed instruction - Google Patents
Determining operating context of an executed instruction Download PDFInfo
- Publication number
- US20060259823A1 US20060259823A1 US11/383,414 US38341406A US2006259823A1 US 20060259823 A1 US20060259823 A1 US 20060259823A1 US 38341406 A US38341406 A US 38341406A US 2006259823 A1 US2006259823 A1 US 2006259823A1
- Authority
- US
- United States
- Prior art keywords
- processor
- trace
- task
- data
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Definitions
- trace data may comprise data such as the addresses of operational codes (opcodes) executed by the processor and values of various processor registers at each executed instruction.
- opcodes operational codes
- Some software programs operate in multi-tasking systems. That is, the processor of the system may execute multiple tasks in a time slice fashion, each task appearing to the computer system user to be simultaneously executing.
- it is difficult to determine the operating context of a particular task even when one has trace data for the task. For example, looking at the trace data alone it is difficult to determine: which channel of a multi-channel system to which the particular code section applies; the event log entries written contemporaneous with execution of the particular code section; the overall processor utilization in the time frame contemporaneous with the particular code section; and the power usage by the processor contemporaneous with the particular code section, to name a few.
- At least some of the illustrative embodiments are a computer-readable medium storing a debug-trace program that, when executed by a processor, causes the processor to display trace data on a display device (the trace data comprising a plurality of addresses of instructions executed by a target processor), enable a user of the debug-trace program to select an address of the plurality of addresses to create a selected address, and display data based on an operating context proximate in time to when the instruction of the selected address was executed on the target processor.
- Yet still other embodiments are a computer-readable medium storing an operating system program that, when executed by a processor, causes the processor to write a value to a predetermined memory location each time an application programming interface (API) portion of the operating system dealing with semaphores is called (the value indicative of the state of a semaphore).
- the predetermined memory location becomes a part of trace data associated with a task executed on the processor that called the API portion of the operating system.
- API application programming interface
- FIG. 1 shows a system in accordance with embodiments of the invention
- FIG. 2 shows, in greater detail, a target system in accordance with embodiments of the invention
- FIG. 3 shows a trace data display in accordance with some embodiments of the invention
- FIG. 4 shows a tree structure display in accordance with some embodiments of the invention.
- FIG. 5 shows a processor utilization display in accordance with some embodiments of the invention
- FIG. 6 shows a processor power consumption display in accordance with some embodiments of the invention.
- FIG. 7 shows a display indicating the state of a log buffer in accordance with some embodiments of the invention.
- FIG. 8 shows a method in accordance with embodiments of the invention.
- the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .”
- the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct connection, or through an indirect connection via other devices and connections.
- “Operating context” of a particular instruction shall mean an indication of one or more selected from the group comprising: the real-time (or substantially real-time) task to which the instruction belongs; the channel of a multi-channel system to which the instruction belongs; the processor or thread to which the instruction belongs; the processor utilization proximate in time to execution of the instruction; which dynamically loaded library (DLL) programs are loaded in memory; allocation and de-allocation of heap memory proximate in time to execution of the instruction; memory defragmentation events proximate in time to executing the instruction; direct memory access (DMA) events proximate in time to execution of the instruction; interrupts received by the processor proximate in time to execution of the instruction; the powered-state of various systems on the integrated circuit with the processor proximate to execution of the instruction; the state of power usage and/or battery state proximate to execution of the instruction; the current security level of the processor (e.g., supervisory, secure kernel, unsecure user); transitions between secure and unsecure modes proxi
- FIG. 1 illustrates software development system 100 in accordance with some embodiments of the invention.
- the software development 100 comprises a target system 10 coupled to a host computer 12 .
- the target system 10 may be any processor-based system upon which a software programmer would like to test and/or debug a computer program.
- the target system 10 may be, for example, a cellular telephone, a BLACKBERRY® device, or a computer system.
- the host computer stores and executes a program that is used to debug, and in some cases gather trace data and produce trace data displays, and thus is referred to herein as a debug-trace program 13 .
- the debug-trace program may execute on a the target system 10 , and in these embodiments is referred to as an embedded software debugger.
- the host computer 12 and target system 10 couple by way of one or more interconnects 14 , such as cables.
- the host computer 12 couples to target system 10 by way of a multi-pin cable 16 , such as a Mictor cable available from Tektronix Texas, LLC of Richardson, Tex.
- the multi-pin cable 16 enables transfer of trace data files from the target system 10 to the host computer 12 .
- the host computer 12 also couples to the target system 10 by way of a serial cable 18 across which the host computer 12 communicates with the joint test action group (JTAG) communication system, or other currently existing or after developed serial communication system.
- JTAG joint test action group
- the multi-pin cable 16 may have two or more pins dedicated to serial communication, and thus the host computer 12 and target system 10 may communicate using multiple protocols, yet over the same multi-pin cable 16 .
- Other embodiments comprise sending data over optical interconnect to the host computer, or logging the captured trace data in memory or disk that is accessible by the target processor where it can be accessed by an embedded software debugger.
- the trace data may be captured on the target system and transferred to the host computer by any of a variety of now existing or after developed transport protocols, which allow the host computer to interact over a distance such that the host computer and target system need not be co-located (e.g., Ethernet, transmission control protocol/internet protocol (TCP/IP), institute of electrical and electronic engineers (IEEE) 1391 protocol, RS-232, and peripheral components interconnect (PCI)).
- transport protocols e.g., Ethernet, transmission control protocol/internet protocol (TCP/IP), institute of electrical and electronic engineers (IEEE) 1391 protocol, RS-232, and peripheral components interconnect (PCI)
- FIG. 2 shows in greater detail a portion of the target system 10 .
- a target system 10 in accordance with embodiments of the invention comprises a System-On-A-Chip (SOC) 20 .
- the SOC 20 is so named because many devices that were previously individual components are integrated on a single integrated circuit.
- the SOC 20 may comprise one or more processors 22 , and a memory subsystem 25 that comprises a data cache 24 , an instruction cache 26 and an address decoder 27 .
- the SOC 20 may comprise other devices as well, such as random access memory (RAM), and memory controllers.
- the SOC 20 also comprises a trace system 28 .
- the trace system 28 comprises a First In-First Out buffer (FIFO) 30 in which trace data is gathered.
- the trace data from FIFO 30 is sent to the host computer 12 ( FIG. 1 ) by the trace system 28 through a debug port 29 .
- the SOC 20 also comprises a data flattener circuit 32 .
- the data flattener circuit 32 gathers the pertinent trace data from the processor's execution pipeline, serializes or “flattens” the trace data so that events that execute at different stages in the pipeline are logged in the correct sequence, and forwards the trace data to the FIFO buffer 30 in the trace system 28 .
- a non-limiting list of the various data points the data flattener 32 may read, serialize and then provide to the FIFO buffer 30 is: direct memory access (DMA) trace data; cache memory trace data; addresses of opcodes executed by the processor 22 ; the value of hardware registers in the processor 22 ; and interrupts received by the processor 22 .
- DMA direct memory access
- the integrated circuit SOC 20 may further comprise an event trigger system 34 .
- the event trigger system 34 couples to the data flattener 32 and receives a least a portion of the serialized data.
- the event trigger system 34 asserts a trigger signal 36 to the trace system 28 .
- the trace system 28 accumulates trace data in its FIFO buffer 30 and sends the trace data to the debug-trace program.
- a user of the host computer system 12 wishing to debug a software program executable on the target system 10 enables the event trigger system 34 , possibly by JTAG-based communication over the serial cable 18 . Thereafter, the user initiates the target program on the target system 10 .
- the processor 22 executes the target program, while the data flattener 32 gathers pertinent information, serializes the information, and forwards it both the event trigger system 34 and the trace system 28 .
- the data supplied to the trace system 28 by the flattener 22 may be ignored, discarded or collected such that the trace data comprises events just prior to the trigger.
- the trigger events occur and the trigger events are identified by the event trigger system 34 .
- the event trigger system 34 asserts the trigger signal 36 to the trace system 28 .
- the trace system 28 collects the trace data in the FIFO buffer 30 (possibly together with events that occur prior to the trigger). Simultaneously with collecting, the trace system 28 sends the trace data to the to the debug-trace program 13 . In some embodiments, the trace system 28 sends the trace data over the relatively high bandwidth multi-pin cable 16 . Other embodiments comprise sending trace data over an optical interconnect to the host computer 12 , over a local area network (LAN) or the internet, or the logging the captured trace data in memory or to a disk that is accessible by the target processor (e.g., an embedded debugging program).
- LAN local area network
- the target processor e.g., an embedded debugging program
- the debug-trace program 13 creates a trace data screen, such as trace data screen 40 illustrated in FIG. 3 .
- a trace data screen such as trace data screen 40 illustrated in FIG. 3 .
- looking at the addresses of the executed instructions (column 42 ) and disassembly information (such as opcodes 44 ) alone it is difficult to determine: which channel of a multi-channel system to which the code section shown on the trace data screen 40 applies; the event log entries written contemporaneous with execution of the particular code section; the overall processor utilization in the time frame contemporaneous with the particular code section; the power usage by the processor contemporaneous with the particular code section; whether a particular task was still operational when its time-slice expired (task overrun), to name a few.
- the trace system 28 is configured to insert into the trace data values indicative of the operating context in which the processor of the target system 10 is operating.
- the debug-trace program 13 (executing on the host computer 12 or as an embedded debugger) extracts the values indicative of the operating context. Still referring to FIG. 2 , the trace system 28 obtains the values indicative of the operating context from a target state register (TSR).
- TSR target state register
- the target state register is a hardware register located within the processor 22 , such as target state register 38 .
- the hardware register version of the target state register 38 is shown to couple to the trace system 28 (by way of a dashed line), it will be understood that the value of the target state register may, in actuality, be supplied to the trace system after passing through the data flattener 32 .
- a hardware register in the processor 22 may be equivalently referred to as an opcode addressable register.
- the target state register may be a register outside the processor.
- the SOC 20 may couple to a memory subsystem 21 which implements the target state register 23 .
- the target state register 23 may be readable by a memory operation to an assigned address, and thus target state register 23 may be referred to as a memory addressable register.
- the memory subsystem 21 may be integrated with other devices of the SOC 20 .
- the trace system 28 is configured to send the value in the target state register 23 , 38 to the host computer 12 when the value in the target state register, or a portion thereof, is newly written. Once the target state register has been newly written, the target state register becomes the highest priority data item for the trace system 28 , in some cases preempting other data until the target state register 23 , 28 has been read by the trace system 28 .
- the trace system 28 is configured to monitor the value in the target state register 23 , 38 and send the value to the host computer system 12 in a message wrapping protocol that identifies to the host computer 12 that the information is the value of the target state register 23 , 38 .
- the values in the target state register are sent across the high bandwidth cable 16 along with other trace data (e.g., direct memory access (DMA) trace data, cache memory trace data, addresses of opcodes executed by the processor 22 (the program counter values), the value of hardware registers in the processor 22 , and interrupts received by the processor 22 ).
- the operating context is written directly to the target state register 23 , 38 .
- inter-process synchronization variables such as semaphores, may be read and placed in the target state register 23 , 38 .
- alternative methods are used.
- the operating system writes operating context to an event or log buffer.
- a log buffer may be equivalently referred to as a data table, data array and/or data structure.
- data from the log buffer is read out by the host computer 12 after execution of the target or traced program has stopped.
- the log buffer may be read and cleared by the debug-trace program one or more times during the trace period to ensure all the entries generated are available to the debug-trace program.
- the trace system 28 in addition to the FIFO buffer 30 , implements a series of memory locations 31 ( FIG. 2 ) to be the log buffer.
- the log buffer is located in RAM, either on the SOC 20 or in the memory subsystem 21 ( FIG. 1 ) or in main memory. Regardless of the precise location of the log buffer, the host computer 12 has access to the log buffer and can read data from the log buffer as described above.
- the logical construction of the log buffer may take many forms.
- the log buffer is implemented as a plurality of equivalently sized data fields.
- the log buffer is implemented as a plurality of arbitrary sized data fields.
- the log buffer is a table having a plurality of rows and columns.
- at least some entries in the log buffer comprise an indication of the operating context proximate in time to writing of the entry and an index value.
- the index value is an index into the log buffer that identifies a particular entry in the log buffer.
- the index value could be, for example, a pointer, packet number, sequence number, row number or any other value indicative of the location of the entry.
- the index value is an inherent part of the entry, and in other embodiments the index value is generated and written by the operating system.
- the operating system in accordance with embodiments of the invention also places the index value in the target state register 23 , 38 .
- Writing the index value into the target state register contemporaneously with writing the log buffer ensures that the index value is present in the trace data associated with the traced program.
- the debug-trace program 13 reads the index value from the trace data, indexes into the log buffer data based on the index value, and thus obtains the indication of the operating context.
- the debug-trace program then associates the indicated operating context with subsequent trace data up to the next target state register value or index value that is stored in the trace stream.
- the debug-trace program associates the indicated operating system context with preceding trace data up to the previous target state register value or index value that is stored in the trace stream.
- the process of associating operating context with trace data is repeated for each index value stored in the trace stream. Attention now turns to how the debug-trace program 13 uses the information regarding the operating system context.
- FIG. 3 illustrates addresses of executed instructions 42 , along with the opcodes 44 of each instruction, and other information.
- the opcodes pertaining to each instruction may be determined by the debug-trace program 13 by correlating the addresses from the trace data to object files of the traced program.
- the debug-trace program 13 enables a user viewing the trace data screen 40 to select a particular instruction (or group of instructions), and based on the one or more selected instructions the debug-trace program 13 displays operating context proximate in time to when the selected instruction was executed. For example, a user may select the instruction # 3 having address 00008CCC to further investigate the operating context of the instruction.
- FIG. 4 illustrates a display 48 of a tree structure 48 in accordance with embodiments of the invention.
- the debug-trace program 13 displays a tree structure, such as that shown in FIG. 4 .
- the illustrative tree structure shows that for the particular multi-tasking target processor, four overall tasks are operational; task one 50 , task two 52 , task three 54 and task four 56 .
- the illustrative situation in FIG. 4 also shows that, as for task one, there are three active channels; channel one 58 , channel two 60 , and channel three 62 .
- Channel one 58 has a message queue, an active encoder and an active decoder.
- channel two 60 has a message queue, an active decoder and an echo canceller.
- selection of a particular instruction bring up a display such as display 48
- the task to which the selected instruction belongs is indicated in the display 48 .
- the selected instruction # 3 is an instruction of the encoder for channel one 58 of task one 50
- the encoder is indicated or highlighted as shown at 64 .
- the user may quickly determine, by selecting an instruction in the trace data screen 40 , to which portion of the operating tasks the instruction belongs.
- the selected instruction belonging to the encoder of channel one 58 of task one 50 is merely illustrative.
- a selected instruction may belong to any active task or function within an active task, and in accordance with embodiments of the invention selecting the instruction from the trace data screen 40 indicates to which task and/or function it belongs.
- the operating system of the target system 10 is configured to write an indication of the operating context to the trace data stream each time a new task is instantiated (or re-instantiated if previously preempted) on the processor 22 .
- the task switcher each time the task switcher instantiates the instructions associated with the task one 50 , channel one 58 encoder 64 , the task switcher writes an indication of the identity of the instructions to the trace data stream.
- writing the indication of the identity could be writing the identity of the instructions directly to the target state register 23 , 38 .
- the task switcher writes the information to a log buffer, and writes an index value of the location in the log buffer to the target state register 23 , 38 .
- the debug-trace program 13 builds and displays the tree structure and highlights the particular portion to which the selected instruction belongs ( FIG. 4 ).
- the writing of the indication of the identity is initiated by the traced program calling an operating system function, for example an event logging function instead of, or in addition, to the operating system task switcher writing the indication of the identity.
- FIG. 5 shows an illustrative processor utilization display 66 .
- the debug-trace program 13 when a user selects a particular instruction from a trace data screen 40 ( FIG. 3 ), the debug-trace program 13 generates and displays a processor utilization display similar to display 66 , with the utilization of the processor proximate in time to execution of the selected instruction indicated, such as by vertical line 68 .
- the operating system of the target system 10 is configured to periodically write an indication of the processor utilization (e.g., number of cycles spent in the idle process) to the trace data stream.
- the processor is periodically interrupted, and an interrupt service routine reads the data indicative of processor utilization, and places the data in the trace stream.
- the task switcher of the operating system writes the data indicative of the processor utilization each time a task is instantiated (or re-instantiated) on the processor.
- writing the indication of processor utilization to the trace data stream involves writing the indication directly to the target state register 23 , 38 .
- the data indicative of processor utilization is written to a log buffer, and the index value of the location in the log buffer is written to the target state register 23 , 38 .
- the debug-trace program 13 uses the data indicative of processor utilization written proximate in time to execution of the selected instruction, as well as similar information written contemporaneously with the selected instruction to build and displays the processor utilization display and highlights the processor utilization proximate in time to execution of the selected instruction ( FIG. 5 ).
- FIG. 6 shows an illustrative processor power consumption display 70 .
- the debug-trace program 13 when a user selects a particular instruction from a trace data screen 40 ( FIG. 3 ), the debug-trace program 13 generates and displays a processor power utilization display similar to display 70 , with the utilization of the processor proximate in time to execution of the selected instruction indicated, such as by vertical line 72 .
- the operating system of the target system 10 is configured to periodically sample hardware dedicated to measuring current draw for the processor by way of its power pins, for example.
- the data collected by the operating system thus provides a record in time of the current drawn by the processor as it executes.
- the power draw values can then optionally be converted into percentages of a maximum rated power consumption figure.
- the operating system then writes an indication of the processor power consumption to the trace data stream. The nature of the writing could take many forms.
- the processor is periodically interrupted, and an interrupt service routine reads the data indicative of processor power consumption, and places the data in the trace stream.
- the task switcher of the operating system writes the data indicative of the processor power consumption each time a task is instantiate (or re-instantiated) on the processor.
- the traced program reads the data indicative of processor power consumption and calls an operating system function to place the data in the trace stream.
- writing the indication of processor power consumption to the trace data stream involves writing the indication directly to the target state register 23 , 38 .
- the data indicative of processor power consumption is written to a log buffer, and the index value of the location in the log buffer is written to the target state register 23 , 38 .
- the debug-trace program 13 uses the data indicative of processor power consumption written proximate in time to execution of the selected instruction, as well as similar information written contemporaneously with the selected instruction to build and displays the processor power consumption display and highlights the processor power consumption proximate in time to execution of the selected instruction ( FIG. 6 ).
- FIG. 7 shows an illustrative display 74 of messages passed between processors.
- the debug-trace program 13 when a user selects a particular instruction from a trace data screen ( FIG. 3 ), the debug-trace program 13 generates and displays an indication of the state of inter-process communications, such as display 74 .
- the illustrative messages could be the messages passed by pipes, queues, shared memory buffers, serial communication links, and the like.
- the message or messages written proximate in time to execution of the selected instruction may be indicated such as by highlighting some or all the message, such as illustrative message 76 .
- FIG. 7 is thus also illustrative of showing log buffer entries made proximate in time to execution of the selected instruction.
- the operating system of the target system 10 is configured to write an index value to the target state register 23 , 38 each time a new log entry is written. Using the index value for log entries written proximate in time to execution of the particular instruction, the debug-trace program 13 builds and displays log information and highlights the particular message(s) proximate in time to execution of the selected instruction ( FIG. 7 ).
- the operating system of the target system 10 is configured to write an index value of a message queue or some other message passing data structure to the target state register each time a new message entry is written. In these embodiments, the debug-trace program 13 reads the messages directly from the message queue or message passing data structure.
- other embodiments may also produce a display that shows the state of preemption in the processor and/or the state of semaphore flags.
- a first, lower priority task is halted in favor of a higher priority task (e.g., needs to be activated).
- a semaphore flag is a flag used for activities such as synchronizing tasks and/or for a boolean form of inter-process communication. Referring again to FIG. 3 , the display 40 of FIG.
- FIG. 3 in addition to showing trace data such as addresses of executed instructions and disassembly information, also illustrates showing the state of preemption in the processor and the state of a semaphore flag.
- column 78 shows an alternative form of an indication of to which task each exemplary instruction belongs (by the solid dark line (e.g., line 80 )).
- FIG. 3 also shows when preemption has taken place by having the column associated with the task changing from solid to crosshatch.
- task 1 is the active task associated with instructions # 1 through # 16 .
- instruction # 17 task 1 is preempted by task 2 .
- the activation of task 2 is illustrated by the solid line 82
- the preemption of task 1 is shown by crosshatch 84 .
- FIG. 3 illustrates the preemptive state of task 1 .
- Column 78 of FIG. 3 alternatively illustrates the situation of a task failing to complete during its allotted time slice. That is, if task 1 was assigned a particular time slice in which to complete a task, and yet task 1 was still executing at the end of the time slice and was stopped in favor of task 2 for the next time slice, the crosshatch shading 84 may show that the task failed to finish its desired work, and thus the programmer may need to further debug and/or optimize task 1 to ensure the task completes in its time slice.
- the operating system of the target system 10 is configured to write an indication of the operating context to the trace data stream each time the a new task is instantiated on the processor 22 . Further, if the task switcher preempts another task for a higher priority task, or if the task switcher preempts a task that should have completed during the time slice, the task switcher is configured to write an indication of such to the trace data stream. As discussed above, writing the indication could be writing the indications directly to the target state register 23 , 38 .
- the task switcher writes the information to a log buffer, and writes an index value of the location in the log buffer to the target state register 23 , 38 .
- the debug-trace program 13 builds and displays the column 78 in the display 40 ( FIG. 3 ).
- column 86 illustrates indicating the state of a semaphore flag.
- the semaphore flag illustrated by column 86 is pending until instruction # 17 .
- the state of the semaphore flag changes, as illustrated by the solid line 88 changing to an outlined line 90 .
- the change of state of the semaphore flag may trigger the preemption of task 1 by task 2 , but this is merely illustrative. Any action waiting or synchronizing with respect to the semaphore flag may trigger based on the change of state.
- the operating system of the target system 10 and in particular the application programming interfaces that enable assertion and de-assertion of the semaphore flags, are configured to write an indication of the state of the semaphore flag(s) to the trace data stream each time there is a change of state.
- writing the state of the semaphore flag(s) could be writing the states directly to the target state register 23 , 38 .
- the application programming interfaces for controlling the semaphore flags write the states to a log buffer, and write an index value of the location in the log buffer to the target state register 23 , 38 .
- the debug-trace program 13 builds and displays the column 86 in the display 40 ( FIG. 3 ).
- FIG. 8 illustrates a method (e.g., software) in accordance with embodiments of the invention.
- the process starts (block 800 ) and proceeds to writing an indication of an operating context of a task (block 804 ) executing on a processor.
- the operating context may take many forms.
- the operating context could be: an indication of an active task; the state of power utilization; the state of power consumption; an indication of particular entries in a log buffer (e.g., inter-process communication log buffer); or the state of a semaphore flag, to name a few.
- a trace data display is generated and displayed on a display device (block 812 ).
- a display is generated to show the state of an operating context proximate in time to a particular instruction (block 816 ), and the process ends (block 820 ).
- Displaying the operating context may take many forms. For example, a tree structure may be displayed which shows the various tasks executed proximate in time to a selected instruction, and may also indicate to which task (and function within the task) the selected instruction belongs ( FIG. 4 ).
- processor utilization may be displayed, with the processor utilization proximate in time to execution of a selected instruction highlighted ( FIG. 5 ).
- a processor power consumption as a function of time may be displayed, with the processor power consumption proximate in time to execution of a selected instruction highlighted ( FIG. 6 ).
- an indication of particular entries in a log buffer made proximate in time to execution of a selected instruction may be displayed ( FIG. 7 ).
- Yet still another example is displaying an indication of preemption of a particular task and/or an indication of when a task failed to complete during its allotted time slice ( FIG. 3 ).
- Another example is an indication of a state of a semaphore flag proximate in time to execution of a selected instruction (again FIG. 3 ).
- the computer readable medium could be, for example, a volatile memory, a non-volatile memory, a compact disc read only memory (CDROM), an electrically erasable programmable read only memory (EEPROM), a hard drive, and the like.
Abstract
Description
- This application claims the benefit of Provisional Application Ser. No. 60/681,427 filed May 16, 2005, titled “Debugging Software-Controlled Cache Coherence,” and Provisional Application Ser. No. 60/681,561, filed May 16, 2005, entitled, “Debugging Application with Overlays, Run-Time Relocatable Code and Multi-Task”, both of which are incorporated by reference herein as if reproduced in full below.
- In order to look for errors in software programs (an activity referred to as “debugging”), some software development tools provide the ability to record the sequence of operations that a processor performed while executing a program. This is referred to as tracing the execution of the program, and the information that is captured is referred to as trace data The trace data may comprise data such as the addresses of operational codes (opcodes) executed by the processor and values of various processor registers at each executed instruction.
- Some software programs operate in multi-tasking systems. That is, the processor of the system may execute multiple tasks in a time slice fashion, each task appearing to the computer system user to be simultaneously executing. However, when debugging software programs executed in a multi-tasking system, it is difficult to determine the operating context of a particular task, even when one has trace data for the task. For example, looking at the trace data alone it is difficult to determine: which channel of a multi-channel system to which the particular code section applies; the event log entries written contemporaneous with execution of the particular code section; the overall processor utilization in the time frame contemporaneous with the particular code section; and the power usage by the processor contemporaneous with the particular code section, to name a few.
- The problems noted above are solved in large part by method of determining operating context of an executed instruction. At least some of the illustrative embodiments are a computer-readable medium storing a debug-trace program that, when executed by a processor, causes the processor to display trace data on a display device (the trace data comprising a plurality of addresses of instructions executed by a target processor), enable a user of the debug-trace program to select an address of the plurality of addresses to create a selected address, and display data based on an operating context proximate in time to when the instruction of the selected address was executed on the target processor.
- Other illustrative embodiments are a computer-readable medium storing an operating system program that, when executed by a processor, causes the processor to write an entry to a log buffer each time a task switching portion of the operating system program makes a task switch to a first task (the entry comprising operating context data), and write a value indicative of the entry of the log buffer to a predetermined memory location (which value becomes a part of trace data associated with the first task, and wherein the trace data gathered by a trace system associated with the processor).
- Yet still other embodiments are a computer-readable medium storing an operating system program that, when executed by a processor, causes the processor to write a value to a predetermined memory location each time an application programming interface (API) portion of the operating system dealing with semaphores is called (the value indicative of the state of a semaphore). The predetermined memory location becomes a part of trace data associated with a task executed on the processor that called the API portion of the operating system.
- For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:
-
FIG. 1 shows a system in accordance with embodiments of the invention; -
FIG. 2 shows, in greater detail, a target system in accordance with embodiments of the invention; -
FIG. 3 shows a trace data display in accordance with some embodiments of the invention; -
FIG. 4 shows a tree structure display in accordance with some embodiments of the invention; -
FIG. 5 shows a processor utilization display in accordance with some embodiments of the invention; -
FIG. 6 shows a processor power consumption display in accordance with some embodiments of the invention; -
FIG. 7 shows a display indicating the state of a log buffer in accordance with some embodiments of the invention; and -
FIG. 8 shows a method in accordance with embodiments of the invention. - Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function.
- In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct connection, or through an indirect connection via other devices and connections.
- “Operating context” of a particular instruction shall mean an indication of one or more selected from the group comprising: the real-time (or substantially real-time) task to which the instruction belongs; the channel of a multi-channel system to which the instruction belongs; the processor or thread to which the instruction belongs; the processor utilization proximate in time to execution of the instruction; which dynamically loaded library (DLL) programs are loaded in memory; allocation and de-allocation of heap memory proximate in time to execution of the instruction; memory defragmentation events proximate in time to executing the instruction; direct memory access (DMA) events proximate in time to execution of the instruction; interrupts received by the processor proximate in time to execution of the instruction; the powered-state of various systems on the integrated circuit with the processor proximate to execution of the instruction; the state of power usage and/or battery state proximate to execution of the instruction; the current security level of the processor (e.g., supervisory, secure kernel, unsecure user); transitions between secure and unsecure modes proximate in time to execution of the instruction; exceptions regarding accesses to protected memory asserted proximate in time to execution of the instruction; the state of inter-process synchronization variables (e.g., semaphores, locks, pipes and queues) proximate in time to execution of the instruction; the state of inter-process communication proximate in time to execution of the instruction; exceptions, task overruns, watchdog timer timeouts and unexpected or invalid inputs proximate in time to execution of the instruction.
- The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any embodiment is meant only to be exemplary of that embodiment, and not intended to intimate that the scope of the disclosure, including the claims, is limited to that embodiment.
-
FIG. 1 illustratessoftware development system 100 in accordance with some embodiments of the invention. Thesoftware development 100 comprises atarget system 10 coupled to ahost computer 12. Thetarget system 10 may be any processor-based system upon which a software programmer would like to test and/or debug a computer program. Thetarget system 10 may be, for example, a cellular telephone, a BLACKBERRY® device, or a computer system. The host computer stores and executes a program that is used to debug, and in some cases gather trace data and produce trace data displays, and thus is referred to herein as a debug-trace program 13. In other embodiments, the debug-trace program may execute on a thetarget system 10, and in these embodiments is referred to as an embedded software debugger. - The
host computer 12 andtarget system 10 couple by way of one ormore interconnects 14, such as cables. In some embodiments, thehost computer 12 couples to targetsystem 10 by way of amulti-pin cable 16, such as a Mictor cable available from Tektronix Texas, LLC of Richardson, Tex. Themulti-pin cable 16 enables transfer of trace data files from thetarget system 10 to thehost computer 12. In other embodiments, thehost computer 12 also couples to thetarget system 10 by way of aserial cable 18 across which thehost computer 12 communicates with the joint test action group (JTAG) communication system, or other currently existing or after developed serial communication system. In order to reduce the number of cables required to couple the host computer with the target system, themulti-pin cable 16 may have two or more pins dedicated to serial communication, and thus thehost computer 12 andtarget system 10 may communicate using multiple protocols, yet over the samemulti-pin cable 16. Other embodiments comprise sending data over optical interconnect to the host computer, or logging the captured trace data in memory or disk that is accessible by the target processor where it can be accessed by an embedded software debugger. In yet still other embodiments, the trace data may be captured on the target system and transferred to the host computer by any of a variety of now existing or after developed transport protocols, which allow the host computer to interact over a distance such that the host computer and target system need not be co-located (e.g., Ethernet, transmission control protocol/internet protocol (TCP/IP), institute of electrical and electronic engineers (IEEE) 1391 protocol, RS-232, and peripheral components interconnect (PCI)). -
FIG. 2 shows in greater detail a portion of thetarget system 10. In particular, atarget system 10 in accordance with embodiments of the invention comprises a System-On-A-Chip (SOC) 20. TheSOC 20 is so named because many devices that were previously individual components are integrated on a single integrated circuit. For example, the SOC 20 may comprise one ormore processors 22, and amemory subsystem 25 that comprises adata cache 24, aninstruction cache 26 and anaddress decoder 27. TheSOC 20 may comprise other devices as well, such as random access memory (RAM), and memory controllers. In accordance with embodiments of the invention, theSOC 20 also comprises atrace system 28. Thetrace system 28 comprises a First In-First Out buffer (FIFO) 30 in which trace data is gathered. The trace data from FIFO 30 is sent to the host computer 12 (FIG. 1 ) by thetrace system 28 through adebug port 29. Because theprocessor 22 may perform a plurality of parallel operations, the SOC 20 also comprises adata flattener circuit 32. As the name implies, thedata flattener circuit 32 gathers the pertinent trace data from the processor's execution pipeline, serializes or “flattens” the trace data so that events that execute at different stages in the pipeline are logged in the correct sequence, and forwards the trace data to theFIFO buffer 30 in thetrace system 28. A non-limiting list of the various data points thedata flattener 32 may read, serialize and then provide to theFIFO buffer 30 is: direct memory access (DMA) trace data; cache memory trace data; addresses of opcodes executed by theprocessor 22; the value of hardware registers in theprocessor 22; and interrupts received by theprocessor 22. - Still referring to
FIG. 2 , in some embodiments the integratedcircuit SOC 20 may further comprise anevent trigger system 34. Theevent trigger system 34 couples to thedata flattener 32 and receives a least a portion of the serialized data. In response to various pre-programmed triggers (where such triggers may be communicated to theevent trigger system 34 by way of JTAG-based communications through the debug port 29), theevent trigger system 34 asserts atrigger signal 36 to thetrace system 28. In response, thetrace system 28 accumulates trace data in itsFIFO buffer 30 and sends the trace data to the debug-trace program. - Referring simultaneously to
FIGS. 1 and 2 , a user of thehost computer system 12 wishing to debug a software program executable on thetarget system 10 enables theevent trigger system 34, possibly by JTAG-based communication over theserial cable 18. Thereafter, the user initiates the target program on thetarget system 10. Theprocessor 22 executes the target program, while thedata flattener 32 gathers pertinent information, serializes the information, and forwards it both theevent trigger system 34 and thetrace system 28. At points in time before thetrace system 28 is enabled by theevent trigger system 34, the data supplied to thetrace system 28 by theflattener 22 may be ignored, discarded or collected such that the trace data comprises events just prior to the trigger. At a point in execution of the target or traced program, the trigger events occur and the trigger events are identified by theevent trigger system 34. Theevent trigger system 34 asserts thetrigger signal 36 to thetrace system 28. - In response to assertion of the
trigger signal 36, thetrace system 28 collects the trace data in the FIFO buffer 30 (possibly together with events that occur prior to the trigger). Simultaneously with collecting, thetrace system 28 sends the trace data to the to the debug-trace program 13. In some embodiments, thetrace system 28 sends the trace data over the relatively highbandwidth multi-pin cable 16. Other embodiments comprise sending trace data over an optical interconnect to thehost computer 12, over a local area network (LAN) or the internet, or the logging the captured trace data in memory or to a disk that is accessible by the target processor (e.g., an embedded debugging program). - The debug-
trace program 13 creates a trace data screen, such as trace data screen 40 illustrated inFIG. 3 . However, it is difficult to determine the operating context of a particular task even when one hastrace data screen 40. For example, looking at the addresses of the executed instructions (column 42) and disassembly information (such as opcodes 44) alone it is difficult to determine: which channel of a multi-channel system to which the code section shown on thetrace data screen 40 applies; the event log entries written contemporaneous with execution of the particular code section; the overall processor utilization in the time frame contemporaneous with the particular code section; the power usage by the processor contemporaneous with the particular code section; whether a particular task was still operational when its time-slice expired (task overrun), to name a few. - In order to assist the user of the debug-
trace program 13 in determining operating context, in some embodiments of the invention thetrace system 28 is configured to insert into the trace data values indicative of the operating context in which the processor of thetarget system 10 is operating. The debug-trace program 13 (executing on thehost computer 12 or as an embedded debugger) extracts the values indicative of the operating context. Still referring toFIG. 2 , thetrace system 28 obtains the values indicative of the operating context from a target state register (TSR). In some embodiments the target state register is a hardware register located within theprocessor 22, such astarget state register 38. Although the hardware register version of thetarget state register 38 is shown to couple to the trace system 28 (by way of a dashed line), it will be understood that the value of the target state register may, in actuality, be supplied to the trace system after passing through thedata flattener 32. A hardware register in theprocessor 22 may be equivalently referred to as an opcode addressable register. In alternative embodiments, the target state register may be a register outside the processor. For example, and referring briefly toFIG. 1 , theSOC 20 may couple to amemory subsystem 21 which implements thetarget state register 23. In these alternative embodiments, thetarget state register 23 may be readable by a memory operation to an assigned address, and thus targetstate register 23 may be referred to as a memory addressable register. In yet still other embodiments, thememory subsystem 21 may be integrated with other devices of theSOC 20. - The
trace system 28 is configured to send the value in thetarget state register host computer 12 when the value in the target state register, or a portion thereof, is newly written. Once the target state register has been newly written, the target state register becomes the highest priority data item for thetrace system 28, in some cases preempting other data until thetarget state register trace system 28. Thetrace system 28 is configured to monitor the value in thetarget state register host computer system 12 in a message wrapping protocol that identifies to thehost computer 12 that the information is the value of thetarget state register high bandwidth cable 16 along with other trace data (e.g., direct memory access (DMA) trace data, cache memory trace data, addresses of opcodes executed by the processor 22 (the program counter values), the value of hardware registers in theprocessor 22, and interrupts received by the processor 22). In some embodiments, the operating context is written directly to thetarget state register target state register target state register 23, 38 (in someembodiments 30 bits), alternative methods are used. - In alternative embodiments, the operating system writes operating context to an event or log buffer. A log buffer may be equivalently referred to as a data table, data array and/or data structure. In some embodiments, data from the log buffer is read out by the
host computer 12 after execution of the target or traced program has stopped. In situations where the log buffer does not contain a sufficient number of storage locations to store all the log data written during a trace period (e.g., log buffer has too few locations, or the log buffer is circular and the number of entries expected will overwrite earlier entries during the trace period), the log buffer may be read and cleared by the debug-trace program one or more times during the trace period to ensure all the entries generated are available to the debug-trace program. In some embodiments, thetrace system 28, in addition to theFIFO buffer 30, implements a series of memory locations 31 (FIG. 2 ) to be the log buffer. In alternative embodiments, the log buffer is located in RAM, either on theSOC 20 or in the memory subsystem 21 (FIG. 1 ) or in main memory. Regardless of the precise location of the log buffer, thehost computer 12 has access to the log buffer and can read data from the log buffer as described above. - The logical construction of the log buffer may take many forms. In some embodiments, the log buffer is implemented as a plurality of equivalently sized data fields. In alternative embodiments, the log buffer is implemented as a plurality of arbitrary sized data fields. In yet still other embodiments, the log buffer is a table having a plurality of rows and columns. Regardless of the logical construction of the log buffer, in accordance with embodiments of the invention at least some entries in the log buffer comprise an indication of the operating context proximate in time to writing of the entry and an index value. The index value is an index into the log buffer that identifies a particular entry in the log buffer. The index value could be, for example, a pointer, packet number, sequence number, row number or any other value indicative of the location of the entry. In some embodiments, the index value is an inherent part of the entry, and in other embodiments the index value is generated and written by the operating system.
- In addition to writing the indication of the operating context and possibly the index value in the
log buffer 31, the operating system in accordance with embodiments of the invention also places the index value in thetarget state register trace program 13 reads the index value from the trace data, indexes into the log buffer data based on the index value, and thus obtains the indication of the operating context. The debug-trace program then associates the indicated operating context with subsequent trace data up to the next target state register value or index value that is stored in the trace stream. In alternative embodiments, the debug-trace program associates the indicated operating system context with preceding trace data up to the previous target state register value or index value that is stored in the trace stream. The process of associating operating context with trace data is repeated for each index value stored in the trace stream. Attention now turns to how the debug-trace program 13 uses the information regarding the operating system context. - Referring again to
FIG. 3 ,FIG. 3 illustrates addresses of executedinstructions 42, along with theopcodes 44 of each instruction, and other information. The opcodes pertaining to each instruction may be determined by the debug-trace program 13 by correlating the addresses from the trace data to object files of the traced program. In accordance with embodiments of the invention, the debug-trace program 13 enables a user viewing the trace data screen 40 to select a particular instruction (or group of instructions), and based on the one or more selected instructions the debug-trace program 13 displays operating context proximate in time to when the selected instruction was executed. For example, a user may select theinstruction # 3 having address 00008CCC to further investigate the operating context of the instruction. -
FIG. 4 illustrates adisplay 48 of atree structure 48 in accordance with embodiments of the invention. In particular, in accordance with some embodiments when a user selects an instruction in a trace data screen 40 (e.g., instruction #3) the debug-trace program 13 displays a tree structure, such as that shown inFIG. 4 . The illustrative tree structure shows that for the particular multi-tasking target processor, four overall tasks are operational; task one 50, task two 52, task three 54 and task four 56. The illustrative situation inFIG. 4 also shows that, as for task one, there are three active channels; channel one 58, channel two 60, and channel three 62. Channel one 58 has a message queue, an active encoder and an active decoder. Likewise, channel two 60 has a message queue, an active decoder and an echo canceller. In accordance with some embodiments, not only does selection of a particular instruction bring up a display such asdisplay 48, but also the task to which the selected instruction belongs is indicated in thedisplay 48. For example, if the selectedinstruction # 3 is an instruction of the encoder for channel one 58 of task one 50, then in theillustrative display 48 the encoder is indicated or highlighted as shown at 64. Thus, the user may quickly determine, by selecting an instruction in thetrace data screen 40, to which portion of the operating tasks the instruction belongs. Particularly in the case of multiple instances of substantially the same program (e.g., encoders, decoders, tone generators, echo cancellers), it is difficult from the addresses of executed instructions and disassembly data alone to determine which task/function/channel an instruction belongs. The selected instruction belonging to the encoder of channel one 58 of task one 50 is merely illustrative. A selected instruction may belong to any active task or function within an active task, and in accordance with embodiments of the invention selecting the instruction from thetrace data screen 40 indicates to which task and/or function it belongs. - In order to implement the embodiments discussed with respect to
FIG. 4 , the operating system of thetarget system 10, and in particular the task manager or task switcher of the operating system, is configured to write an indication of the operating context to the trace data stream each time a new task is instantiated (or re-instantiated if previously preempted) on theprocessor 22. For example, each time the task switcher instantiates the instructions associated with the task one 50, channel one 58encoder 64, the task switcher writes an indication of the identity of the instructions to the trace data stream. As discussed above, writing the indication of the identity could be writing the identity of the instructions directly to thetarget state register target state register trace program 13 builds and displays the tree structure and highlights the particular portion to which the selected instruction belongs (FIG. 4 ). In alternative embodiments, the writing of the indication of the identity is initiated by the traced program calling an operating system function, for example an event logging function instead of, or in addition, to the operating system task switcher writing the indication of the identity. - In addition to, or in place of, the tree structure of
display 48, other embodiments may also produce an indication of processor utilization proximate in time with execution of the selected instruction. In particular,FIG. 5 shows an illustrativeprocessor utilization display 66. In accordance with these embodiments, when a user selects a particular instruction from a trace data screen 40 (FIG. 3 ), the debug-trace program 13 generates and displays a processor utilization display similar to display 66, with the utilization of the processor proximate in time to execution of the selected instruction indicated, such as byvertical line 68. - In order to implement the embodiments discussed with respect to
FIG. 5 , the operating system of thetarget system 10 is configured to periodically write an indication of the processor utilization (e.g., number of cycles spent in the idle process) to the trace data stream. The nature of the writing could take many forms. In some embodiments, the processor is periodically interrupted, and an interrupt service routine reads the data indicative of processor utilization, and places the data in the trace stream. In alternative embodiments, the task switcher of the operating system writes the data indicative of the processor utilization each time a task is instantiated (or re-instantiated) on the processor. As discussed above, in some embodiments writing the indication of processor utilization to the trace data stream involves writing the indication directly to thetarget state register target state register trace program 13 builds and displays the processor utilization display and highlights the processor utilization proximate in time to execution of the selected instruction (FIG. 5 ). - In addition to, or in place of, the tree structure of
display 48 and theprocessor utilization display 66, other embodiments may also produce an indication of processor power consumption proximate in time with execution of the selected instruction. In particular,FIG. 6 shows an illustrative processorpower consumption display 70. In accordance with these embodiments, when a user selects a particular instruction from a trace data screen 40 (FIG. 3 ), the debug-trace program 13 generates and displays a processor power utilization display similar to display 70, with the utilization of the processor proximate in time to execution of the selected instruction indicated, such as byvertical line 72. - In order to implement the embodiments discussed with respect to
FIG. 6 , the operating system of thetarget system 10 is configured to periodically sample hardware dedicated to measuring current draw for the processor by way of its power pins, for example. The data collected by the operating system thus provides a record in time of the current drawn by the processor as it executes. The power draw values can then optionally be converted into percentages of a maximum rated power consumption figure. The operating system then writes an indication of the processor power consumption to the trace data stream. The nature of the writing could take many forms. In some embodiments, the processor is periodically interrupted, and an interrupt service routine reads the data indicative of processor power consumption, and places the data in the trace stream. In alternative embodiments, the task switcher of the operating system writes the data indicative of the processor power consumption each time a task is instantiate (or re-instantiated) on the processor. In yet other alternative embodiments, the traced program reads the data indicative of processor power consumption and calls an operating system function to place the data in the trace stream. As discussed above, in some embodiments writing the indication of processor power consumption to the trace data stream involves writing the indication directly to thetarget state register target state register trace program 13 builds and displays the processor power consumption display and highlights the processor power consumption proximate in time to execution of the selected instruction (FIG. 6 ). - In addition to, or in place of, the tree structure of
display 48, theprocessor utilization display 66, and the processorpower consumption display 70, other embodiments may also produce a display that shows the state of inter-process communication proximate in time execution of the selected instruction. In particular,FIG. 7 shows anillustrative display 74 of messages passed between processors. In these embodiments, when a user selects a particular instruction from a trace data screen (FIG. 3 ), the debug-trace program 13 generates and displays an indication of the state of inter-process communications, such asdisplay 74. The illustrative messages could be the messages passed by pipes, queues, shared memory buffers, serial communication links, and the like. The message or messages written proximate in time to execution of the selected instruction may be indicated such as by highlighting some or all the message, such asillustrative message 76. Inasmuch as the messages illustrated inFIG. 7 may be written to a log buffer,FIG. 7 is thus also illustrative of showing log buffer entries made proximate in time to execution of the selected instruction. - In order to implement the embodiments discussed with respect to
FIG. 7 , the operating system of thetarget system 10 is configured to write an index value to thetarget state register trace program 13 builds and displays log information and highlights the particular message(s) proximate in time to execution of the selected instruction (FIG. 7 ). In some alternative embodiments, the operating system of thetarget system 10 is configured to write an index value of a message queue or some other message passing data structure to the target state register each time a new message entry is written. In these embodiments, the debug-trace program 13 reads the messages directly from the message queue or message passing data structure. - In addition to, or in place of, the tree structure of
display 48, theprocessor utilization display 66, the processorpower consumption display 70, and theinter-process communication display 74, other embodiments may also produce a display that shows the state of preemption in the processor and/or the state of semaphore flags. In the case of preemption, a first, lower priority task is halted in favor of a higher priority task (e.g., needs to be activated). A semaphore flag is a flag used for activities such as synchronizing tasks and/or for a boolean form of inter-process communication. Referring again toFIG. 3 , thedisplay 40 ofFIG. 3 , in addition to showing trace data such as addresses of executed instructions and disassembly information, also illustrates showing the state of preemption in the processor and the state of a semaphore flag. In particular,column 78 shows an alternative form of an indication of to which task each exemplary instruction belongs (by the solid dark line (e.g., line 80)).FIG. 3 also shows when preemption has taken place by having the column associated with the task changing from solid to crosshatch. For example,task 1 is the active task associated withinstructions # 1 through #16. Atinstruction # 17,task 1 is preempted bytask 2. The activation oftask 2 is illustrated by thesolid line 82, and the preemption oftask 1 is shown bycrosshatch 84. Thus,FIG. 3 illustrates the preemptive state oftask 1.Column 78 ofFIG. 3 alternatively illustrates the situation of a task failing to complete during its allotted time slice. That is, iftask 1 was assigned a particular time slice in which to complete a task, and yettask 1 was still executing at the end of the time slice and was stopped in favor oftask 2 for the next time slice, thecrosshatch shading 84 may show that the task failed to finish its desired work, and thus the programmer may need to further debug and/or optimizetask 1 to ensure the task completes in its time slice. - In order to implement the embodiments discussed with respect to task preemption and/or a task failing to complete during its allotted time, and with respect to
FIG. 3 , the operating system of thetarget system 10, and in particular the task manager or task switcher of the operating system, is configured to write an indication of the operating context to the trace data stream each time the a new task is instantiated on theprocessor 22. Further, if the task switcher preempts another task for a higher priority task, or if the task switcher preempts a task that should have completed during the time slice, the task switcher is configured to write an indication of such to the trace data stream. As discussed above, writing the indication could be writing the indications directly to thetarget state register target state register trace program 13 builds and displays thecolumn 78 in the display 40 (FIG. 3 ). - Still referring to
FIG. 3 ,column 86 illustrates indicating the state of a semaphore flag. In particular, the semaphore flag illustrated bycolumn 86 is pending untilinstruction # 17. Atinstruction # 17 the state of the semaphore flag changes, as illustrated by thesolid line 88 changing to an outlinedline 90. In the particular illustration of theFIG. 3 , the change of state of the semaphore flag may trigger the preemption oftask 1 bytask 2, but this is merely illustrative. Any action waiting or synchronizing with respect to the semaphore flag may trigger based on the change of state. - In order to implement the embodiments discussed with respect to displaying the state of a semaphore flag, and with respect to
FIG. 3 , the operating system of thetarget system 10, and in particular the application programming interfaces that enable assertion and de-assertion of the semaphore flags, are configured to write an indication of the state of the semaphore flag(s) to the trace data stream each time there is a change of state. As discussed above, writing the state of the semaphore flag(s) could be writing the states directly to thetarget state register target state register trace program 13 builds and displays thecolumn 86 in the display 40 (FIG. 3 ). -
FIG. 8 illustrates a method (e.g., software) in accordance with embodiments of the invention. In particular, the process starts (block 800) and proceeds to writing an indication of an operating context of a task (block 804) executing on a processor. The operating context may take many forms. For example, the operating context could be: an indication of an active task; the state of power utilization; the state of power consumption; an indication of particular entries in a log buffer (e.g., inter-process communication log buffer); or the state of a semaphore flag, to name a few. Thereafter, a trace data display is generated and displayed on a display device (block 812). From there, a display is generated to show the state of an operating context proximate in time to a particular instruction (block 816), and the process ends (block 820). Displaying the operating context may take many forms. For example, a tree structure may be displayed which shows the various tasks executed proximate in time to a selected instruction, and may also indicate to which task (and function within the task) the selected instruction belongs (FIG. 4 ). As another example, processor utilization may be displayed, with the processor utilization proximate in time to execution of a selected instruction highlighted (FIG. 5 ). As yet another example, a processor power consumption as a function of time may be displayed, with the processor power consumption proximate in time to execution of a selected instruction highlighted (FIG. 6 ). As yet another example, an indication of particular entries in a log buffer made proximate in time to execution of a selected instruction may be displayed (FIG. 7 ). Yet still another example is displaying an indication of preemption of a particular task and/or an indication of when a task failed to complete during its allotted time slice (FIG. 3 ). Another example is an indication of a state of a semaphore flag proximate in time to execution of a selected instruction (againFIG. 3 ). - From the description provided herein, those skilled in the art are readily able to combine software created as described from the methods with appropriate general purpose or special purpose computer hardware to create a computer system and/or computer subcomponents embodying the invention, to create a computer system and/or computer subcomponents for carrying out the method of the invention, and/or to create a computer-readable medium for storing a software program to implement the method aspects of the invention. The computer readable medium could be, for example, a volatile memory, a non-volatile memory, a compact disc read only memory (CDROM), an electrically erasable programmable read only memory (EEPROM), a hard drive, and the like.
- The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Claims (17)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/383,414 US7987393B2 (en) | 2005-05-16 | 2006-05-15 | Determining operating context of an executed instruction |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US68156105P | 2005-05-16 | 2005-05-16 | |
US68142705P | 2005-05-16 | 2005-05-16 | |
US11/383,414 US7987393B2 (en) | 2005-05-16 | 2006-05-15 | Determining operating context of an executed instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
US20060259823A1 true US20060259823A1 (en) | 2006-11-16 |
US7987393B2 US7987393B2 (en) | 2011-07-26 |
Family
ID=37420613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/383,414 Active 2028-02-04 US7987393B2 (en) | 2005-05-16 | 2006-05-15 | Determining operating context of an executed instruction |
Country Status (1)
Country | Link |
---|---|
US (1) | US7987393B2 (en) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060247806A1 (en) * | 2004-03-31 | 2006-11-02 | Omron Corporation | Development aid device |
US20080098242A1 (en) * | 2006-10-19 | 2008-04-24 | Peterson Milford J | System and Method of Power Management for Computer Processor Systems |
US20090010175A1 (en) * | 2007-07-02 | 2009-01-08 | Verizon Business Network Services Inc. | Method and system for providing automatic disabling of network debugging |
WO2010020952A1 (en) * | 2008-08-21 | 2010-02-25 | Nokia Corporation | Method and apparatus for power diagnostics |
US20100235812A1 (en) * | 2009-03-13 | 2010-09-16 | Omron Corporation | Input supporting method of variable name in programming of plc |
US20120143795A1 (en) * | 2010-12-03 | 2012-06-07 | Microsoft Corporation | Cross-trace scalable issue detection and clustering |
US20120166887A1 (en) * | 2010-12-23 | 2012-06-28 | Arm Limited | Monitoring multiple data transfers |
CN103365749A (en) * | 2013-06-06 | 2013-10-23 | 北京时代民芯科技有限公司 | Multi-core processor debugging system |
CN105229616A (en) * | 2013-06-27 | 2016-01-06 | 英特尔公司 | The pattern of tracking processing apparatus in instruction tracing system |
US20190087298A1 (en) * | 2017-09-21 | 2019-03-21 | Arm Limited | Trace data |
US20190179694A1 (en) * | 2017-12-07 | 2019-06-13 | SK Hynix Inc. | Data storage device, operating method thereof and storage system including the same |
US10698805B1 (en) * | 2017-01-25 | 2020-06-30 | Cadence Design Systems, Inc. | Method and system for profiling performance of a system on chip |
US20220012162A1 (en) * | 2016-08-31 | 2022-01-13 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
US11915028B2 (en) | 2017-04-01 | 2024-02-27 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274923B2 (en) * | 2008-03-25 | 2016-03-01 | Wind River Systems, Inc. | System and method for stack crawl testing and caching |
US8112677B2 (en) * | 2010-02-26 | 2012-02-07 | UltraSoC Technologies Limited | Method of debugging multiple processes |
GB2481384B (en) * | 2010-06-21 | 2018-10-10 | Advanced Risc Mach Ltd | Key allocation when tracing data processing systems |
WO2012098434A1 (en) * | 2011-01-21 | 2012-07-26 | Freescale Semiconductor, Inc. | Method, system, and computer program product |
US10474610B1 (en) * | 2017-08-14 | 2019-11-12 | Xilinx, Inc. | Hardware trace and introspection for productivity platform using a system-on-chip |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5737520A (en) * | 1996-09-03 | 1998-04-07 | Hewlett-Packard Co. | Method and apparatus for correlating logic analyzer state capture data with associated application data structures |
US5740355A (en) * | 1995-10-27 | 1998-04-14 | Fujitsu Ltd. | Transaction tracing apparatus |
US5748881A (en) * | 1992-10-09 | 1998-05-05 | Sun Microsystems, Inc. | Method and apparatus for a real-time data collection and display system |
US6057839A (en) * | 1996-11-26 | 2000-05-02 | International Business Machines Corporation | Visualization tool for graphically displaying trace data produced by a parallel processing computer |
US6282701B1 (en) * | 1997-07-31 | 2001-08-28 | Mutek Solutions, Ltd. | System and method for monitoring and analyzing the execution of computer programs |
US20020087949A1 (en) * | 2000-03-03 | 2002-07-04 | Valery Golender | System and method for software diagnostics using a combination of visual and dynamic tracing |
US20020111785A1 (en) * | 2000-03-02 | 2002-08-15 | Texas Instruments Incorporated | Synchronizing on-chip data processor trace and timing information for export |
US6507923B1 (en) * | 1999-04-19 | 2003-01-14 | I-Tech Corporation | Integrated multi-channel fiber channel analyzer |
US6553502B1 (en) * | 1999-01-11 | 2003-04-22 | Texas Instruments Incorporated | Graphics user interface for power optimization diagnostics |
US6629266B1 (en) * | 1999-11-17 | 2003-09-30 | International Business Machines Corporation | Method and system for transparent symptom-based selective software rejuvenation |
US20030191986A1 (en) * | 2002-04-04 | 2003-10-09 | Cyran Robert J. | Method and apparatus for non-obtrusive power profiling |
US20050039078A1 (en) * | 2003-08-07 | 2005-02-17 | Arm Limited | Trace data source identification within a trace data stream |
US7039644B2 (en) * | 2002-09-17 | 2006-05-02 | International Business Machines Corporation | Problem determination method, system and program product |
US7395131B2 (en) * | 2002-08-20 | 2008-07-01 | Tokyo Electron Limited | Method for processing data based on the data context |
US7606814B2 (en) * | 2004-03-11 | 2009-10-20 | Microsoft Corporation | Tracing a web request through a web server |
-
2006
- 2006-05-15 US US11/383,414 patent/US7987393B2/en active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748881A (en) * | 1992-10-09 | 1998-05-05 | Sun Microsystems, Inc. | Method and apparatus for a real-time data collection and display system |
US5740355A (en) * | 1995-10-27 | 1998-04-14 | Fujitsu Ltd. | Transaction tracing apparatus |
US5737520A (en) * | 1996-09-03 | 1998-04-07 | Hewlett-Packard Co. | Method and apparatus for correlating logic analyzer state capture data with associated application data structures |
US6057839A (en) * | 1996-11-26 | 2000-05-02 | International Business Machines Corporation | Visualization tool for graphically displaying trace data produced by a parallel processing computer |
US6282701B1 (en) * | 1997-07-31 | 2001-08-28 | Mutek Solutions, Ltd. | System and method for monitoring and analyzing the execution of computer programs |
US6553502B1 (en) * | 1999-01-11 | 2003-04-22 | Texas Instruments Incorporated | Graphics user interface for power optimization diagnostics |
US6507923B1 (en) * | 1999-04-19 | 2003-01-14 | I-Tech Corporation | Integrated multi-channel fiber channel analyzer |
US6629266B1 (en) * | 1999-11-17 | 2003-09-30 | International Business Machines Corporation | Method and system for transparent symptom-based selective software rejuvenation |
US20020111785A1 (en) * | 2000-03-02 | 2002-08-15 | Texas Instruments Incorporated | Synchronizing on-chip data processor trace and timing information for export |
US20020087949A1 (en) * | 2000-03-03 | 2002-07-04 | Valery Golender | System and method for software diagnostics using a combination of visual and dynamic tracing |
US20030191986A1 (en) * | 2002-04-04 | 2003-10-09 | Cyran Robert J. | Method and apparatus for non-obtrusive power profiling |
US7395131B2 (en) * | 2002-08-20 | 2008-07-01 | Tokyo Electron Limited | Method for processing data based on the data context |
US7039644B2 (en) * | 2002-09-17 | 2006-05-02 | International Business Machines Corporation | Problem determination method, system and program product |
US20050039078A1 (en) * | 2003-08-07 | 2005-02-17 | Arm Limited | Trace data source identification within a trace data stream |
US7606814B2 (en) * | 2004-03-11 | 2009-10-20 | Microsoft Corporation | Tracing a web request through a web server |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7272825B2 (en) * | 2004-03-31 | 2007-09-18 | Omron Corporation | Development aid device |
US20060247806A1 (en) * | 2004-03-31 | 2006-11-02 | Omron Corporation | Development aid device |
US20080098242A1 (en) * | 2006-10-19 | 2008-04-24 | Peterson Milford J | System and Method of Power Management for Computer Processor Systems |
US7673160B2 (en) * | 2006-10-19 | 2010-03-02 | International Business Machines Corporation | System and method of power management for computer processor systems |
US20090010175A1 (en) * | 2007-07-02 | 2009-01-08 | Verizon Business Network Services Inc. | Method and system for providing automatic disabling of network debugging |
US7836354B2 (en) * | 2007-07-02 | 2010-11-16 | Verizon Patent And Licensing Inc. | Method and system for providing automatic disabling of network debugging |
US20110145648A1 (en) * | 2008-08-21 | 2011-06-16 | Nokia Corporation | Method and Apparatus for Power Diagnostics |
WO2010020952A1 (en) * | 2008-08-21 | 2010-02-25 | Nokia Corporation | Method and apparatus for power diagnostics |
US20100235812A1 (en) * | 2009-03-13 | 2010-09-16 | Omron Corporation | Input supporting method of variable name in programming of plc |
US8612935B2 (en) * | 2009-03-13 | 2013-12-17 | Omron Corporation | Input supporting method of variable name in programming of PLC |
US20120143795A1 (en) * | 2010-12-03 | 2012-06-07 | Microsoft Corporation | Cross-trace scalable issue detection and clustering |
US8538897B2 (en) * | 2010-12-03 | 2013-09-17 | Microsoft Corporation | Cross-trace scalable issue detection and clustering |
US20120166887A1 (en) * | 2010-12-23 | 2012-06-28 | Arm Limited | Monitoring multiple data transfers |
US8966323B2 (en) * | 2010-12-23 | 2015-02-24 | Arm Limited | Monitoring multiple data transfers |
CN103365749A (en) * | 2013-06-06 | 2013-10-23 | 北京时代民芯科技有限公司 | Multi-core processor debugging system |
CN105229616A (en) * | 2013-06-27 | 2016-01-06 | 英特尔公司 | The pattern of tracking processing apparatus in instruction tracing system |
US10331452B2 (en) | 2013-06-27 | 2019-06-25 | Intel Corporation | Tracking mode of a processing device in instruction tracing systems |
US20220012162A1 (en) * | 2016-08-31 | 2022-01-13 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10698805B1 (en) * | 2017-01-25 | 2020-06-30 | Cadence Design Systems, Inc. | Method and system for profiling performance of a system on chip |
US11915028B2 (en) | 2017-04-01 | 2024-02-27 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US20190087298A1 (en) * | 2017-09-21 | 2019-03-21 | Arm Limited | Trace data |
US11194693B2 (en) * | 2017-09-21 | 2021-12-07 | Arm Limited | Trace data |
US20190179694A1 (en) * | 2017-12-07 | 2019-06-13 | SK Hynix Inc. | Data storage device, operating method thereof and storage system including the same |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
Also Published As
Publication number | Publication date |
---|---|
US7987393B2 (en) | 2011-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7987393B2 (en) | Determining operating context of an executed instruction | |
US8527958B2 (en) | Profiling operating context and tracing program on a target processor | |
US8881114B2 (en) | Stored program writing stall information when a processor stalls waiting for another processor | |
US7590892B2 (en) | Method and system of profiling real-time streaming channels | |
US7886198B2 (en) | Method and system of identifying overlays used by a program | |
US7739668B2 (en) | Method and system of profiling applications that use virtual memory | |
US7950001B2 (en) | Method and apparatus for instrumentation in a multiprocessing environment | |
US9195462B2 (en) | Techniques for tracing processes in a multi-threaded processor | |
US8001427B2 (en) | Method and system of indexing into trace data based on entries in a log buffer | |
US6826747B1 (en) | System and method for tracing program instructions before and after a trace triggering event within a processor | |
US9129050B2 (en) | Debug in a multicore architecture | |
US5872909A (en) | Logic analyzer for software | |
EP3093768B1 (en) | Debugging systems | |
US20060259822A1 (en) | Profiling system | |
US8943248B2 (en) | Method and system for handling discarded and merged events when monitoring a system bus | |
US20120226839A1 (en) | Method and System for Monitoring and Debugging Access to a Bus Slave Using One or More Throughput Counters | |
US8706937B2 (en) | Method and system of debugging multicore bus transaction problems | |
EP1805621A2 (en) | Method and system for debugging a multi-threaded program executing in a multicore architecture | |
EP3340059A1 (en) | Debugging method | |
US7607047B2 (en) | Method and system of identifying overlays | |
US20130097588A1 (en) | Holding threads in a software debugger | |
US6513134B1 (en) | System and method for tracing program execution within a superscalar processor | |
US7870430B2 (en) | Method and apparatus for sharing debug resources | |
US7870434B2 (en) | Method and apparatus for masking debug resources | |
WO2020073200A1 (en) | Program debugging method and system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: TEXAS INSTRUMENTS, INC., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SOHM, OLIVER P.;CRUICKSHANK, BRIAN;REEL/FRAME:017826/0321 Effective date: 20060512 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |