Software debugging method and apparatus

Data processing: software development – installation – and managem – Software program development tool – Testing or debugging

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S129000

Reexamination Certificate

active

06490721

ABSTRACT:

FIELD OF THE INVENTION
The invention relates to debugging of computer code. More specifically, the invention relates to a method and apparatus for debugging computer code that does not require modification of the target executable program that is to be debugged.
DESCRIPTION OF THE RELATED ART
Computer programming has become a very complex operation because of the increased sophistication of computers and the increased complexity of tasks to be carried out by computers. Further, computer hardware is now relied upon for mission critical tasks, such as air traffic control, communications, medical equipment, and the like. It follows that computer software, i.e. a computer program, is controlling these tasks. Note that the phrase “computer program” is used herein to refer to a set of software instructions and/or routines for controlling computer hardware. The word “application” is used herein to refer to the practical use of the program, for example, inventory control, accounting or any other use.
Of course, a higher level of software complexity results in a higher potential for programming errors, known as “bugs”. For example, many programs consist of thousands or even millions of lines of code. The sheer volume of code creates great potential for bugs. Also, as a result of the size of most computer programs, the code often is developed by plural teams of programmers each working on a different portion or aspect of the program. The teams may accomplish similar tasks in a different manner or otherwise produce code that is incompatible with code developed by other teams. Due to the huge reliance on computer software in just about every aspect of society, it is important to find and eliminate as many bugs as possible in an efficient manner. Also, it is often desirable to insure the performance of a computer program. For example, the end user may want to be guaranteed that a particular variable is updated very quickly.
To find errors in code and assure performance, a process called “debugging” has developed. One form of conventional debugging is called “interactive debugging”. Interactive debugging includes stopping the program at desired break points, known as “breaks”, for examination of program status. “Noninteractive debugging” does not stop the program. However it uses debugging statements which are inserted into the source code and the source code is then compiled into machine code including the debugging statements. Once all errors have been eliminated and the program is operating in a desirable manner, the debugging statements are removed from the source code and the program is recompiled and used for its intended task.
Conventional debugging techniques, while sometimes effective, have several shortcomings. In particular, conventional noninteractive debugging techniques require access to the source code for insertion of the debugging statements. Often, the user license for a particular program does not grant access to the source code or the right to change the source code. Therefore, in most cases, the user must rely on the developer of the software to provide all debugging. Often programming errors occur only in a particular application of a program and thus are not caught by the developer during initial debugging. Also, the developer may be unavailable or unwilling to provide subsequent debugging services. Further, even if access to the source code is not an obstacle, the program as run during noninteractive debugging has been altered to accommodate the debugging statements. Therefore, the program might not run in the same manner during debugging as it will during normal operation. The debugging statements may mask errors, create errors, slow operation, or otherwise affect the function or performance of the program. Finally, many programs behave differently or even refuse to run when stopped. Therefore, conventional interactive debugging using break points is not reliable and is difficult to implement.
SUMMARY OF THE INVENTION
It is an object of the invention to overcome the limitations of conventional debugging techniques.
It is another object of the invention to permit debugging of a computer program without stopping execution of the program.
It is another object of the invention to permit noninteractive debugging of a computer program without accessing or altering the source code of the program.
It is another object of the invention to conduct performance testing of a computer program under actual executable conditions of the program.
It is another object of the invention to conduct requirement verification under actual executable conditions of the program.
It is another object of the invention to increase the speed and efficiency of software development.
It is another object of the invention to facilitate software comprehension.
The invention uses “dynamic linking” to use the existing target program executable for debugging and thus avoids the long edit-compile-link cycles inherent in the use of debugging statements in source code. By linking new user actions into the executable image, the target program is allowed to run as it would normally run thus allowing debugging of time sensitive programs without the need to stop execution thereof. Calls to the user actions are inserted into the memory image during loading of the target program. The calls can be inserted at any time during or after transfer of the executable code into memory. Accordingly, the term “loading” as used herein refers to any time during or after transfer of the target program into memory for the purpose of running the program. The invention can be used to locate and fix programming errors, for requirements verification, for performance evaluation, for software comprehension, or for any other evaluation of software. Accordingly, the term “debugging” as used herein refers broadly to any type of diagnosis or evaluation of software.
A first aspect of the invention is a method for debugging a computer program comprising the steps of developing a debugging subprogram having a user action for debugging a target program, loading the target program for execution, inserting a call to the debugging subprogram into a memory image of the target program during the loading step, and executing the target program.
A second aspect of the invention is a computer readable medium having instructions for debugging a computer program recorded thereon. The medium a includes a first set of instructions for loading the target program for execution, and a second set of instructions for inserting a call to a debugging subprogram having user actions into a memory image of the target program during loading of the target program.


REFERENCES:
patent: 4802165 (1989-01-01), Ream
patent: 4819233 (1989-04-01), Delucia et al.
patent: 5142679 (1992-08-01), Owaki et al.
patent: 5193180 (1993-03-01), Hastings
patent: 5265254 (1993-11-01), Blasciak et al.
patent: 5274811 (1993-12-01), Borg et al.
patent: 5307498 (1994-04-01), Eisen et al.
patent: 5313616 (1994-05-01), Cline et al.
patent: 5335344 (1994-08-01), Hastings
patent: 5408650 (1995-04-01), Arsenault
patent: 5465258 (1995-11-01), Adams
patent: 5499340 (1996-03-01), Barritz
patent: 5528753 (1996-06-01), Fortin
patent: 5535329 (1996-07-01), Hastings
patent: 5539907 (1996-07-01), Srivastava et al.
patent: 5581696 (1996-12-01), Kolawa et al.
patent: 5581697 (1996-12-01), Gramlich et al.
patent: 5583988 (1996-12-01), Crank et al.
patent: 5590056 (1996-12-01), Barritz
patent: 5619678 (1997-04-01), Yamamoto
patent: 5619698 (1997-04-01), Lillich et al.
patent: 5623665 (1997-04-01), Shimada et al.
patent: 5659752 (1997-08-01), Heisch et al.
patent: 5675803 (1997-10-01), Preisler et al.
patent: 5675804 (1997-10-01), Sidik et al.
patent: 5689684 (1997-11-01), Mulchandani et al.
patent: 5694566 (1997-12-01), Nagae
patent: 5710724 (1998-01-01), Burrows
patent: 5732273 (1998-03-01), Srivastava et al.
patent: 5815653 (1998-09-01), You et al.
patent: 5860012 (1999-01-01), Luu
patent: 6044224 (2000-03-01), Radia et al.
patent: 6292934 (2001-09-01), Davidson et al.
patent: 6353923 (2002-03-01), Bogl

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Software debugging method and apparatus does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Software debugging method and apparatus, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Software debugging method and apparatus will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2927767

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.