US20070300209A1 - Run into function - Google Patents
Run into function Download PDFInfo
- Publication number
- US20070300209A1 US20070300209A1 US11/850,548 US85054807A US2007300209A1 US 20070300209 A1 US20070300209 A1 US 20070300209A1 US 85054807 A US85054807 A US 85054807A US 2007300209 A1 US2007300209 A1 US 2007300209A1
- Authority
- US
- United States
- Prior art keywords
- oriented code
- variable
- breakpoint
- method call
- call
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims abstract description 117
- 230000015654 memory Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 2
- 238000004519 manufacturing process Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 62
- 238000004590 computer program Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/3648—Software debugging using additional hardware
Definitions
- the present invention generally relates to data processing and more particularly to debugging code.
- debugging When developing computer software, it is necessary to perform a function termed “debugging.” Simply stated, debugging is performed by a computer programmer to locate and identify errors in a program under development. Typically, a programmer uses another computer program commonly known as a “debugger” to debug a program under development.
- An effective debugger program is necessary for rapid and efficient development of software and typically provides functions including run-to-cursor, step into, step over, step out of, breakpoints and the like.
- step One primary operation supported by conventional debuggers is a “step” function, which permits a computer programmer to process instructions (also known as “statements”) in a computer program one-by-one, and to see the results upon completion of each instruction. While the step operation provides a programmer with a large amount of information about a program during its execution, stepping through hundreds or thousands of program instructions can be extremely tedious and time consuming, and may require a programmer to step through many program instructions that are known to be error-free before a set of instructions to be analyzed are executed.
- a second operation supported by conventional debuggers is a breakpoint operation, which permits a computer programmer to identify with a “breakpoint” a precise instruction for which it is desired to halt execution of a computer program during execution.
- a breakpoint a precise instruction for which it is desired to halt execution of a computer program during execution.
- the program executes in a normal fashion until a breakpoint is reached, and then stops execution and displays the results of the computer program to the programmer for analysis.
- Most breakpoints supported by conventional debuggers are unconditional, meaning that once such a breakpoint is reached, execution of the program is always halted.
- Some debuggers also support the use of conditional breakpoints, which only halt execution of a program when a variable used by the program is set to a predetermined value at the time such a breakpoint is reached.
- the run-to-cursor function allows a user to place a cursor on a selected statement and then execute the program from a current stopped position to the cursor.
- execution reaches the line at which the cursor is located, the debugger gains control. In this way, the user may observe the effects of running the portion of code from the current stopped position to the cursor position. If unexpected results are identified, the user has successfully located the source of a problem and may then take remedial steps to correct the problem.
- step operations, breakpoints, and run-to functions are used together to simplify the debugging process.
- a common debugging operation is to set a breakpoint at the beginning of a desired set of instructions to be analyzed, and then begin executing the program. Once the breakpoint is reached, the program is halted, and the programmer then steps through the desired set of instructions line-by-line using the step operation, or runs to a selected line number. Consequently, a programmer is able to quickly isolate and analyze a particular set of instructions without having to step through irrelevant portions of a computer program.
- a program is constructed from a number of “objects”, each of which includes data and/or one or more sets of instructions (often referred to as “routines” or “methods”) that define specific operations that can be performed on the data.
- routines or “methods”
- a large number of objects may be used to build a computer program, with each object interacting with other objects in the computer program to perform desired operations.
- the programmer must manually identify the portion of the source code containing the method, identify the method within the code, set a breakpoint on each entry point to that method, and then after encountering the desired breakpoint manually remove all the remaining breakpoints.
- Such an approach is burdensome and error prone.
- the present invention generally relates to methods, apparatus and articles of manufacture for implementing a run into function for a selected code portion.
- One embodiment provides for a computer-implemented method for debugging code comprising, while execution is halted at a first point in the code, receiving a selection of a target call site located at a second point in the code and comprising a call to a routine; and setting at least one run into breakpoint configured to halt subsequent execution only when an execution path arrives at the routine from the target call site.
- setting the at least one run into breakpoint comprises setting the run into breakpoint on an instruction calling the routine. In this case, the function is stepped into upon encountering the breakpoint.
- setting the at least one run into breakpoint comprises setting the run into breakpoint at each entry point to the routine. In this case, execution may be halted and a user interface returned upon encountering the breakpoint, only if it can be determined that the routine is entered from the selected target call site.
- Another embodiment provides for a computer-implemented method for debugging code comprising receiving a selection of a target call site in the code, the target call site comprising a call to a routine; establishing a breakpoint at an entry point to the selected target call site; programmatically determining call context information identifying a location of the selected target call site in the code; upon encountering the breakpoint during execution of the code, determining whether the routine is called from the selected target call site based on the stored call context information; and if so, halting execution of the code.
- Another embodiment of a computer-implemented method for debugging code comprises receiving a selection of a target call site in the code, the target call site comprising a routine having a plurality of entry points; establishing a breakpoint at each of the plurality of entry points; and programmatically determining call context information uniquely identifying the selected target call site. For each of the breakpoints encountered during execution of the code, the method further comprises determining whether the routine is called from the selected target call site based on the call context information; and if so, halting execution of the code.
- Yet another embodiment of a computer-implemented method for debugging object-oriented code comprises receiving a selection of a target call site in the code, the target call site comprising a method; identifying a plurality of entry points for the method; establishing a breakpoint at each of the plurality of entry points; determining call context information uniquely identifying the selected target call site. For each of the breakpoints encountered during execution of the code, the method further comprises determining whether the routine is called from the selected target call site based on the call context information; and if so, halting execution of the code.
- Yet another embodiment provides a computer comprising a memory; code under debug resident in the memory, the code comprising as least one target call site selected by a user and comprising a call to a routine; a breakpoint data structure resident in the memory and configured for storing at least context information indicating a location of the call within the code; and a debugger program resident in the memory.
- the debugger program is configured to interrupt execution of the code under debug in response to encountering a breakpoint and determining that the routine is called from the target call site as determined with reference to the context information.
- Still other embodiments include computer-readable mediums containing instructions which, when executed, perform the above methods.
- FIG. 1 is a high-level diagram of a computer, according to one embodiment of the present invention.
- FIG. 2 is a block diagram illustrating the operation of a debugger, according to one embodiment of the present invention.
- FIG. 3 is one embodiment of a user interface screen illustrating a user-implemented run into function for a selected method, according to one embodiment of the present invention.
- FIG. 4 is a breakpoint table, according to one embodiment of the present invention.
- FIGS. 5 A-B show a flow chart illustrating the operation of a debugger program during a run into operation, according to one embodiment of the present invention.
- FIG. 6 shows a flow chart illustrating one embodiment of setting context sensitive breakpoints.
- FIG. 7 shows a flow chart illustrating one embodiment of setting instruction specific breakpoints.
- FIG. 9 shows a flow chart illustrating one embodiment of handling instruction specific breakpoints.
- the present invention provides methods, apparatus and articles of manufacture for implementing a “run into” function for a selected function of some code under debug.
- the user selects a function with respect to a particular target call site (i.e., the location from which the function of interest is called).
- the function is generally selected by a user through a user-interface screen.
- the debugger places a temporary breakpoint(s) at the entry point(s) to the selected function.
- One embodiment of the invention is implemented as a program product for use with a computer system such as, for example, the computer 110 shown in FIG. 1 and described below.
- the program(s) of the program product defines functions of the embodiments (including the methods described herein) and can be contained on a variety of signal-bearing media.
- Illustrative signal-bearing media include, but are not limited to: (i) information permanently stored on non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive); (ii) alterable information stored on writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive); and (iii) information conveyed to a computer by a communications medium, such as through a computer or telephone network, including wireless communications. The latter embodiment specifically includes information downloaded from the Internet and other networks.
- Such signal-bearing media when carrying computer-readable instructions that direct the functions of the present invention, represent embodiments of the present invention.
- routines executed to implement the embodiments of the invention may be part of an operating system or a specific application, component, program, module, object, or sequence of instructions.
- the computer program of the present invention typically is comprised of a multitude of instructions that will be translated by the native computer into a machine-readable format and hence executable instructions.
- programs are comprised of variables and data structures that either reside locally to the program or are found in memory or on storage devices.
- various programs described hereinafter may be identified based upon the application for which they are implemented in a specific embodiment of the invention. However, it should be appreciated that any particular program nomenclature that follows is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature.
- the computer system 110 could include a number of operators and peripheral systems as shown, for example, by a mass storage interface 137 operably connected to a direct access storage device 138 , by a terminal interface 140 operably connected to a terminal 142 , and by a network interface 144 operably connected to the plurality of networked devices 146 .
- the terminal 142 may be any video output device for outputting viewable information.
- the main memory 116 is any memory sufficiently large to hold the necessary programs and data structures.
- Main memory 116 could be one or a combination of memory devices, including Random Access Memory, nonvolatile or backup memory, (e.g., programmable or Flash memories, read-only memories, etc.).
- memory 116 may be considered to include memory physically located elsewhere in a computer system 110 , for example, any storage capacity used as virtual memory or stored on a mass storage device or on another computer coupled to the computer system 110 via bus 114 .
- the debugger 123 is a graphical user interface system debugger for the eServer iSeries computer.
- the OS/400 operating system and the eServer iSeries computer are available from International Business Machines, Corporation of Armonk, N.Y.
- the software constructs, such as the computer program 119 and the debugger 123 are shown residing on the same computer, a distributed environment is also contemplated.
- the debugger 123 may be located on a networked device 146 , while the computer program 119 to be debugged is on the computer system 110 .
- a debugging process is initiated by the debug user interface 124 .
- the user interface 124 presents the program under debugging and highlights the current line of the program on which a stop or error occurs.
- the user interface 124 allows the user to set control points (e.g., breakpoints and watches), display and change variable values, and activate other inventive features described herein by inputting the appropriate commands.
- the debug user interface 124 also allows a user to select a method and implement a run into function with respect to the selected method.
- An Illustrative embodiment of the user interface 124 for setting a run into function is described with reference to FIG. 3 .
- the expression evaluator 126 parses the debugger command passed from the user interface 124 and uses a data structure (e.g., a table) generated by the compiler 121 to map the line number in the debugger command to the physical memory address in memory 116 . In addition, the expression evaluator 126 generates a Dcode program for the command.
- the Dcode program is machine executable language that emulates the commands. Some embodiments of the invention include Dcodes which, when executed, activate control features described in more detail below.
- the call stack 120 may be utilized during the execution of the program 119 .
- a call stack is a last in-first out (LIFO) data structure.
- an operating system will generally “push” onto the top of the call stack an entry that identifies both the first routine, as well as the specific instruction or statement in that routine from which the routine call was made (or alternatively, the instruction or statement in that routine to which control should be returned upon completion of the second routine).
- the second routine is then executed, and if that routine calls an additional routine, an entry relating to that routine call is also added to the stack.
- entries from the call stack are then “popped” from the top of the stack and the information therein analyzed to determine the routine and instruction therein where control should be returned.
- a run into function may be implemented for any method in the code.
- a user interface screen 300 of the user interface 124 is shown in which a user has selected a method 304 shown in a source code panel 302 .
- a menu 308 is then invoked from which a “Run Into” menu item 306 is selected to implement a run into function.
- the menu 308 may be accessed in any variety of ways, including right-clicking a mouse after the method 304 has been selected.
- One embodiment of the present invention facilitates this objective by examining the context of the breakpoint and halting execution only when specified context criteria is met, as will be described in more detail below. Another embodiment facilitates this objective by executing to the call site of the method, stepping into it and then returning control to a user via a user interface.
- the inventive run into function is implemented by setting breakpoints whose location is recorded in the breakpoint table 150 ( FIG. 1 ).
- One embodiment of the breakpoint table 150 is shown in FIG. 4 .
- the breakpoint table 150 provides some aspects which are well-known in the art in combination with some inventive features.
- an op code (operation code) column 404 and an address column 406 are shown.
- the information contained under the address column 406 specifies a memory address of a breakpoint.
- the information contained under the op code column 404 specifies the original operation code of the program which has been replaced with some “bad” operation code at the corresponding address in the address column 402 .
- a statement column 402 contains information regarding the statement at which a method is selected for setting a breakpoint.
- a user may elect to invoke the run into function with respect to multiple function calls. Further, a given invocation of the run into function results in multiple breakpoints being set. Accordingly, two or more run into breakpoints may be set for each invocation of the run into function (i.e., one breakpoint for each instance of a selected method). Accordingly, a technique is needed to identify a set of breakpoints related to a given invocation of the run into function (i.e., for a given selection of a function call to run into). To this end, the run into column 408 stores a run into function number used in one embodiment of the invention. For example, the first and fourth record of the table 150 contain the same run into number, 11, indicating that these two records are for the same selected method.
- FIG. 5 a method 500 of operating the debugger 123 in a manner consistent with embodiments of the present invention is shown.
- the debugger 123 determines whether the event is a run into function request (step 506 ). That is, a determination is made as to whether the user is setting a run into breakpoint for a selected method. If so, the debugger 123 resolves (i.e., parses) the function call (step 508 ) to facilitate classification. Then, the necessary run into breakpoints are set (step 510 ). The debugger 123 then resumes executing the program (step 512 ) until the next event (step 504 ). Embodiments for setting run into breakpoints (at step 510 ) are described with respect to FIG. 6 and FIG. 7 .
- a method for setting context sensitive breakpoints is shown. That is, a user specifies a method call at which to halt execution, on the condition that the method call is made from a selected target site. To this end, the debugger obtains a run into number for subsequently storing it in the breakpoint table in later steps (step 602 ).
- the debugger can then determine whether the selected call involves an object (step 604 ). In one embodiment, this step generally distinguishes non-object oriented languages from object oriented languages; although even an object oriented language may include a method that does not involve an object. If the selected call does not involve an object, the debugger may simply set breakpoints on each entry point to the method (step 606 ); that is, the fields of the first three columns of the breakpoint table 150 are populated. Otherwise, the debugger obtains the object type of the object involved with the selected function (at step 608 ) to identify cases where the function may have been overridden.
- object type 2 which is derived from and inherited properties of an object type 1 .
- Some functions in object type 1 may be overridden (modified).
- object type 1 has a size method that was overridden in object type 2
- the debugger obtains the object type for a function and then traverses the class hierarchy searching for those objects that are based from this object type and override this same function. Accordingly it may be necessary to get the object type (step 608 ) and then insert breakpoints for each matching function within the class hierarchy of the object (step 610 ).
- Techniques for resolving object type are well known in the art and are not further described here.
- the call site of the selected method is identified (step 612 ).
- the call site refers to the location or context of the selected method; i.e., where the method is being called from.
- the information identifying the call site is referred to herein as “calling context information.” It is contemplated that the level of granularity of the “calling context information” is selectable according to the particular implementation, but preferably the “calling context information” uniquely (i.e., unambiguously) identifies the call site. Unambiguous identification of the call site may be necessary, for example, where two or more objects are objects of the same class.
- the line number of the call site is known and is mapped to information (i.e., the “calling context information”) that will appear on the call stack 120 , e.g., a statement number or address.
- This information is then stored in the breakpoint table 150 in the appropriate record(s) set for each breakpoint at steps 606 or 610 (step 614 ).
- the debugger 123 then resumes executing the program (step 512 ) until the next event (step 504 ), as shown in FIG. 5A .
- step 702 the exact location of the call instruction for the selected function is determined. This may the same processing as is performed at step 612 described above with reference to FIG. 6 .
- a run into breakpoint is then set at the determined instruction location (step 704 ).
- step 526 determines (at step 526 ) whether the event is an encountered breakpoint. If step 526 is answered negatively, the event is handled in an appropriate way (step 528 ). If, however, the event is a breakpoint hit, then the debugger determines whether the breakpoint is a run into breakpoint ( 530 ).
- FIG. 8 a flow chart is shown illustrating an operation performed when the breakpoint encountered is a context sensitive run into breakpoint.
- the debugger compares the call stack with the saved information in the stack position column of the breakpoint table 150 to determine whether the breakpoint was called from the desired function (step 802 ). If the contents do not match, the function is not called from the desired location and, therefore, program execution is resumed with no other action (i.e., processing proceeds to step 512 of FIG. 5A ). If the statement number and the function name match with the contents of the call stack, however, then all run into breakpoints associated with the same run into number are removed (step 804 ) and program execution is halted (steps 534 and 540 of FIG. 5B ).
- FIG. 9 a flow chart is shown illustrating an operation performed when the breakpoint encountered is an instruction specific run into breakpoint. If so, execution is currently at the instruction call to the selected function. Accordingly, the debugger performs a conventional step into operation to advance the debugger's stopped position into the function of interest (step 902 ). The debugger then halts (steps 534 and 540 of FIG. 5B ).
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Method, apparatus, and article of manufacture for of debugging object-oriented code. A user selects a method call at a location in the object-oriented code and a debugger parses the selected method call. Parsing the selected method call comprises determining a base class of the method call, determining one or more override methods, and setting a respective breakpoint at a respective entry point of the method and each of one or more override methods. Each override method is associated with a derived class of the base class, and a name of the method call. During execution of the object-oriented code under debug, the debugger determines whether a method that executed one of the respective breakpoints is called from the user-selected location in the object-oriented code.
Description
- This is a continuation of co-pending U.S. patent application Ser. No. 10/666,033 filed Sep. 18, 2003, which is herein incorporated by reference.
- 1. Field of the Invention
- The present invention generally relates to data processing and more particularly to debugging code.
- 2. Description of the Related Art
- A programmer develops a software program by producing and entering source code into files using a text editor program. The computer then creates an executable program by translating the source code into machine code. The machine code is the rudimentary instructions understood by a computer. Illustratively, the foregoing software development process is accomplished by running a series of programs. These programs typically include a compiler for translating the source code into machine code and a linker to link the machine code together to form a program.
- When developing computer software, it is necessary to perform a function termed “debugging.” Simply stated, debugging is performed by a computer programmer to locate and identify errors in a program under development. Typically, a programmer uses another computer program commonly known as a “debugger” to debug a program under development. An effective debugger program is necessary for rapid and efficient development of software and typically provides functions including run-to-cursor, step into, step over, step out of, breakpoints and the like.
- One primary operation supported by conventional debuggers is a “step” function, which permits a computer programmer to process instructions (also known as “statements”) in a computer program one-by-one, and to see the results upon completion of each instruction. While the step operation provides a programmer with a large amount of information about a program during its execution, stepping through hundreds or thousands of program instructions can be extremely tedious and time consuming, and may require a programmer to step through many program instructions that are known to be error-free before a set of instructions to be analyzed are executed.
- A second operation supported by conventional debuggers is a breakpoint operation, which permits a computer programmer to identify with a “breakpoint” a precise instruction for which it is desired to halt execution of a computer program during execution. As a result, when a computer program is executed by a debugger, the program executes in a normal fashion until a breakpoint is reached, and then stops execution and displays the results of the computer program to the programmer for analysis. Most breakpoints supported by conventional debuggers are unconditional, meaning that once such a breakpoint is reached, execution of the program is always halted. Some debuggers also support the use of conditional breakpoints, which only halt execution of a program when a variable used by the program is set to a predetermined value at the time such a breakpoint is reached.
- Another conventional debugging operation, the run-to-cursor function, allows a user to place a cursor on a selected statement and then execute the program from a current stopped position to the cursor. When execution reaches the line at which the cursor is located, the debugger gains control. In this way, the user may observe the effects of running the portion of code from the current stopped position to the cursor position. If unexpected results are identified, the user has successfully located the source of a problem and may then take remedial steps to correct the problem.
- Typically, step operations, breakpoints, and run-to functions are used together to simplify the debugging process. For example, a common debugging operation is to set a breakpoint at the beginning of a desired set of instructions to be analyzed, and then begin executing the program. Once the breakpoint is reached, the program is halted, and the programmer then steps through the desired set of instructions line-by-line using the step operation, or runs to a selected line number. Consequently, a programmer is able to quickly isolate and analyze a particular set of instructions without having to step through irrelevant portions of a computer program.
- While the foregoing conventional debugging tools are helpful, they are also substantially limited in certain situations. In particular, object-oriented programming and other highly modular languages present some unique debugging problems not easily handled by conventional techniques.
- With an object-oriented programming language, for example, a program is constructed from a number of “objects”, each of which includes data and/or one or more sets of instructions (often referred to as “routines” or “methods”) that define specific operations that can be performed on the data. A large number of objects may be used to build a computer program, with each object interacting with other objects in the computer program to perform desired operations.
- One characteristic of an object-oriented programming language that can make debugging problematic is that object classes can have many subclasses. As a result, it can be tedious to set breakpoints where you need them. Consider the code shown in TABLE I.
TABLE I 25 while(i < 40){ 26 . 27 . 28 widget = this.getWidget(tool.foo1( ). widget.foo2( )).: 29 widget.run( ): 30 31 }
Assume that the programmer has stopped somewhere in the code prior toline 28 and wants to “step into” the method “widget.foo2( )” called at this point, i.e., from the “main” function. Using conventional debugging techniques the programmer must first get toline 28 and then use the “step into” function. The problem with this approach is that it will cause the programmer to step into “tool.foo1( )” before getting to the desired method. As an alternative, the user may set the cursor on the statement containing the method “widget.foo2( )” and then employ the “run-to-cursor” function to arrive at the statement. Upon arriving at the statement, the user must employ the “step into” function. Accordingly, this approach is labor intensive in that it requires the user to perform multiple steps. As yet another alternative, the programmer must manually identify the portion of the source code containing the method, identify the method within the code, set a breakpoint on each entry point to that method, and then after encountering the desired breakpoint manually remove all the remaining breakpoints. Such an approach is burdensome and error prone. - Another problem that is especially pronounced in highly modular languages (such as object-oriented programming) results from the fact that some instructions in a computer program are executed fairly often for different purposes, and may result in many needless stoppages before a desired stoppage is encountered. More specifically, since some methods are called by many different objects, placing a conventional breakpoint on a method may result in hundreds of unwanted stoppages prior to occurrence of a desired stoppage. This may be illustrated with the following code: foo(obj1.bar( ),obj2.bar( )); where obj1 and obj2 are both objects of the same class. Assume the programmer desires to run into obj2.bar( ). If the programmer simply examines the class hierarchy and places a breakpoint on each instance of obj2.bar( ), the program will be halted even when obj1.bar( ) is encountered.
- Therefore, there is a need for improvements in debugging computer programs to simplify and facilitating the debugging process, particularly in object-oriented environments.
- The present invention generally relates to methods, apparatus and articles of manufacture for implementing a run into function for a selected code portion.
- One embodiment provides for a computer-implemented method for debugging code comprising, while execution is halted at a first point in the code, receiving a selection of a target call site located at a second point in the code and comprising a call to a routine; and setting at least one run into breakpoint configured to halt subsequent execution only when an execution path arrives at the routine from the target call site. In one embodiment, setting the at least one run into breakpoint comprises setting the run into breakpoint on an instruction calling the routine. In this case, the function is stepped into upon encountering the breakpoint. In another embodiment, setting the at least one run into breakpoint comprises setting the run into breakpoint at each entry point to the routine. In this case, execution may be halted and a user interface returned upon encountering the breakpoint, only if it can be determined that the routine is entered from the selected target call site.
- Another embodiment provides for a computer-implemented method for debugging code comprising receiving a selection of a target call site in the code, the target call site comprising a call to a routine; establishing a breakpoint at an entry point to the selected target call site; programmatically determining call context information identifying a location of the selected target call site in the code; upon encountering the breakpoint during execution of the code, determining whether the routine is called from the selected target call site based on the stored call context information; and if so, halting execution of the code.
- Another embodiment of a computer-implemented method for debugging code comprises receiving a selection of a target call site in the code, the target call site comprising a routine having a plurality of entry points; establishing a breakpoint at each of the plurality of entry points; and programmatically determining call context information uniquely identifying the selected target call site. For each of the breakpoints encountered during execution of the code, the method further comprises determining whether the routine is called from the selected target call site based on the call context information; and if so, halting execution of the code.
- Yet another embodiment of a computer-implemented method for debugging object-oriented code comprises receiving a selection of a target call site in the code, the target call site comprising a method; identifying a plurality of entry points for the method; establishing a breakpoint at each of the plurality of entry points; determining call context information uniquely identifying the selected target call site. For each of the breakpoints encountered during execution of the code, the method further comprises determining whether the routine is called from the selected target call site based on the call context information; and if so, halting execution of the code.
- Yet another embodiment provides a computer comprising a memory; code under debug resident in the memory, the code comprising as least one target call site selected by a user and comprising a call to a routine; a breakpoint data structure resident in the memory and configured for storing at least context information indicating a location of the call within the code; and a debugger program resident in the memory. The debugger program is configured to interrupt execution of the code under debug in response to encountering a breakpoint and determining that the routine is called from the target call site as determined with reference to the context information.
- Still other embodiments include computer-readable mediums containing instructions which, when executed, perform the above methods.
- So that the manner in which the above recited features, advantages and objects of the present invention are attained and can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to the embodiments thereof which are illustrated in the appended drawings.
- It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
-
FIG. 1 is a high-level diagram of a computer, according to one embodiment of the present invention. -
FIG. 2 is a block diagram illustrating the operation of a debugger, according to one embodiment of the present invention. -
FIG. 3 is one embodiment of a user interface screen illustrating a user-implemented run into function for a selected method, according to one embodiment of the present invention. -
FIG. 4 is a breakpoint table, according to one embodiment of the present invention. - FIGS. 5A-B show a flow chart illustrating the operation of a debugger program during a run into operation, according to one embodiment of the present invention.
-
FIG. 6 shows a flow chart illustrating one embodiment of setting context sensitive breakpoints. -
FIG. 7 shows a flow chart illustrating one embodiment of setting instruction specific breakpoints. -
FIG. 8 shows a flow chart illustrating one embodiment of handling context sensitive breakpoints. -
FIG. 9 shows a flow chart illustrating one embodiment of handling instruction specific breakpoints. - The present invention provides methods, apparatus and articles of manufacture for implementing a “run into” function for a selected function of some code under debug. In particular, the user selects a function with respect to a particular target call site (i.e., the location from which the function of interest is called). The function is generally selected by a user through a user-interface screen. In one embodiment, by invoking the run into function, the debugger places a temporary breakpoint(s) at the entry point(s) to the selected function. When one of these breakpoints is encountered during execution, the debugger determines whether the function was called from the specified place in the code (i.e., the target call site) and, if so, fires the breakpoint, halting execution, and removing all related temporary breakpoints. Because the breakpoint(s) only causes execution to halt if the function is called from a particular place in the code, the breakpoint may be referred to as a “context sensitive breakpoint” or “conditional breakpoint.” In another embodiment, a single breakpoint is set at the exact location of the call instruction for the selected function. Upon encountering the breakpoint, the debugger halts execution and then performs a step into operation to step into the function. In the latter embodiment, the breakpoints are referred to herein as “instruction specific breakpoints.” In each of the embodiments, the inventive breakpoint being set is generically referred to as a “run into breakpoint.”
- One embodiment of the invention is implemented as a program product for use with a computer system such as, for example, the
computer 110 shown inFIG. 1 and described below. The program(s) of the program product defines functions of the embodiments (including the methods described herein) and can be contained on a variety of signal-bearing media. Illustrative signal-bearing media include, but are not limited to: (i) information permanently stored on non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive); (ii) alterable information stored on writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive); and (iii) information conveyed to a computer by a communications medium, such as through a computer or telephone network, including wireless communications. The latter embodiment specifically includes information downloaded from the Internet and other networks. Such signal-bearing media, when carrying computer-readable instructions that direct the functions of the present invention, represent embodiments of the present invention. - In general, the routines executed to implement the embodiments of the invention, may be part of an operating system or a specific application, component, program, module, object, or sequence of instructions. The computer program of the present invention typically is comprised of a multitude of instructions that will be translated by the native computer into a machine-readable format and hence executable instructions. Also, programs are comprised of variables and data structures that either reside locally to the program or are found in memory or on storage devices. In addition, various programs described hereinafter may be identified based upon the application for which they are implemented in a specific embodiment of the invention. However, it should be appreciated that any particular program nomenclature that follows is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature.
- In one aspect, the invention is particularly advantageous in the context of highly modular languages such as object-oriented programming languages including Java and C++. Accordingly, reference is made throughout the present application to well-known object-oriented programming constructs such as classes, objects and methods. Again, the use of particular terminology is merely for convenience or illustration, and not limiting of the invention. In some cases, different terms are used for the same or similar aspects of the invention. For example, in the claims appended below, the term “routine” or “function” may be used as a generic substitute for the term “method” to avoid any suggestion of that the invention is limited to particular object-oriented programming languages.
- Referring now to
FIG. 1 , acomputing environment 100 is shown. In general, the distributedenvironment 100 includes acomputer system 110 and a plurality ofnetworked devices 146. For simplicity, only the details of thecomputer system 110 are shown. However, it is understood that thecomputer system 110 may be representative of one or more of thenetworked devices 146. In general,computer system 110 and thenetworked devices 146 could be any type of computer, computer system or other programmable electronic device, including desktop or PC-based computers, workstations, network terminals, a client computer, a server computer, a portable computer, an embedded controller, etc. - Although shown networked into a larger system, the
computer system 110 may be a standalone device. Moreover, those skilled in the art will appreciate that embodiments may be practiced with other computer system configurations including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers and the like. The embodiment may also be practiced in distributed computing environments in which tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices. In this regard, thecomputer system 110 and one or more of thenetworked devices 146 may be thin clients which perform little or no processing. In a particular embodiment, thecomputer system 110 is an eServer® iSeries® 400 computer available from International Business Machines, Corporation of Armonk, N.Y. - The
computer system 110 could include a number of operators and peripheral systems as shown, for example, by amass storage interface 137 operably connected to a directaccess storage device 138, by aterminal interface 140 operably connected to a terminal 142, and by anetwork interface 144 operably connected to the plurality ofnetworked devices 146. The terminal 142 may be any video output device for outputting viewable information. -
Computer system 110 is shown comprising at least oneprocessor 112, which obtains instructions, or operation codes, (also known as opcodes), and data via abus 114 from amain memory 116. Theprocessor 112 could be any processor adapted to support the debugging methods, apparatus and article of manufacture of the invention. In particular, thecomputer processor 112 is selected to support the debugging features of the present invention. Illustratively, the processor is a PowerPC® processor available from International Business Machines Corporation of Armonk, N.Y. - The
main memory 116 is any memory sufficiently large to hold the necessary programs and data structures.Main memory 116 could be one or a combination of memory devices, including Random Access Memory, nonvolatile or backup memory, (e.g., programmable or Flash memories, read-only memories, etc.). In addition,memory 116 may be considered to include memory physically located elsewhere in acomputer system 110, for example, any storage capacity used as virtual memory or stored on a mass storage device or on another computer coupled to thecomputer system 110 viabus 114. - As shown, the
main memory 116 generally includes anoperating system 118, acomputer program 119, acall stack 120, acompiler 121, and a debugger program (the debugger) 123. The operating system may be any suitable operating system such as the OS/400® operating system. Thecomputer program 119 represents any code that is to be examined, edited, compiled and/or debugged. Thecall stack 120 is associated with thecomputer program 119 and utilized by theoperating system 118 during the execution of theprogram 119. Thecall stack 120 is a data structure that maintains information regarding the sequence of routines that are called during the execution of the computer program. Routines, which are often referred to as methods, procedures, and functions, are typically sequences of instructions or statements in a computer program that may be invoked to perform predetermined operations on a computer. - In one embodiment, the
debugger 123 is a graphical user interface system debugger for the eServer iSeries computer. The OS/400 operating system and the eServer iSeries computer are available from International Business Machines, Corporation of Armonk, N.Y. Although the software constructs, such as thecomputer program 119 and thedebugger 123, are shown residing on the same computer, a distributed environment is also contemplated. Thus, for example, thedebugger 123 may be located on anetworked device 146, while thecomputer program 119 to be debugged is on thecomputer system 110. - In a specific embodiment, the
debugger 123 comprises adebug user interface 124,expression evaluator 126, Dcode interpreter 128 (also referred to herein as the debug interpreter 128), debugger hook (also known as a stop handler) 134, abreakpoint manager 135, aresults buffer 136 and a breakpoint table 150. Although treated herein as integral parts of thedebugger 123, one or more of the foregoing components may exist separately in thecomputer system 110. Further, the debugger may include additional components not shown. - An illustrative debugging process is now described with reference to
FIG. 2 . A debugging process is initiated by thedebug user interface 124. Theuser interface 124 presents the program under debugging and highlights the current line of the program on which a stop or error occurs. Theuser interface 124 allows the user to set control points (e.g., breakpoints and watches), display and change variable values, and activate other inventive features described herein by inputting the appropriate commands. In the embodiments of the invention, thedebug user interface 124 also allows a user to select a method and implement a run into function with respect to the selected method. An Illustrative embodiment of theuser interface 124 for setting a run into function is described with reference toFIG. 3 . - The
expression evaluator 126 parses the debugger command passed from theuser interface 124 and uses a data structure (e.g., a table) generated by thecompiler 121 to map the line number in the debugger command to the physical memory address inmemory 116. In addition, theexpression evaluator 126 generates a Dcode program for the command. The Dcode program is machine executable language that emulates the commands. Some embodiments of the invention include Dcodes which, when executed, activate control features described in more detail below. - The Dcode generated by the
expression evaluator 126 is executed by theDcode interpreter 128. Additionally, theDcode interpreter 128 passes a replacement op code (i.e., bad operation code) for breakpoints to theprogram 119 to trigger processing of the breakpoint when the replacement op code is reached during execution ofprogram 119. As is well known in the art, a breakpoint may be detected during execution of a program by placing a known invalid instruction in the program at a desired point so that an error results when the program reaches that instruction and causes an interrupt that is then processed by the debugger. Results fromDcode interpreter 128 are returned to theuser interface 124 through theexpression evaluator 126. In addition, theDcode interpreter 128 passes on information to thedebug hook 134, which takes steps described below. - After the commands are entered, the user provides an input that resumes execution of the
program 119. During execution, control is returned to thedebugger 123 via thedebug hook 134. Thedebug hook 134 is a code segment that returns control to the appropriate user interface. In some implementations, execution of the program eventually results in an event causing a trap to fire (e.g., a breakpoint or watchpoint is encountered). Inserting and managing special op codes that cause these traps to fire is the responsibility of thebreakpoint manager 135. When a trap fires, control is then returned to the debugger by thedebug hook 134 and program execution is halted. Thedebug hook 134 then invokes thedebug user interface 124 and may pass the results to theuser interface 124. Alternatively, the results may be passed to the results buffer 136 to cache data for theuser interface 124. - The
call stack 120 may be utilized during the execution of theprogram 119. A call stack is a last in-first out (LIFO) data structure. In response to a routine call from a first routine to a second routine, an operating system will generally “push” onto the top of the call stack an entry that identifies both the first routine, as well as the specific instruction or statement in that routine from which the routine call was made (or alternatively, the instruction or statement in that routine to which control should be returned upon completion of the second routine). The second routine is then executed, and if that routine calls an additional routine, an entry relating to that routine call is also added to the stack. As routines terminate in execution, entries from the call stack are then “popped” from the top of the stack and the information therein analyzed to determine the routine and instruction therein where control should be returned. - Referring now to
FIG. 3 , one embodiment of theuser interface 124 for setting run into functions is shown. In general, a run into function may be implemented for any method in the code. Illustratively, auser interface screen 300 of theuser interface 124 is shown in which a user has selected amethod 304 shown in asource code panel 302. Amenu 308 is then invoked from which a “Run Into”menu item 306 is selected to implement a run into function. Themenu 308 may be accessed in any variety of ways, including right-clicking a mouse after themethod 304 has been selected. - In the present example the user has selected the method “foo2( )” for the object “widget.” This may be done, for example, highlighting the method or placing the cursor on the method (e.g., in the middle of “foo2( )” or “widget.foo2( )”) and letting the debugger parse the method name. In any case, the intention of the user is to halt execution of the program only when the particular selected method “foo2( )” is encountered. That is, execution is halted only when “foo2( )” is called from the selected call site, i.e., from
line 28 of the “main” routine. One embodiment of the present invention facilitates this objective by examining the context of the breakpoint and halting execution only when specified context criteria is met, as will be described in more detail below. Another embodiment facilitates this objective by executing to the call site of the method, stepping into it and then returning control to a user via a user interface. - In one embodiment, the inventive run into function is implemented by setting breakpoints whose location is recorded in the breakpoint table 150 (
FIG. 1 ). One embodiment of the breakpoint table 150 is shown inFIG. 4 . In general, the breakpoint table 150 provides some aspects which are well-known in the art in combination with some inventive features. For example, as is well-known, an op code (operation code)column 404 and anaddress column 406 are shown. The information contained under theaddress column 406 specifies a memory address of a breakpoint. The information contained under theop code column 404 specifies the original operation code of the program which has been replaced with some “bad” operation code at the corresponding address in theaddress column 402. Astatement column 402 contains information regarding the statement at which a method is selected for setting a breakpoint. - In one embodiment, a user may elect to invoke the run into function with respect to multiple function calls. Further, a given invocation of the run into function results in multiple breakpoints being set. Accordingly, two or more run into breakpoints may be set for each invocation of the run into function (i.e., one breakpoint for each instance of a selected method). Accordingly, a technique is needed to identify a set of breakpoints related to a given invocation of the run into function (i.e., for a given selection of a function call to run into). To this end, the run into
column 408 stores a run into function number used in one embodiment of the invention. For example, the first and fourth record of the table 150 contain the same run into number, 11, indicating that these two records are for the same selected method. In one embodiment, the run into number is generated by a number generation code portion. The information contained in thestack position column 410 specifies the function (i.e., routine) in which the breakpoint is set and from which the selected method is called. Upon encountering a breakpoint during execution of the computer program under debug, a test may be performed to determine whether a function stored in thestack position column 410 is the function in which the encountered breakpoint is set. - Referring now to
FIG. 5 , amethod 500 of operating thedebugger 123 in a manner consistent with embodiments of the present invention is shown. Referring first toFIG. 5A , an illustrative operation for setting run into breakpoints is shown. Upon receiving an event for processing (step 504) thedebugger 123 determines whether the event is a run into function request (step 506). That is, a determination is made as to whether the user is setting a run into breakpoint for a selected method. If so, thedebugger 123 resolves (i.e., parses) the function call (step 508) to facilitate classification. Then, the necessary run into breakpoints are set (step 510). Thedebugger 123 then resumes executing the program (step 512) until the next event (step 504). Embodiments for setting run into breakpoints (at step 510) are described with respect toFIG. 6 andFIG. 7 . - Referring first to
FIG. 6 , a method for setting context sensitive breakpoints is shown. That is, a user specifies a method call at which to halt execution, on the condition that the method call is made from a selected target site. To this end, the debugger obtains a run into number for subsequently storing it in the breakpoint table in later steps (step 602). - Having resolved the function call at step 508 (
FIG. 5A ), the debugger can then determine whether the selected call involves an object (step 604). In one embodiment, this step generally distinguishes non-object oriented languages from object oriented languages; although even an object oriented language may include a method that does not involve an object. If the selected call does not involve an object, the debugger may simply set breakpoints on each entry point to the method (step 606); that is, the fields of the first three columns of the breakpoint table 150 are populated. Otherwise, the debugger obtains the object type of the object involved with the selected function (at step 608) to identify cases where the function may have been overridden. Persons skilled in the art will appreciate that a fundamental feature of object-oriented programming is that classes can be related to one another by inheritance. The properties, behaviors, data and operations of a parent, or “base,” class may be inherited without modification by some child, or “derived,” class, or the behavior, properties and operations may be selectively refined under the control of the programmer in the derived class. The latter function is generally referred to as overriding. The function name remains the same, but the changed or overridden function operates on a different type. When defining a derived class, one may start by building on an existing base class which is similar to the one to be created. The derived class inherits the implementation and behavior of the base class, including its functions, except as modified by overriding amendments detailed in the derived class definition. For example, there may be anobject type 2 which is derived from and inherited properties of anobject type 1. Some functions inobject type 1 may be overridden (modified). Illustratively, ifobject type 1 has a size method that was overridden inobject type 2, there now exist two size methods that relate to anobject type 1. To ensure breakpoints are set for both methods, the debugger obtains the object type for a function and then traverses the class hierarchy searching for those objects that are based from this object type and override this same function. Accordingly it may be necessary to get the object type (step 608) and then insert breakpoints for each matching function within the class hierarchy of the object (step 610). Techniques for resolving object type are well known in the art and are not further described here. - After the run into breakpoints are set, the call site of the selected method is identified (step 612). The call site refers to the location or context of the selected method; i.e., where the method is being called from. The information identifying the call site is referred to herein as “calling context information.” It is contemplated that the level of granularity of the “calling context information” is selectable according to the particular implementation, but preferably the “calling context information” uniquely (i.e., unambiguously) identifies the call site. Unambiguous identification of the call site may be necessary, for example, where two or more objects are objects of the same class. Consider the following code: foo(obj1.bar( ), obj2.bar( )), where obj1 and obj2 are of the same class. Now assume the user desires to run into obj2.bar( ). Without unique identification of the call site, execution may halt at obj1.bar( ).
- The particular technique for unambiguously identifying the call site may vary depending on the particular implementation. In one embodiment, the line number of the call site is known and is mapped to information (i.e., the “calling context information”) that will appear on the
call stack 120, e.g., a statement number or address. This information is then stored in the breakpoint table 150 in the appropriate record(s) set for each breakpoint atsteps 606 or 610 (step 614). Thedebugger 123 then resumes executing the program (step 512) until the next event (step 504), as shown inFIG. 5A . - Referring now to
FIG. 7 , a method for setting instruction specific breakpoints is shown. In particular, the exact location of the call instruction for the selected function is determined (step 702). This may the same processing as is performed atstep 612 described above with reference toFIG. 6 . A run into breakpoint is then set at the determined instruction location (step 704). - Returning to step 506 of
FIG. 5A , if the debug event is not a run into request, thedebugger 123 determines (at step 526) whether the event is an encountered breakpoint. Ifstep 526 is answered negatively, the event is handled in an appropriate way (step 528). If, however, the event is a breakpoint hit, then the debugger determines whether the breakpoint is a run into breakpoint (530). - If the breakpoint is not a run into breakpoint, then the debugger determines whether a run into skipping operation is active (step 532). In one embodiment, the run into skipping operation may be utilized to provide added flexibility for processing non-run-into breakpoints prior to completing a run into operation. When the skipping operation is active, non-run-into breakpoints may be ignored and program execution may be resumed. If the process is not active, then all other breakpoints are processed as normal (step 534). Of course, other features and functionality may be added to the
debugger 123. For example, other conditions may be placed on a run into breakpoint. Illustrative conditions include a value on a certain parameter or some instance variable. Persons skilled in the art will recognize other embodiments. - Referring back to step 530, when the breakpoint is a run into breakpoint, the debugger takes appropriate action depending on whether the breakpoint is a context sensitive breakpoint or an instruction specific breakpoint (step 532). In particular, a determination is made whether the breakpoint encountered results halting execution (step 534). Embodiments of
step 532 are described inFIGS. 8 and 9 . - Referring first to
FIG. 8 , a flow chart is shown illustrating an operation performed when the breakpoint encountered is a context sensitive run into breakpoint. The debugger compares the call stack with the saved information in the stack position column of the breakpoint table 150 to determine whether the breakpoint was called from the desired function (step 802). If the contents do not match, the function is not called from the desired location and, therefore, program execution is resumed with no other action (i.e., processing proceeds to step 512 ofFIG. 5A ). If the statement number and the function name match with the contents of the call stack, however, then all run into breakpoints associated with the same run into number are removed (step 804) and program execution is halted (steps FIG. 5B ). - Referring now to
FIG. 9 , a flow chart is shown illustrating an operation performed when the breakpoint encountered is an instruction specific run into breakpoint. If so, execution is currently at the instruction call to the selected function. Accordingly, the debugger performs a conventional step into operation to advance the debugger's stopped position into the function of interest (step 902). The debugger then halts (steps FIG. 5B ). - While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
Claims (15)
1. A computer-implemented method of debugging object-oriented code, the method comprising:
receiving a user-selection of a method call at a location in the object-oriented code;
parsing, by a debugger, the selected method call, wherein parsing the selected method call comprises:
determining a base class of the method call;
determining one or more override methods, wherein each override method is associated with a derived class of the base class, and a name of the method call;
setting a respective breakpoint at a respective entry point of:
the method call; and
each of the one or more override methods; and
during execution of the object-oriented code under debug, determining whether a method that executed one of the respective breakpoints is called from the location in the object-oriented code.
2. The method of claim 1 , wherein the user selection is made through a graphical user interface.
3. The method of claim 1 , further comprising receiving a user variable command, containing:
a variable identifier associated with a variable of the object-oriented code; and
a new value associated with the variable; and
in response to receiving the user variable command, changing a value associated with the variable to the new value.
4. The method of claim 1 wherein if the method that executed the one of the respective breakpoints is called from the location in the object-oriented code, further comprises halting execution.
5. The method of claim 4 , wherein the user selection is made through a graphical user interface.
6. A computer readable storage medium containing a program which, when executed performs an operation comprising:
receiving a user-selection of a method call at a location in the object-oriented code;
parsing, by a debugger, the selected method call, wherein parsing the selected method call comprises:
determining a base class of the method call;
determining one or more override methods, wherein each override method is associated with a derived class of the base class, and a name of the method call;
setting a respective breakpoint at a respective entry point of:
the method call; and
each of the one or more override methods; and
during execution of the object-oriented code under debug, determining whether a method that executed one of the respective breakpoints is called from the location in the object-oriented code.
7. The computer readable storage medium 6, wherein the user selection is made through a graphical user interface.
8. The computer readable storage medium 6, further comprising receiving a user variable command, containing:
a variable identifier associated with a variable of the object-oriented code; and
a new value associated with the variable; and
in response to receiving the user variable command, changing a value associated with the variable to the new value.
9. The computer readable storage medium 6 wherein if the method that executed the one of the respective breakpoints is called from the location in the object-oriented code, further comprises halting execution.
10. The computer readable storage medium 9, wherein the user selection is made through a graphical user interface.
11. A system, comprising:
a processor;
a memory containing a program which, when executed by the processor, is configured to:
receive a user-selection of a method call at a location in the object-oriented code;
parse the selected method call, wherein parsing the selected method call comprises:
determining a base class of the method call;
determining one or more override methods, wherein each override method is associated with a derived class of the base class, and a name of the method call;
setting a respective breakpoint at a respective entry point of:
the method call; and
each of the one or more override methods; and
during execution of the object-oriented code under debug, determine whether a method that executed one of the respective breakpoints is called from the location in the object-oriented code.
12. The system of claim 11 , wherein the user selection is made through a graphical user interface.
13. The system of claim 11 , wherein the program is further configured to:
receive a user variable command, containing:
a variable identifier associated with a variable of the object-oriented code; and
a new value associated with the variable; and
in response to receiving the user variable command, change a value associated with the variable to the new value.
14. The system of claim 11 wherein the program is further configured to halt execution if the method that executed the one of the respective breakpoints is called from the location in the object-oriented code.
15. The system of claim 14 , wherein the user selection is made through a graphical user interface.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/850,548 US20070300209A1 (en) | 2003-09-18 | 2007-09-05 | Run into function |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/666,033 US7299456B2 (en) | 2003-09-18 | 2003-09-18 | Run into function |
US11/850,548 US20070300209A1 (en) | 2003-09-18 | 2007-09-05 | Run into function |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/666,033 Continuation US7299456B2 (en) | 2003-09-18 | 2003-09-18 | Run into function |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070300209A1 true US20070300209A1 (en) | 2007-12-27 |
Family
ID=34313005
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/666,033 Expired - Fee Related US7299456B2 (en) | 2003-09-18 | 2003-09-18 | Run into function |
US11/850,548 Abandoned US20070300209A1 (en) | 2003-09-18 | 2007-09-05 | Run into function |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/666,033 Expired - Fee Related US7299456B2 (en) | 2003-09-18 | 2003-09-18 | Run into function |
Country Status (1)
Country | Link |
---|---|
US (2) | US7299456B2 (en) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070240123A1 (en) * | 2006-02-09 | 2007-10-11 | Bustelo Leugim A | Method for creating software debug breakpoints activated by specific call patterns |
US20090083698A1 (en) * | 2004-09-30 | 2009-03-26 | Rockwell Automation Technologies, Inc. | Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution |
US20100251026A1 (en) * | 2009-03-26 | 2010-09-30 | International Business Machines Corporation | Debugging program function |
US20110126175A1 (en) * | 2009-11-20 | 2011-05-26 | Fujitsu Limited | Debugging method and debugging device using hardware breakpoints |
US20120072777A1 (en) * | 2009-05-27 | 2012-03-22 | Mitsubishi Electric Corporation | Debugging device, debugging method, and computer program for sequence program |
EP2506145A1 (en) * | 2009-12-14 | 2012-10-03 | Huawei Technologies Co., Ltd. | Method and device for pass-by breakpoint setting and debugging |
US20130019228A1 (en) * | 2011-07-15 | 2013-01-17 | International Business Machines Corporation | Resuming A Prior Debug Session |
US20130111447A1 (en) * | 2011-10-27 | 2013-05-02 | International Business Machines Corporation | Supporting debugging of program and graphical user interface for supporting debugging |
US20140258985A1 (en) * | 2013-03-07 | 2014-09-11 | Oracle International Corporation | Debugger With Method Restart Capability |
US8917723B2 (en) | 2009-12-07 | 2014-12-23 | Huawei Technologies Co., Ltd. | Method, device, and system for processing IPv6 packet |
US20150033211A1 (en) * | 2013-07-29 | 2015-01-29 | International Business Machines Corporation | Program debugger and program debugging |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8020148B2 (en) * | 2002-09-23 | 2011-09-13 | Telefonaktiebolaget L M Ericsson (Publ) | Bi-directional probing and testing of software |
US7299456B2 (en) * | 2003-09-18 | 2007-11-20 | International Business Machines Corporation | Run into function |
US7353427B2 (en) * | 2004-04-08 | 2008-04-01 | International Business Machines Corporation | Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions |
US8490064B2 (en) * | 2004-05-21 | 2013-07-16 | Oracle International Corporation | Hierarchical debug |
US20070078538A1 (en) * | 2005-09-30 | 2007-04-05 | Omron Corporation | Debug device |
US7765526B2 (en) * | 2005-09-30 | 2010-07-27 | Intel Corporation | Management of watchpoints in debuggers |
WO2007122639A2 (en) * | 2006-04-26 | 2007-11-01 | Tata Consultancy Services | A system and method for pattern based services extraction |
US20080244516A1 (en) * | 2007-03-26 | 2008-10-02 | Microsoft Corporation | Variable capture in object oriented languages |
US8656377B2 (en) | 2010-06-10 | 2014-02-18 | Microsoft Corporation | Tracking variable information in optimized code |
US20120079459A1 (en) * | 2010-09-29 | 2012-03-29 | International Business Machines Corporation | Tracing multiple threads via breakpoints |
US8806447B2 (en) | 2010-10-29 | 2014-08-12 | International Business Machines Corporation | Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints |
US8843899B2 (en) | 2010-10-29 | 2014-09-23 | International Business Machines Corporation | Implementing a step-type operation during debugging of code using internal breakpoints |
US9015676B2 (en) | 2010-10-29 | 2015-04-21 | International Business Machines Corporation | Varying removal of internal breakpoints during debugging of code |
US9575758B2 (en) | 2010-11-22 | 2017-02-21 | Nxp Usa, Inc. | Method for setting breakpoints, and an integrated circuit and debug tool therefor |
US20140282414A1 (en) * | 2013-03-14 | 2014-09-18 | Cadence Design Systems, Inc. | Method and system for debugging of a program |
US9507691B2 (en) * | 2014-01-10 | 2016-11-29 | International Business Machines Corporation | Conditional component breakpoint setting system and method |
US9619368B2 (en) * | 2015-01-29 | 2017-04-11 | Nxp Usa, Inc. | Method of testing software |
CN107015846B (en) * | 2017-04-14 | 2020-08-14 | 直觉系统科技(昆山)有限公司 | Simulation method and device for realizing eukaryon simulation of processor |
US10853105B2 (en) | 2017-09-20 | 2020-12-01 | Citrix Systems, Inc. | Java native interface and Windows Universal app hooking |
US11392482B2 (en) * | 2019-01-03 | 2022-07-19 | Microsoft Technology Licensing, Llc | Data breakpoints on certain kinds of functions |
CN112256570B (en) * | 2020-10-19 | 2023-08-11 | 网易(杭州)网络有限公司 | Remote debugging method, device, equipment and storage medium |
Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5050168A (en) * | 1989-12-29 | 1991-09-17 | Paterson Timothy L | Test coverage analyzer |
US5093914A (en) * | 1989-12-15 | 1992-03-03 | At&T Bell Laboratories | Method of controlling the execution of object-oriented programs |
US5560009A (en) * | 1990-09-21 | 1996-09-24 | Hewlett-Packard Company | Generating symbolic debug information by merging translation and compiler debug information |
US5815653A (en) * | 1995-11-13 | 1998-09-29 | You; Lawrence L. | Debugging system with portable debug environment-independent client and non-portable platform-specific server |
US5819093A (en) * | 1995-03-03 | 1998-10-06 | Sun Microsystems, Inc. | System and method for a distributed debugger for debugging distributed application programs |
US5845125A (en) * | 1993-06-21 | 1998-12-01 | Kabushiki Kaisha Toshiba | Debugger using class information and dynamic instance inter-relationships |
US5889981A (en) * | 1996-05-07 | 1999-03-30 | Lucent Technologies Inc. | Apparatus and method for decoding instructions marked with breakpoint codes to select breakpoint action from plurality of breakpoint actions |
US5933639A (en) * | 1996-05-17 | 1999-08-03 | International Business Machines Corporation | System and method for debugging distributed programs |
US6016474A (en) * | 1995-09-11 | 2000-01-18 | Compaq Computer Corporation | Tool and method for diagnosing and correcting errors in a computer program |
US6077312A (en) * | 1998-05-06 | 2000-06-20 | International Business Machines Corporation | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint |
US6081783A (en) * | 1997-11-14 | 2000-06-27 | Cirrus Logic, Inc. | Dual processor digital audio decoder with shared memory data transfer and task partitioning for decompressing compressed audio data, and systems and methods using the same |
US6145123A (en) * | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
US6158045A (en) * | 1995-11-13 | 2000-12-05 | Object Technology Licensing Corporation | Portable debugging services utilizing a client debugger object and a server debugger object with flexible addressing support |
US6240545B1 (en) * | 1997-07-25 | 2001-05-29 | International Business Machines Corporation | Setting instance breakpoints in object oriented computer programs |
US6412106B1 (en) * | 1999-06-16 | 2002-06-25 | Intervoice Limited Partnership | Graphical system and method for debugging computer programs |
US20030028862A1 (en) * | 2001-08-01 | 2003-02-06 | International Business Machines Corporation | Debugger impact reduction through motion of induction variable based breakpoints |
US20030106046A1 (en) * | 2001-11-30 | 2003-06-05 | International Business Machines Corporation | Inheritance breakpoints for use in debugging object-oriented computer programs |
US6618853B1 (en) * | 1998-10-10 | 2003-09-09 | Advantest Corporation | Program production system for semiconductor tester |
US6983454B2 (en) * | 2002-03-29 | 2006-01-03 | International Business Machines Corporation | Extended “run to” function |
US20060039621A1 (en) * | 2004-08-18 | 2006-02-23 | Toebes John A | Two-dimensional variable length coding of runs of zero and non-zero transform coefficients for image compression |
US7047521B2 (en) * | 2001-06-07 | 2006-05-16 | Lynoxworks, Inc. | Dynamic instrumentation event trace system and methods |
US20070074168A1 (en) * | 2005-09-29 | 2007-03-29 | International Business Machines Corporation | Automated step type determination |
US7299456B2 (en) * | 2003-09-18 | 2007-11-20 | International Business Machines Corporation | Run into function |
US8015541B1 (en) * | 2002-10-24 | 2011-09-06 | Rage Frameworks, Inc. | Business process technology for the enterprise |
-
2003
- 2003-09-18 US US10/666,033 patent/US7299456B2/en not_active Expired - Fee Related
-
2007
- 2007-09-05 US US11/850,548 patent/US20070300209A1/en not_active Abandoned
Patent Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5093914A (en) * | 1989-12-15 | 1992-03-03 | At&T Bell Laboratories | Method of controlling the execution of object-oriented programs |
US5050168A (en) * | 1989-12-29 | 1991-09-17 | Paterson Timothy L | Test coverage analyzer |
US5560009A (en) * | 1990-09-21 | 1996-09-24 | Hewlett-Packard Company | Generating symbolic debug information by merging translation and compiler debug information |
US5845125A (en) * | 1993-06-21 | 1998-12-01 | Kabushiki Kaisha Toshiba | Debugger using class information and dynamic instance inter-relationships |
US5819093A (en) * | 1995-03-03 | 1998-10-06 | Sun Microsystems, Inc. | System and method for a distributed debugger for debugging distributed application programs |
US6016474A (en) * | 1995-09-11 | 2000-01-18 | Compaq Computer Corporation | Tool and method for diagnosing and correcting errors in a computer program |
US5815653A (en) * | 1995-11-13 | 1998-09-29 | You; Lawrence L. | Debugging system with portable debug environment-independent client and non-portable platform-specific server |
US6158045A (en) * | 1995-11-13 | 2000-12-05 | Object Technology Licensing Corporation | Portable debugging services utilizing a client debugger object and a server debugger object with flexible addressing support |
US5889981A (en) * | 1996-05-07 | 1999-03-30 | Lucent Technologies Inc. | Apparatus and method for decoding instructions marked with breakpoint codes to select breakpoint action from plurality of breakpoint actions |
US5933639A (en) * | 1996-05-17 | 1999-08-03 | International Business Machines Corporation | System and method for debugging distributed programs |
US6240545B1 (en) * | 1997-07-25 | 2001-05-29 | International Business Machines Corporation | Setting instance breakpoints in object oriented computer programs |
US6081783A (en) * | 1997-11-14 | 2000-06-27 | Cirrus Logic, Inc. | Dual processor digital audio decoder with shared memory data transfer and task partitioning for decompressing compressed audio data, and systems and methods using the same |
US6077312A (en) * | 1998-05-06 | 2000-06-20 | International Business Machines Corporation | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint |
US6145123A (en) * | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
US6618853B1 (en) * | 1998-10-10 | 2003-09-09 | Advantest Corporation | Program production system for semiconductor tester |
US6412106B1 (en) * | 1999-06-16 | 2002-06-25 | Intervoice Limited Partnership | Graphical system and method for debugging computer programs |
US7047521B2 (en) * | 2001-06-07 | 2006-05-16 | Lynoxworks, Inc. | Dynamic instrumentation event trace system and methods |
US20030028862A1 (en) * | 2001-08-01 | 2003-02-06 | International Business Machines Corporation | Debugger impact reduction through motion of induction variable based breakpoints |
US20030106046A1 (en) * | 2001-11-30 | 2003-06-05 | International Business Machines Corporation | Inheritance breakpoints for use in debugging object-oriented computer programs |
US6983454B2 (en) * | 2002-03-29 | 2006-01-03 | International Business Machines Corporation | Extended “run to” function |
US8015541B1 (en) * | 2002-10-24 | 2011-09-06 | Rage Frameworks, Inc. | Business process technology for the enterprise |
US7299456B2 (en) * | 2003-09-18 | 2007-11-20 | International Business Machines Corporation | Run into function |
US20060039621A1 (en) * | 2004-08-18 | 2006-02-23 | Toebes John A | Two-dimensional variable length coding of runs of zero and non-zero transform coefficients for image compression |
US20070074168A1 (en) * | 2005-09-29 | 2007-03-29 | International Business Machines Corporation | Automated step type determination |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8365145B2 (en) | 2004-09-30 | 2013-01-29 | Rockwell Automation Technologies, Inc. | Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution |
US20090083698A1 (en) * | 2004-09-30 | 2009-03-26 | Rockwell Automation Technologies, Inc. | Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution |
US20090083525A1 (en) * | 2004-09-30 | 2009-03-26 | Rockwell Automation Technologies, Inc. | Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution |
US9250897B2 (en) | 2004-09-30 | 2016-02-02 | Rockwell Automation Technologies, Inc. | Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution |
US7735069B2 (en) * | 2006-02-09 | 2010-06-08 | International Business Machines Corporation | Creating software debug breakpoints activated by specific call patterns |
US20070240123A1 (en) * | 2006-02-09 | 2007-10-11 | Bustelo Leugim A | Method for creating software debug breakpoints activated by specific call patterns |
US20100251026A1 (en) * | 2009-03-26 | 2010-09-30 | International Business Machines Corporation | Debugging program function |
US8661417B2 (en) * | 2009-03-26 | 2014-02-25 | International Business Machines Corporation | Debugging program function |
US20120072777A1 (en) * | 2009-05-27 | 2012-03-22 | Mitsubishi Electric Corporation | Debugging device, debugging method, and computer program for sequence program |
US20110126175A1 (en) * | 2009-11-20 | 2011-05-26 | Fujitsu Limited | Debugging method and debugging device using hardware breakpoints |
US8917723B2 (en) | 2009-12-07 | 2014-12-23 | Huawei Technologies Co., Ltd. | Method, device, and system for processing IPv6 packet |
EP2506145A1 (en) * | 2009-12-14 | 2012-10-03 | Huawei Technologies Co., Ltd. | Method and device for pass-by breakpoint setting and debugging |
US8555256B2 (en) | 2009-12-14 | 2013-10-08 | Huawei Technologies, Co., Ltd. | Pass-by breakpoint setting and debugging method and device |
EP2506145A4 (en) * | 2009-12-14 | 2012-12-12 | Huawei Tech Co Ltd | Method and device for pass-by breakpoint setting and debugging |
US8566799B2 (en) * | 2011-07-15 | 2013-10-22 | International Business Machines Corporation | Resuming a prior debug session |
US20130019228A1 (en) * | 2011-07-15 | 2013-01-17 | International Business Machines Corporation | Resuming A Prior Debug Session |
US8752024B2 (en) * | 2011-07-15 | 2014-06-10 | International Business Machines Corporation | Resuming a prior debug session |
US20130086559A1 (en) * | 2011-07-15 | 2013-04-04 | International Business Machines Corporation | Resuming a prior debug session |
US20130111447A1 (en) * | 2011-10-27 | 2013-05-02 | International Business Machines Corporation | Supporting debugging of program and graphical user interface for supporting debugging |
US9740592B2 (en) * | 2011-10-27 | 2017-08-22 | International Business Machines Corporation | Supporting debugging of program and graphical user interface for supporting debugging |
US20140258985A1 (en) * | 2013-03-07 | 2014-09-11 | Oracle International Corporation | Debugger With Method Restart Capability |
US20150339211A1 (en) * | 2013-03-07 | 2015-11-26 | Oracle International Corporation | Debugger With Method Restart Capability |
US9122798B2 (en) * | 2013-03-07 | 2015-09-01 | Oracle International Corporation | Debugger with method restart capability |
US9792198B2 (en) * | 2013-03-07 | 2017-10-17 | Oracle International Corporation | Debugger with method restart capability |
US9176848B2 (en) * | 2013-07-29 | 2015-11-03 | International Business Machines Corporation | Program debugger and program debugging |
US20150033211A1 (en) * | 2013-07-29 | 2015-01-29 | International Business Machines Corporation | Program debugger and program debugging |
Also Published As
Publication number | Publication date |
---|---|
US20050066313A1 (en) | 2005-03-24 |
US7299456B2 (en) | 2007-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7299456B2 (en) | Run into function | |
US6658649B1 (en) | Method, apparatus and article of manufacture for debugging a user defined region of code | |
US6854073B2 (en) | Debugger program time monitor | |
US8028278B2 (en) | Method of generating and utilizing debug history | |
US6378125B1 (en) | Debugger thread identification points | |
US7178135B2 (en) | Scope-based breakpoint selection and operation | |
US8423969B2 (en) | Inheritance breakpoints for use in debugging object-oriented computer programs | |
US7047519B2 (en) | Dynamic setting of breakpoint count attributes | |
US6964036B2 (en) | Descriptive variables while debugging | |
US7080360B2 (en) | Breakpoint safety net | |
US6077312A (en) | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint | |
US6634020B1 (en) | Uninitialized memory watch | |
US6067641A (en) | Demand-based generation of symbolic information | |
US7478366B2 (en) | Debugger and method for debugging computer programs across multiple programming languages | |
US7644394B2 (en) | Object-oriented creation breakpoints | |
US9015676B2 (en) | Varying removal of internal breakpoints during debugging of code | |
US20030208746A1 (en) | Conditional breakpoint encountered indication | |
US20070074168A1 (en) | Automated step type determination | |
US8843899B2 (en) | Implementing a step-type operation during debugging of code using internal breakpoints | |
US7089535B2 (en) | Code coverage with an integrated development environment | |
US7577942B2 (en) | Efficient monitoring of program variables under debug | |
US20030041315A1 (en) | Debugger with automatic detection of control points influencing program behavior | |
US6978399B2 (en) | Debug thread termination control points | |
US20030131342A1 (en) | Debugger with activity alert | |
US8806447B2 (en) | Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |