This Application claims priority to the French Patent Application, Number 0209343, filed on Jul. 23, 2002, in the name of Sun Microsystems, Inc., which application is hereby incorporated by reference.
Embodiments of the present invention pertain to the field of computer technology. More particularly, embodiments of the present invention pertain to methods and systems of debugging computer software.
Robust operating systems require debugging, for example, to detect execution problems of the operating systems or to improve configuration of the operating systems. Moreover, testing of applications is also required. In general, software applications and software tools require debugging methods.
Some testing methods exist which do not keep data of non-trivial problems occurring during and/or after execution, for example debugging methods which display data over a console and debugging methods which propose breakpoints. These current methods do not enable a user to analyze the data associated with non-trivial problems.
To keep data associated with non-trivial problems, a debugging method may require a substantial amount of memory. Moreover, testing real-time and asynchronous software is particularly complex because the debugging execution is generally not deterministic (e.g., time dependant). These aspects modify the behavior of the debugged operating system, applications or software tools. Thus, current debugging execution is very intrusive.
An external hardware technology, such as In Circuit Emulator (ICE) emulator technology, is known to be adapted to retrieve data on a bus, for example between a CPU and a memory, such data corresponding to the execution of operations. This hardware technology is thus non-intrusive. However, the emulator may not retrieve such data in the order of the execution of the operations. Moreover, some data corresponding to the execution of operations is not communicated through the bus but stays in the computer processing unit (CPU), for example in a register of the CPU. Thus, current hardware technology is problematic, as it does not enable a user to access to all data corresponding to the execution of operations and to analyze the retrieved data. Detection of debugging problems is thus not possible for robust operating systems.
Embodiments of the present invention provide a debugging system intended to receive data of a debug operation. In one embodiment, the debugging system comprises a reserved memory comprising a plurality of portions of reserved memory, a mass memory, and a log management component for recording received data of a debug operation in at least one portion of the plurality of portions of the reserved memory. In one embodiment, the log management component is also configured for copying the data from at least a partially filled portion of the plurality of portions of the reserved memory to the mass memory in response to a drain condition, such that the data is copied to the mass memory in a non-intrusive manner.
Other embodiments of the present invention provide a method of managing data of a debug operation. A memory comprising a plurality of memory portions is reserved. Data of a debug operation is received. The data is recorded in at least one portion of the plurality of memory portions. In one embodiment, if the plurality of memory portions comprise data, a particular portion of plurality of memory portions is designated for recording subsequent data. In one embodiment, responsive to drain conditions, the data is copied from at least a partially filled portion of the plurality of memory portions to a mass memory.
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
As they may be cited in this specification, Sun, Sun Microsystems, Solaris, ChorusOS are trademarks of Sun Microsystems, Inc. SPARC is a trademark of SPARC International, Inc.
With reference to
Data may be exchanged between the components of computer system 1 through bus 10, schematically shown as a single bus for simplification of the drawing. However, it should be appreciated that bus 10 may comprise more than one bus. As is known, for example, bus systems may often include a processor bus (e.g. a PCI bus) connected via appropriate bridges to a device bus (e.g. an ISA bus or a SCSI bus).
For purposes of clarity in the following description, to reserve memory means to pre-allocate memory for a particular purpose.
The following description pertains to
At least one log is reserved before the start of a debugging method. This log comprises several chunks, each chunk being divided into several log items. In each log item, the log management component is adapted to store debugging data, where the debugging data is stored in the series of log values. With reference to
In the following description, data is considered to be debugging data, for example data concerning information which may be considered as useful to debug a program, such as a program of an operating system. A programmer may choose to retrieve debugging data by inserting instructions.
A log item may be in different states:
A chunk may also be in different states:
A log may also be “completely filled with data” or “partially filled with data”.
With reference to
The log is linked to log management component 600 adapted to manage a record method in the log. Two methods of data management are described herein, wherein a variable called a flag designates the chosen method (e.g. chosen by a user). The first method is designated as a “record only method” and the second method is designated as a “record and drain method”. In the record and drain method, log management component 600 is adapted to manage a data transfer method from the log to the non-volatile storage unit 14 (e.g. a hard disk).
With reference to
In the record only method, the log management component stores data in the successive log items of the chunks C1 to CN. Once the log is completely filled with data, the record only method enables the reuse of a log item of a chunk in order to record next arriving data. The next log item to be reused, and thus erased, is the log item having the oldest recorded data. In one embodiment, in which data is recorded in consecutive log items, the oldest recorded data is in L1-C1 when the log is completely filled and is a circular buffer. Then, the oldest recorded data is in the next consecutive log item as the log operates as a circular buffer.
With reference to
In the record and drain method, the record method is also referred to as the log producer method and the drain (e.g., transfer) method is also referred to as the log consumer method. During execution of the record method, the following drain conditions are checked as true for launching the drain method. The drain conditions comprise a filling threshold. Thus, the drain conditions may comprise reaching a determined number of filled log items N1i, or reaching a determined number of completely filled chunks Nc. For example, in one embodiment, the drain conditions are true if one chunk is filled with data, meaning if M successive log items are filled with data Nc=1, N1i=M. If the drain conditions are false, the record and drain method stops.
According to the application execution profile, Nc, N1i, N and M integers are chosen at the initialization so as to enable the speed of the drain method to be less than the speed of the record method. These chosen integers also enable the speed of the drain method to be high enough so as to enable the record method to store data on available log items. Thus, no data is lost. The integer p may be set by default (e.g. p may be smaller than 10). The integer p may be also dynamically chosen to enable a record of the more important data in a log item in the least intrusive way.
The log system is a mechanism adapted to record data in log items in a non-intrusive and deterministic way. As seen, the log with its chunks having log items used to store data is reserved, so that real-time constraints are satisfied. As described, a log is a fixed size record containing unsigned integers. This minimizes the CPU time and the amount of memory needed to store a data in a log item. The flexible consumer-producer mechanism provides minimized disruption when data is copied from chunks. The present invention has a deterministic behavior allowing it to be invoked at interrupt level.
Although specific steps are disclosed in methods 100, 200 and 300, such steps are exemplary. That is, embodiments of the present invention are well suited to performing various other steps or variations of the steps recited in those flowcharts. It is appreciated that the steps in the flowcharts may be performed in an order different than presented, and that not all of the steps in the flowcharts may be performed. All of, or a portion of, the methods described by methods 100, 200 and 300 can be implemented using computer-readable and computer-executable instructions which reside, for example, in computer-usable media of a computer system or like device.
With reference to
At step 135, it is determined whether there are no more log items available to store data in the log. If there are no more log items available to store data in the log, as shown at step 150, the pointer designates the log item having the oldest recorded data. As the log is circular, the first log item of the log has the oldest recorded data and the pointer designates the first log item to store data. Record only method 100 then proceeds to step 180.
Alternately, if at least one log item available to store data is left in the log, as shown at step 160, the pointer designates the next log item available to store data. Record only method 100 then proceeds to step 180. At step 180, record only method 100 ends until another data to record is received and the method restarts at step 110.
With reference to
At step 210, a pointer designates a new log item that is available to store the received data. At step 230, data is stored in the log item such that the log item becomes a filled log item.
At step 235, it is determined whether there are no more log items available to store data in a particular chunk. If at least one log item remains available to store data in the chunk, as shown at step 260, the pointer designates the next log item available to store data in the chunk.
Alternatively, if no more log items available to store data are left in the log, method 200 proceeds to step 240. At step 240, the completely filled chunk is drained. In one embodiment, drain method 300 of
Concurrently to step 240, at step 250 it is determined whether the entire log is completely filled with data. If the log is entirely filled with data, the record and drain method ends at step 290. Alternatively, if at least one chunk is left, the new chunk is allocated at step 252. At step 260, the pointer designates the next log item available to store data in the new chunk.
After step 260, record method 200 of the record and drain method ends at step 380. If other data are to be stored in the log, record method 200 restarts at step 205.
A flag is a variable that designates which method of the record only method or the record and drain method is to be used. Thus, the record and drain method may be designated with a flag having a “drain” value.
If the record and drain method is designated, the step 240 of
With reference to
Embodiments of the present method are not intrusive, and as such do not modify the behavior of the system or application being debugged. Accordingly, the corresponding system enables a copy (or transfer) of data from a log item to the mass memory during a debugging method in a non-intrusive manner
Embodiments of the present invention are thus described. However, the invention is not limited to the hereinabove described embodiments. Thus, other embodiments of record methods or release methods may be developed according to the invention. Moreover, embodiments in accordance with the present invention are not limited to the application of managing debugging data using a log management component. Any other type of data may be recorded and managed according to the method of the invention. Thus, embodiments of the present invention may be useful in any computer system requiring a non-intrusive method and system to store a whole history of data (e.g. in avionic software).
While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the following claims.
| Number | Date | Country | Kind |
|---|---|---|---|
| 0209343 | Jul 2002 | FR | national |