Data processing: software development – installation – and managem – Software program development tool – Testing or debugging
Reexamination Certificate
1999-06-16
2002-06-25
Khatri, Anil (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Testing or debugging
C717S125000, C717S148000
Reexamination Certificate
active
06412106
ABSTRACT:
TECHNICAL FIELD
The invention relates generally to debugging computer programs and more particularly to graphically debugging computer programs.
BACKGROUND
The design and use of computer hardware and software programs are well known in the art, and need not be described here in any great detail. The following overview is presented merely to provide a context within which the present invention may be understood.
A computer program is a set of instructions that directs the functioning of various computer hardware resources in order to accomplish a particular task. In order to run a computer program, that program is typically loaded into the computer's main memory, where each instruction within the program is stored at a unique location, specified by an address. The group of address locations occupied by the program is referred to as the instruction space of the program. During program execution, the computer's control unit generally fetches and executes instructions in sequence. Fetching begins at a predefined start location within the program, and continues in sequence unless some type of branch instruction is encountered, or some other event, such as an interrupt, occurs. Branch instructions and interrupts will cause the control unit to begin fetching instructions from a new location that is not the next sequential instruction address within the instruction space. Program execution then proceeds in sequence beginning at this new memory location, until another branch or interrupt is encountered.
Although each computer instruction is really a set of electrical signals, each of which typically assumes one of two values, those who create, or write, computer programs (e.g., programmers or developers) usually use symbols that represent the various possible combinations of electrical signals. At the lowest level, these symbols may simply be a string of ones and zeroes, representing on a one for one basis each of the electrical signals that make up an instruction. More often, however, these symbols comprise alphanumeric characters which are arranged to form mnemonics in a programming language, each mnemonic representing an instruction or part of an instruction.
Prior art development environments used programming languages (or “scripting languages”) to control the flow of an application. The languages allowed programmers to develop computer programs by utilizing the programming language to produce textual source code. That is, programmers utilized the programming language to produce textual source code made up of instructions, such as “if-then” statements.
More recently, graphical development environments are being utilized by programmers to develop computer source code using icons to represent various language components, such as a while-loop, an if-branch, or a user-defined subroutine. For example, a graphical development environment may allow a programmer to place an icon in a program that represents an “if-then” statement, rather than typing the textual source code for such an instruction. Such icons may be logically arranged to create the program flow for a program. Typically, a graphical development environment represents a program flow as a sequence of icons connected by arrows. An example of such a graphical development environment is provided in co-pending, commonly assigned U.S. application Ser. No. 08/599,134 filed Feb. 9, 1996, entitled “ENHANCED GRAPHICAL DEVELOPMENT ENVIRONMENT FOR CONTROLLING PROGRAM FLOW.” Typically, graphical development environments allow a programmer to view the underlying source code represented by a particular icon if the programmer so desires. For example, a developer may simply double-click on an icon to reveal the underlying textual source code represented by that particular icon.
In recent years, software has had increasing importance in the computer industry. Software is used to control many increasingly complex processes, and the software itself has in turn become increasingly complex. Accordingly, computer program developers must ensure that their programs actually perform the task(s) that they are designed to perform. The act of making this determination is generally referred to as testing the software, and the act of identifying the cause of an identified problem, or a “bug,” in a program is generally referred to as “debugging” the software.
Traditional debugging methods include slow manual processes such as inserting print statements into the software at particular locations so that the values of variables and the like may be checked to determine if they have the expected values. That is, a programmer may insert print statements in the textual source code of a program to check the values of variables or other information at certain points in the execution of the source code.
To facilitate the debugging process, computer programs called “debuggers” have been created. A typical debugger supplies a program control interface to the programmer that allows the programmer to do such things as executing only one program instruction at a time (referred to as “single stepping” the program), determining what the next instruction to be executed is, examining and/or modifying computer register and memory locations, and setting breakpoints at particular locations within the program, whereby computer program execution will continue unimpeded until the breakpoint is the next location in the program that is to be executed by the computer. These features, and others, greatly assist the programmer in determining whether the sequence of program instruction execution is as expected, and whether the correct data is being moved from one computer resource to another. This view into the actual operation of the program allows the programmer to identify errors made in the program design in order to “debug” the program.
A debugger is generally a tool that aids software development by giving the programmer control over and access to information about a running program. Debuggers typically run as self-contained processes, controlling the program under study (i.e., the application program) through operating system primitives designed for that purpose. A simple application program typically consists of data, and functions that operate on those data. Data and functions are defined in a source file created by the programmer (i.e., the “source code”). Each datum is associated with a type that describes its internal structure and behaviors; for example, integers may be 16 bits long, and may be added, subtracted, multiplied, etc. A tool called a compiler or translator reads a source file and produces an object file. The compiler typically works in conjunction with other tools—assemblers, linkers, and optimizers—to accomplish this task, although such ancillary tools may be invisible to the programmer.
The object file contains bits which can be loaded into computer memory and executed; these bits include both the data and the machine instructions generated from the original program. These bits, when loaded into memory, are called the program image. In most systems, there is a close mapping of program image onto what the user perceives as a user process. The object file also contains a table that maps some of the original source information, as variable and function names, onto addresses, offsets, sizes, and other pertinent properties of the program image. This so-called symbol table is usually not made part of the program image itself, but remains in the object file where other programs (like the debugger) can read and analyze it.
A debugger is generally used to examine the program image of a program in execution, and to control the execution of the program. Because the debugger generally has access to the symbol table, it allows the user to interact with the target process (i.e., the application program) in terms of the names found in the source code. For example, if the user knows the name of a variable, the user can ask the debugger to retrieve that variable's current contents from the program image or from storage dynamically allocated at run time by giving
Huffman Dale L.
Leask Gary M.
Fulbright & Jaworski L.L.P.
InterVoice Limited Partnership
Khatri Anil
LandOfFree
Graphical system and method for debugging computer programs does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Graphical system and method for debugging computer programs, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Graphical system and method for debugging computer programs will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2919069