|Publication number||US7069470 B2|
|Application number||US 10/256,152|
|Publication date||Jun 27, 2006|
|Filing date||Sep 26, 2002|
|Priority date||Apr 24, 2002|
|Also published as||CA2383832A1, US20030204778|
|Publication number||10256152, 256152, US 7069470 B2, US 7069470B2, US-B2-7069470, US7069470 B2, US7069470B2|
|Inventors||Mark F. Wilding, Alexandra G. Bialek, Yung Chung|
|Original Assignee||International Business Machines Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (23), Non-Patent Citations (3), Referenced by (14), Classifications (14), Legal Events (4)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The present invention relates to a system and method for debugging software on a computer system and, in particular, to a system and method for intelligent trap analysis for software products.
There are certain faults that will cause otherwise healthy software products to fail. These typically include hardware faults or massive software faults, such as attempting to access memory that is invalid or in a manner that is invalid. Examples of fundamental software faults include attempts to access memory using an unaligned memory address or a null pointer. A fundamental fault is a fault so serious in scale that the software product cannot continue to operate and typically needs to halt immediately. For example, the Windows™ operating system may indicate a General Protection Fault (GPF) in the case where a software product attempts to access a memory address that does not exist. In the Unix™ operating system, fundamental faults may generate a “signal”, which is a notification to the active process from the operating system that causes the active process to stop what it is doing to deal with the signal. For example, a SIGSEGV signal is triggered when a process attempts to access an illegal memory address. These types of serious faults may be referred to as traps.
When a software product encounters a trap it receives a notification from the operating system and the execution of the process is halted. The operating system may then call a registered function or module for handling the trap. In a typical system, a function or module may be registered with the operating system upon start up as the function to call when a trap is encountered. Such a function or module may be referred to as a “trap handler”. By way of example, in the Unix™ operating system, there is a “signal handler” that the operating system will call when a signal is generated. There may be default signal handlers for dealing with particular signals. Other platforms allow a separate trap handler process or program to be notified when a trap occurs, for example, the Windows™ operating system. A trap handler function or module may be custom developed by a software product developer and registered as the handler for a specific signal. For example, with the Unix™ operating system, if the default handler for addressing the SIGSEGV signal is considered inappropriate or inadequate, a developer may design a customized signal handler, using the sigaction () system call. The sigaction () system call accepts a signal number, the new behaviour for the signal (potentially including the signal handler), and the old behaviour for the signal.
Typically, a trap indicates a significant problem that prevents the healthy operation of the software product, so the trap handler will initiate the termination of the process. If the process is unable to recover from the trap, it will typically exit from within the trap handler.
In known systems, the trap handler may perform some basic operations to preserve information for the ex post facto or post mortem review by a software product developer in attempting to identify the source of the trap. The trap handler may be provided with the register context, a pointer to the register context or the ability to get the register context by the operating system. The register context is a snapshot of the operating system registers used by the process or thread. The register context may include the program counter that indicates the address of the trapped instruction, as well as other information. To preserve this information so as to assist the developer in analyzing the trap, the trap handler may open a file, write the register context to the file and then close the file. Other system information that may be written to a file by a trap handler includes the function call stack or stack trace, or a portion of memory corresponding to the list of instructions containing the trapped instruction. The information stored in the file can then be used by the developer to identify the trapped instruction and what the contents of the registers were at the time the trap was encountered.
A problem encountered with known trap handlers is that the preserved information in the file only provides a small snapshot of some basic system information. For example, if the file contains the instruction list and the register context, then during later review the software developer may determine that the trap was encountered upon a load instruction. The developer may deduce that the trap likely relates to an invalid memory location referenced in the load instruction. As the invalid memory location is likely to be an address contained in a register, the developer may be able to trace the source of the invalid address in the register to a previous instruction, which loaded the register with the contents of a particular memory location. In these circumstances, the developer would be unable to trace the problem any further without access to the contents of the memory.
To address the problem of a lack of information, some trap handlers may attempt to preserve a much larger quantity of information, including the contents of any allocated memory locations. In more complex systems, this can result in the dumping of Gigabytes, or in the future Terabytes, of information, which may be expensive, time-consuming and problematic for sending from a software product user to the software developer.
The present invention advantageously provides a system and method for trap handling that assists in identifying and preserving relevant system data so as to enable analysis of the cause of the trap. The present invention further provides a system and method for trap handling that aids in identifying the source of the trap.
In one aspect, the present invention provides a method of intelligent trap analysis for preserving relevant data regarding a trap on a computer system, wherein the computer system has memory and the memory includes a trapped instruction. The method includes the steps of determining a likely cause of the trapped instruction, selecting a relevant memory location, the relevant memory location being related to the likely cause, and preserving the contents of the relevant memory location.
In another aspect, the present invention provides an intelligent trap handler for operation upon a computer system, wherein the computer system has memory and the memory includes a trapped instruction. The trap handler includes a determining means for determining a likely cause of the trapped instruction, a selection means for selecting a relevant memory location, wherein the relevant memory location is related to the likely cause of the trapped instruction, and a preserving means for preserving the contents of the relevant memory location.
In yet another aspect, the present invention provides a system for intelligent trap analysis. The system includes an operating system, a register context, a memory, a list of instructions in the memory, the list of instructions including a trapped instruction, the trapped instruction causing the operating system to generate a trap signal, and an intelligent trap handler.
In a further aspect, the present invention provides a computer program product including a computer readable medium carrying program means for preserving relevant data regarding a trap on a computer system. The program means includes code means for implementing a method of intelligent trap analysis.
The term trap handler is intended to encompass any module, function or process that is called or notified when a process traps.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.
Reference will now be made, by way of example, to the accompanying drawings which show a preferred embodiment of the present invention, and in which:
Reference is first made to
The system 10 also includes an operating system (not shown), such as the Microsoft Windows™ operating system or the Unix™ operating system. The system 10 shown in
The memory 14 is addressed read/write memory and includes a plurality of instructions 30. The plurality of instructions 30 contains the sequential instructions 32 (shown individually as 32 a, 32 b, . . . , 32 n) for the process being executed by the system 10. In machine language, the instructions 32 include an operation code (opcode) and one or more operands. The opcode defines the operation being performed, such as adding two values, clearing a location (register or memory address), swapping the contents of two locations, etc. The operands may be source operands or destination operands (or both). The source operands identify the data or the location of the data upon which the operation is to be performed. The destination operands identify where the results of the operation are to be stored. The instructions 32 may further include a label or a tag and a comment.
Included in the instructions 32 is a trapped instruction 32 t. The trapped instruction 32 t is an instruction which has caused execution of the process to be halted because of a fault or trap. When the system 10 encounters a trap, the operating system halts the execution of the process and generates a trap signal. The type of trap signal generated may indicate the type of problem encountered with the trapped instruction 32 t, such as an attempt to access an invalid memory address.
Also included in the memory is a trap handler 34. The trap handler 34 is a registered function called by the operating system when a trap is encountered. When the trap handler 34 is called by the operating system, the operating system may provide the trap handler 34 with the register context or a pointer to the register context. The register context includes the contents of the registers 20 used in the course of executing the process that trapped. The register context may also include the program counter 26.
The program counter 26 contains the address of the trapped instruction 32 t or, depending on the design of the microprocessor 12, the address of the instruction following the trapped instruction 32 t (since the program counter 26 may have been incremented after the trapped instruction 32 t was read but before the microprocessor 12 attempted to execute it and encountered the trap).
In one embodiment, the trap handler 34 causes the register context to be preserved. The trap handler 34 may copy the register context to a file in the memory 14 or on the external recording media 16. Alternatively, if the system 10 is connected to a network or other communications link, the trap handler module 34 may send the register context to a remote location for recordal in a remote memory or recording media. Recordal of the register context may be referred to as “dumping” the context to a file. Hereinafter, this file may be referred to as a dump file.
After dumping the register context, the trap handler 34 attempts to identify the preliminary likely cause of the trap. In identifying the likely cause of the trap, the trap handler 34 may make reference to the trapped instruction 32 t, the type of trap signal generated by the operating system, the register context, and the stack trace. The trap handler 34 may include a rule set for determining the likely cause of the trap. The rule set may be incorporated as part of the trap handler 34 function or may be provided as a separate file. The rule set may include a set of conditional statements for assigning a likely cause based upon any of the information to which it makes reference. Alternative means of determining a reason that the trapped instruction 32 t caused a trap may include a neural network or other decision-making means. Preliminary likely causes of a trap may include an unaligned memory address or a null pointer referenced by the trapped instruction 32 t.
Having identified the preliminary cause of the trap, the trap handler 34 may then attempt to preserve the contents of any memory locations that could be relevant to the source of the trap. For example, if the trap was likely caused by a null pointer in one of the operands in the trapped instruction 32 t, then the trap handler 34 may seek to find how that operand (say, a register 20) came to contain the invalid address by looking back through the preceding instructions 32. The trap handler 34 may identify any memory locations that are referred to by the trapped instruction 32 t or any preceding instructions 32 that may relate to the source of the trap (in the above example, any instructions 32 which affect the register 20 that contained the invalid address). Any relevant memory locations identified by the trap handler 34 and the contents of those relevant memory locations are preserved, which preferably includes copying them to the dump file.
In one embodiment, the trap handler 34 creates a buffer in the memory 14 and copies the register context into the buffer. This copy of the register context may be referred to as the “rewind context”. The trap handler 34 may then attempt to “undo” the effect of instructions 32 as the handler 34 steps back through the list of instructions 32 in an attempt to identify the source of the cause of the trapped instruction 32 t. The trap handler 34 may reverse the effect of an instruction 32 upon the rewind context in an attempt to return the rewind context to the state it would have been in prior to the undone instruction 32. The trap handler 34 may then compare the values stored in the registers 20 of the rewind context with the expected values. The expected values may be derived from the real values in memory 14 or in the system registers 20. This information may assist in identifying the source of the trapped instruction 32 t.
Reference is now made to
The method 100 begins in step 102 when the operating system calls the trap handler 34 function. In the arguments for the trap handler call, the operating system may pass the register context, a pointer to the register context or the ability to get the register context to the trap handler 34. From the register context, the trap handler 34 will know the address of the trapped instruction 32 t and other system information. Then, in step 104, the trap handler 34 opens a file and copies system information to the file in order to preserve it for later analysis. This file may be referred to as the dump file. The system information dumped by the trap handler 34 may include the register context, a list of instructions 32 from memory 14 including the trapped instruction 32 t, the stack trace, trap signal information and other system information.
In one embodiment, the trap handler 34 also copies the register context to a buffer in the memory 14 (
In step 106, the trap handler 34 identifies the trapped instruction 32 t (
To interpret the trapped instruction 32 t, the trap handler 34 interprets the opcode of the trapped instruction 32 t and identifies the action that the opcode was intended to implement; in other words, the purpose of the trapped instruction 32 t. The opcode may be specific to the hardware architecture of the microprocessor 12 (
In one embodiment, in addition to interpreting the trapped instruction 32 t, the trap handler 34 translates the trapped instruction 32 t from machine language into assembly language and writes the assembly language trapped instruction 32 t to the dump file. The trap handler 34 may include a translator for interpreting the machine language instructions 32. The trap handler 34 may also translate a set of instructions 32 preceding or following the trapped instruction 32 t to their assembly language equivalents and write them to the dump file. In a further embodiment, the trap handler 34 prepares a formatted set of assembly language instructions 32 including the trapped instruction 32 t for printing to the dump file. A formatted set of instructions 32, including the trapped instruction 32 t and a number of preceding instructions, written in assembly language format, will assist a software developer in performing analysis of the trap based upon the dump file.
In step 110, the trap handler 34 identifies a preliminary likely cause of the trapped instruction 32 t. To determine the likely cause of the trapped instruction 32 t, the trap handler 34 may consider the opcode of the trapped instruction 32 t, the operands of the trapped instruction 32 t, the contents of any relevant registers 20 (
Those of ordinary skill in the art will understand that further rules or alternative rules may be used to determine the likely cause of the trapped instruction 32 t. The determination of likely cause may be implemented in the trap handler 34 as a set of conditional statements, or using other means for analyzing the factors and assigning a likely cause.
Once the trap handler 34 identifies the likely cause of the trapped instruction 32 t, it may write the likely cause to the dump file. In one embodiment, the trap handler 34 writes a formatted description of the likely cause of the trapped instruction 32 t to the dump file, including an identification of the operand that contained the illegal memory address, if applicable.
The pinpointing of the likely cause of the trapped instruction 32 t and the preservation of that information in the dump file assists a developer in performing ex post facto or post mortem analysis of the trap event. To provide further assistance to the developer, the method 100 identifies relevant memory addresses used by the trapped instruction 32 t, or, in one embodiment, by instructions preceding the trapped instruction 32 t and preserves the contents of those relevant memory locations.
Referring still to
The interpretation of the previous instruction 32 in step 112 is akin to the interpretation of the trapped instruction 32 t in step 108. The trap handler 34 reads the opcode of the previous instruction 32 and identifies the corresponding action that the opcode were intended to implement.
In step 114, the trap handler 34 “undoes” or reverses the effect of the action performed by the previous instruction. For example, if the previous instruction added a constant value to a value stored in a register 20, with the result being stored in the same register 20, then in step 114 the trap handler 34 would subtract the constant value from the value stored in the register 20. As another example, if the previous instruction was a bitwise left shift of a register 20, then in step 114 the trap handler 34 would shift the register 20 to the right by an equivalent number of bits. Note that in this latter case, the trap handler 34 would need to shift in zeros or some other bit pattern as a default since some bit information would have been lost in the original left shift operation. In some cases, the trap handler 34 will not attempt to “undo” an instruction, such as in the case of a load instruction. If the previous instruction had loaded a register 20 with a value from a memory location, the trap handler 34 would be unable to “undo” the load, since it could not know what value had previously been in the register 20. Even if an instruction cannot be “undone”, the method 100 may continue. The trap handler 34 implements any changes to the registers 20 resulting from step 114 within the rewind context.
The trap handler 34 may include a set of functions for undoing instructions. These functions may include a plurality of instructions to undo the effect of each machine language instruction recognized by the microprocessor 12 (
Following step 114, in step 116 the trap handler 34 writes any address locations referenced by the previous instruction and their contents to the dump file. In order to provide a developer with sufficient information to analyze the source of the trap, the trap handler 34 preserves the contents of any relevant memory locations used in the instructions leading up to the trap event. In one embodiment, relevant memory locations include any memory locations referenced by an instruction read in step 112. This is to preserve any memory locations that were used by instructions previous to the trapped instruction 32 t.
In another embodiment, the relevant memory locations are limited to memory locations referenced by instructions directly related to the operand in the trapped instruction 32 t that may have been identified as the preliminary cause of the trap. For example, if the trapped instruction 32 t was caused by a reference to an illegal memory address, and the illegal memory address was contained in a register 20 to which the trapped instruction 32 t referred, then the trap handler 34 would consider any memory address locations to be relevant if they were involved in previous instructions that involved that register 20. For instance, a previous instruction may have loaded a value into the register 20 from a memory location. Such a memory location would be considered a relevant memory location. The trap handler 34 may include other criteria for determining the relevance of a memory location to the cause of the trapped instruction 32 t.
Reference is now made, by way of example, to the following sample instructions:
Instruction 3 attempts to load the contents of the memory location contained in register 2 into register 3. Instruction 3 may trap if register 2 contains an invalid memory address. In order to find further information about the trap, the trap handler 34 may step back to instruction 2, in which a constant value was added to register 2. Accordingly, the trap handler 34 may subtract the constant value from register 2, placing the result in register 2 (more particularly, to the buffer location in the rewind context corresponding to register 2). As instruction 2 does not reference any memory addresses, the trap handler 34 steps back to instruction 1. Instruction 1 loads register 2 with the contents of the address contained in register 1. The address contained in register 1 was the source of the invalid address that ended up in register 2. Therefore, the trap handler 34 may dump the address location in register 1 and its contents to the dump file. The trap handler 34 may then continue to step back through further instructions. In one embodiment, the trap handler 34 may, in the example, particularly seek instructions which loaded the address into register 1 and instructions which loaded the content into that address location.
Referring again to
After step 118, the method 100 will proceed to step 122 before looping back to step 112 to consider the instruction previous to the one just analyzed. As the trap handler 34 steps backwards through the instructions in the list of instructions 32 in memory 14 (
In step 122, the trap handler 34 may attempt to identify a more detailed cause of the trapped instruction 32 t. For example, if the trapped instruction 32 t referenced an invalid address, then the previous instructions may reveal that the address was obtained by a variable that is relative to a stack pointer or a stack frame pointer. Such a variable is an automatic variable. This information aids in debugging the trap, since this points to a possible corrupt or uninitialized automatic variable.
As a further example, in step 122 the trap handler module 34 may find that the problematic address or operand referenced by the trapped instruction 32 t received its value through an operation in the previous instruction. The previous instruction may reveal a problematic pointer, memory address or register 20 that is the source of the problematic operand of the trapped instruction 32 t. The trap handler 34 may then continue the method 100 in an attempt to pinpoint the source of the problematic operand of the previous instruction. In one embodiment, the trap handler 32 may search through preceding instructions for references to the problematic operand in order to identify its source.
Step 122 may be implemented in the trap handler module 34 as a rule set, in a manner similar to step 110.
After step 122, the trap handler 34 steps back one instruction in the list of instructions 32 in memory 14. In one embodiment, the trap handler 34 maintains an instruction pointer which is initially set to the address of the trapped instruction 32 t and which, at the end of step 122, is decremented to point at the preceding instruction. The pointer may be decremented by four or some other integer, depending upon the instruction length for a particular microprocessor 12 (
Reference will now be made, by way of example, to the following sample assembly language process designed for the SPARC™ microprocessor, in conjunction with the method 100 of
[%sp + 0×88], %g1
child + 0×0374:
[%fp − 0×c], %o3
child + 0×0378:
child + 0×037c:
child + 0×0380:
be, a, pt
%icc, splccipcconnmgr_child + 0×33c
child + 0×0384:
%15, [%fp − 0×c0]
child + 0×0388:
If the above-referenced process trapped at instruction 0x001a1958 with a SIGSEGV signal, then the trap handler 34 would, at step 108 of the method 100, recognize that the trapped instruction 32 t is a load command that attempted to load the contents of the memory location contained in register %o3 into register %o1. In step 110, the trap handler 34 would determine that the register %o3 likely contains an invalid address value. It may make this determination based upon the fact that the opcode of instruction 0x001a1958 is a load command, that the trap signal is a SIGSEGV signal, that the source register %o3 contains the value 0x18 (which information would be available in the rewind context), the list of valid memory regions, or all or any combination of the foregoing. Based upon the foregoing facts, the trap handler 34 may more precisely determine in step 110 that the likely cause of the trap is a null structure pointer. This analysis information may be preserved in the dump file.
At step 112, the trap handler 34 steps back to instruction 0x001a1954 which it would recognize as a load command. Instruction 0x001a1954 loaded register %o3 with the contents of the address pointed to by the frame pointer register %fp less 0xc. The register context may not contain the memory for the process' stack in which the frame pointer register would be stored. Accordingly, the trap may not be traced using only a dump of the register context. However, according to the present invention, relevant locations of the memory, such as the frame pointer register %fp, may be identified and preserved by the trap handler 34. The value in the frame pointer register %fp may, in the present example, be 0xFFBEB9F0. Accordingly, the memory address referenced in instruction 0x001a1954 (the frame pointer minus 0xc) may be 0xFFBEB9E4. At step 116, the trap handler 34 records the memory location 0xFFBEB9E4 and its contents in the dump file. In the example, the contents of the memory location may be 0x18, which was the value loaded into register %o3. Accordingly, the memory location 0xFFBEB9E4 was a source of the null structure pointer in the trapped instruction 32 t. The trap handler 34 may then step back further in the instruction list 32 to capture other relevant memory locations. In step 122, the trap handler 34 may further observe that the origin of the bad address in the trapped instruction 32 t is relative to the frame pointer %fp, which indicate a likely problem with an automatic variable. Accordingly, the trap handler 34 may direct the developer to consider the automatic variables for the function which contained the trapped instruction 32 t.
In one embodiment, the trap handler 34 records relevant data in a report format in the dump file. Alternatively, it may send a report to the display 18 (
Signal: SIGSEGV at sqlccipcconnmgr_child + 0×037c
Reason: Invalid pointer on stack
0×001a1954:sqlccipcconnmgr_child + 0×0378:
[%fp − 0×c], %o3
0×001a1958:sqlccipcconnmgr_child + 0×037c:
Register %o3 set at sqlccipcconnmgr_child + 0×0378 using memory
address [%fp − 0×c] or 0×FFBEB9E4
Value at 0×FFBEB9E4: 0×18
A structure pointer is NULL
Likely an automatic variable of the function “sqlccipcconnmgr_child”
Although the above-described embodiment was provided in the context of a Unix™-based operating system, those skilled in the art will understand that the present invention may be implemented in conjunction with other operating systems or platforms and is not limited to use with platforms having a registered signal handler.
Using the foregoing specification, the invention may be implemented as a machine, process or article of manufacture by using standard programming and/or engineering techniques to produce programming software, firmware, hardware or any combination thereof.
Any resulting program(s), having computer readable program code, may be embodied within one or more computer usable media such as memory devices, transmitting devices or electrical or optical signals, thereby making a computer program product or article of manufacture according to the invention. The terms “article of manufacture” and “computer program product” as used herein are intended to encompass a computer program existent (permanently, temporarily or transitorily) on any computer usable medium.
A machine embodying the invention may involve one or more processing systems including, but not limited to, central processing unit(s), memory/storage devices, communication links, communication/transmitting devices, servers, I/O devices, or any subcomponents or individual parts of one or more processing systems, including software, firmware, hardware or any combination or sub-combination thereof, which embody the invention as set forth in the claims.
One skilled the art of computer science will be able to combine the software created as described with appropriate general purpose or special purpose computer hardware to create a computer system and/or computer sub-components embodying the invention and to create a computer system and/or computer sub-components for carrying out the method of the invention.
The present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Certain adaptations and modifications of the invention will be obvious to those skilled in the art. Therefore, the above discussed embodiments are considered to be illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US3937938||Jun 19, 1974||Feb 10, 1976||Action Communication Systems, Inc.||Method and apparatus for assisting in debugging of a digital computer program|
|US4074353 *||May 24, 1976||Feb 14, 1978||Honeywell Information Systems Inc.||Trap mechanism for a data processing system|
|US4080650||Jul 28, 1976||Mar 21, 1978||Bell Telephone Laboratories, Incorporated||Facilitating return from an on-line debugging program to a target program breakpoint|
|US4742449 *||Oct 21, 1985||May 3, 1988||Data General Corporation||Microsequencer for a data processing system using a unique trap handling technique|
|US4866665||Apr 1, 1987||Sep 12, 1989||Burr-Brown Ltd.||Break points system in a software monitor where entry address of break point routing equals op code of call instruction|
|US4890221 *||Apr 1, 1988||Dec 26, 1989||Digital Equipment Corporation||Apparatus and method for reconstructing a microstack|
|US4942524 *||Jun 24, 1987||Jul 17, 1990||Mitsubishi Denki K.K.||Software trap system which saves previous content of software trap handling pointer in a stack upon execution of a trap|
|US5463778 *||Sep 2, 1993||Oct 31, 1995||Texas Instruments Incorporated||User controlled trap handler|
|US5561774 *||Aug 16, 1994||Oct 1, 1996||Kabushiki Kaisha Toshiba||Parallel processing type processor system with trap and stall control functions|
|US5581697||Jan 28, 1994||Dec 3, 1996||Sun Microsystems, Inc.||Method and apparatus for run-time error checking using dynamic patching|
|US5644701||Dec 28, 1994||Jul 1, 1997||Kabushiki Kaisha Toshiba||Data processing system and method for executing snapshot dumps|
|US5680620||Jun 30, 1995||Oct 21, 1997||Dell Usa, L.P.||System and method for detecting access to a peripheral device using a debug register|
|US5761739||Jun 8, 1993||Jun 2, 1998||International Business Machines Corporation||Methods and systems for creating a storage dump within a coupling facility of a multisystem enviroment|
|US5951696||Nov 14, 1996||Sep 14, 1999||Hewlett-Packard Company||Debug system with hardware breakpoint trap|
|US6009515 *||May 30, 1997||Dec 28, 1999||Sun Microsystems, Inc.||Digital data processing system including efficient arrangement to support branching within trap shadows|
|US6206584||May 31, 1995||Mar 27, 2001||Rational Software Corporation||Method and apparatus for modifying relocatable object code files and monitoring programs|
|US6253317 *||Jan 9, 1997||Jun 26, 2001||Sun Microsystems, Inc.||Method and apparatus for providing and handling traps|
|US6282637 *||Dec 2, 1998||Aug 28, 2001||Sun Microsystems, Inc.||Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs|
|US6311326||Jan 4, 1999||Oct 30, 2001||Emc Corporation||Online debugging and tracing system and method|
|US6336184 *||Aug 14, 1998||Jan 1, 2002||International Business Machines Corporation||Method and apparatus for performing a trap operation in an information handling system|
|US6633876 *||Jun 7, 2000||Oct 14, 2003||Sun Microsystems, Inc.||Analyzing post-mortem information on a remote computer system using a downloadable code module|
|US6704862 *||Jun 9, 2000||Mar 9, 2004||Sun Microsystems, Inc.||Method and apparatus for facilitating exception handling using a conditional trap instruction|
|US6772372 *||Mar 6, 2001||Aug 3, 2004||Hewlett-Packard Development Company, L.P.||System and method for monitoring unaligned memory accesses|
|1||Cristinel Mateis, Markus, Stumptner, Dominik Wieland and Franz Wotawa, JADE-AI Support For Debugging Java Program, IEEE 2000.|
|2||Dr. Dobb's-How Do I Store A Java app In A Self-Executing Encrypted File?, Journal Feb. 1999, By Dave Angel and Andy Wilson.|
|3||IBM Technical Disclosure Bulletin, vol. 35 No. 1A, Jun. 1992, IBM Snapdump for OS/2.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7243372 *||May 23, 2005||Jul 10, 2007||Microchip Technology Incorporated||Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection|
|US7340495 *||Jun 30, 2003||Mar 4, 2008||Intel Corporation||Superior misaligned memory load and copy using merge hardware|
|US8010506 *||Nov 20, 2008||Aug 30, 2011||Fujitsu Limited||Information processing system and network logging information processing method|
|US8667335 *||Feb 9, 2011||Mar 4, 2014||Fujitsu Limited||Information processing apparatus and method for acquiring information for hung-up cause investigation|
|US8892952 *||Apr 16, 2012||Nov 18, 2014||International Business Machines Corporation||Preserve status parameter for testing in computing system|
|US9128832 *||Oct 14, 2013||Sep 8, 2015||International Business Machines Corporation||Performing diagnostic tracing of an executing application to identify suspicious pointer values|
|US9164821 *||Dec 14, 2012||Oct 20, 2015||International Business Machines Corporation||Performing diagnostic tracing of an executing application to identify suspicious pointer values|
|US20040098556 *||Jun 30, 2003||May 20, 2004||Buxton Mark J.||Superior misaligned memory load and copy using merge hardware|
|US20090132565 *||Nov 20, 2008||May 21, 2009||Fujitsu Limited||Information processing system and network logging information processing method|
|US20110138232 *||Feb 9, 2011||Jun 9, 2011||Fujitsu Limited||Information processing apparatus and method for acquiring information for hung-up cause investigation|
|US20130275809 *||Apr 16, 2012||Oct 17, 2013||International Business Machines Corporation||Preserve Status Parameter for Testing in Computing System|
|US20140173356 *||Dec 14, 2012||Jun 19, 2014||International Business Machines Corporation||Performing diagnostic tracing of an executing application to identify suspicious pointer values|
|US20140173358 *||Oct 14, 2013||Jun 19, 2014||International Business Machines Corporation||Performing diagnostic tracing of an executing application to identify suspicious pointer values|
|US20140331204 *||May 2, 2013||Nov 6, 2014||Microsoft Corporation||Micro-execution for software testing|
|U.S. Classification||714/34, 712/E09.06, 714/E11.208, 712/244, 714/38.13, 714/38.11, 714/38.14|
|International Classification||G06F11/00, G06F9/38, G06F11/36|
|Cooperative Classification||G06F11/366, G06F9/3861|
|European Classification||G06F11/36B9, G06F9/38H|
|Sep 26, 2002||AS||Assignment|
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WILDING, MARK F.;BIALEK, ALEXANDRA G.;CHUNG, YUNG;REEL/FRAME:013355/0817
Effective date: 20020423
|Feb 1, 2010||REMI||Maintenance fee reminder mailed|
|Jun 27, 2010||LAPS||Lapse for failure to pay maintenance fees|
|Aug 17, 2010||FP||Expired due to failure to pay maintenance fee|
Effective date: 20100627