US20050273765A1 - Object-oriented creation breakpoints - Google Patents
Object-oriented creation breakpoints Download PDFInfo
- Publication number
- US20050273765A1 US20050273765A1 US11/197,895 US19789505A US2005273765A1 US 20050273765 A1 US20050273765 A1 US 20050273765A1 US 19789505 A US19789505 A US 19789505A US 2005273765 A1 US2005273765 A1 US 2005273765A1
- Authority
- US
- United States
- Prior art keywords
- breakpoint
- breakpoints
- creation
- creators
- class
- 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
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/3644—Software debugging by instrumenting at runtime
Definitions
- the invention is generally related to computers and computer software. More specifically, the invention is generally related to debugging computer programs, particularly in the field of object-oriented programming (OOP) technology.
- OOP object-oriented programming
- Debuggers are software tools that can be used to diagnose computer programs and trace errors that arise during execution of the program. Debuggers are commonly used during the development of computer programs, to verify that a program under development operates as intended.
- debugger To support a debugger, information describing symbols and types in the program as well as information to map between source (human readable) and executable (machine readable) code is typically required. In the case of compiled programs, a compiler can often produce this information. This extra information, generally referred to as debugging information, enables a programmer to examine the types, variables and data structures used in a program by name and to follow the execution of the program through the source code.
- a number of debugging techniques can be used to enable a programmer to properly analyze a program to detect points in the program where errors occur.
- One such technique is to put a breakpoint into the program, at a point in the program where it is desirable for normal operation to be suspended automatically when certain conditions are met. Breakpoints are useful for program testing. They are specified by programmers so that interim results of processing can be inspected, and then programs can be restarted to continue running normally.
- breakpoints are generally set on specific statements within functions or methods; program execution is suspended each time the particular statement is called.
- breakpoints may also be specified to be “conditional” so that execution is suspended by a breakpoint only when a particular condition associated with that breakpoint is met (e.g., after the breakpoint has been hit Xtimes).
- Statement-based breakpoints have been found to be very useful for debugging program bugs and inefficiencies in traditional procedural languages that are sequential in nature.
- object-oriented languages which have found increasing acceptability as programming languages, are based on quite a different concept.
- Object-oriented programs are typically created using a set of language tools, abstractions and constructs that support a particular form of user-defined type called a “class”.
- a class functions as a template, and associates a collection of declared data with a set of operations capable of being performed on that data, i.e., methods capable of being called on the data.
- objects are dynamically created during runtime using the classes as templates. The creation of a new object is often referred to as “instantiation,” whereby an object is an “instance” of a class.
- 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.
- When defining a derived class one may start by building on an existing base class that is similar to the one to be created.
- the derived class inherits the implementation and behavior of the base class, including its methods and data, except as modified by overriding amendments detailed in the derived class definition.
- Several classes can inherit the behaviors of a common parent, and in some object-oriented languages a derived class may inherit from more than one base class.
- objects are instantiated, or created as needed, and built from the templates defined by their respective classes.
- constructors or creators, that are called upon an object's creation.
- constructor methods are typically defined in each class, while a default constructor method may be defined for some classes when no explicit method is defined by the developer.
- Constructor methods typically specify particular call signatures that define the types of data values expected by those methods, so that, when object creation is initiated, the data values supplied therewith can be analyzed to locate a matching constructor method, and the matching constructor method can then be executed.
- a programmer may wish to track the number of objects that are created for a particular class. As an example, a programmer may wish to verify that an excessive number of objects are not created for a particular purpose, e.g., in a database environment, where a programmer might intend for no more than 10 database connections to be active at any given time.
- a programmer could manually count the number of object creations; however, doing so could be unduly burdensome when tens, hundreds or thousands of objects are normally created in a program.
- a programmer could utilize conditional breakpoints in each constructor method to trigger only after a certain number of hits. However, given that each breakpoint would independently track the number of times it was hit, and given that a programmer may not know the relative frequency that each constructor method for a particular object is called, the programmer would still not be able to be notified after a specific number of objects were created.
- the invention addresses these and other problems associated with the prior art by providing an apparatus, program product, and method of debugging an object-oriented computer program that facilitate the tracking of object creation operations by multiple creators for a particular class defined in a computer program.
- an object-oriented computer program is debugged using a plurality of breakpoints set for a plurality of creators for a class defined in the object-oriented computer program. Specifically, in response to user input, a plurality of creators for the class are identified, and a plurality of breakpoints are set on the identified creators. Execution of the object-oriented computer program is then halted during debugging in response to hitting any of the plurality of breakpoints.
- the plurality of breakpoints are associated with a “creation” breakpoint, whereby user input received from a programmer or other user is directed toward performing operations on the creation breakpoint, rather than the breakpoints set on the various creators.
- Functionality within the debugger thus manages the plurality of breakpoints as a collective group. Irrespective of whether the plurality of breakpoints are associated with a common creation breakpoint, however, through the automated identification of creators for a class in response to user input, a programmer or other user is relieved of the burden of manually identifying creators and setting individual breakpoints on the different creators for a particular class.
- an object-oriented computer program is debugged by tracking a number of object creations of a class defined in the object-oriented computer program during debugging, and halting execution of the object-oriented computer program in response to the number of object creations meeting a condition.
- object creations are tracked across multiple creators.
- FIG. 1 is a block diagram of a computer system incorporating a debugger supporting object-oriented creation breakpoints consistent with the invention.
- FIG. 2 is a block diagram of the principal software components in the debugger of FIG. 1 .
- FIG. 3 is an exemplary data structure implementation for the breakpoint table of FIG. 2 .
- FIG. 4 is a flow diagram for a set breakpoint routine executed by the debugger of FIG. 2 .
- FIG. 5 is a breakpoint hit routine executed by the debugger of FIG. 2 .
- FIG. 6 is a remove breakpoint routine executed by the debugger of FIG. 2 .
- FIG. 7 is an illustrative example of an object-oriented computer program having a class defining multiple creators.
- the embodiments illustrated hereinafter facilitate the debugging of object-oriented computer programs by tracking the execution of a multiple creators for classes defined in such computer programs. Typically, such tracking occurs through the use of “creation” breakpoints that permit tracking of multiple creators to be managed in a collective manner.
- Creators are typically implemented via constructor methods in many object-oriented programming environments, although it is envisioned that other environments may utilize default or other creators that are not explicitly defined by a programmer, but rather are implicitly defined. In still other environments, no methods may be called in response to creation of an object. Nonetheless, it may be beneficial to define this default condition, in which no method as called, to be analogous to one “creator” for the class.
- Creation breakpoints typically have associated therewith multiple breakpoints that are set on the various creators for a particular class, and typically on specific statements within such creators. Moreover, the multiple breakpoints are typically managed in a collective manner through user interaction with a creation breakpoint, e.g., so that the breakpoints can be collectively set or removed in response to particular user input, rather than being managed individually through user interaction with each breakpoint. While some environments may support interaction with individual breakpoints associated with a creation breakpoint, in the embodiments discussed hereinafter, the individual breakpoints are essentially hidden from the user (e.g., a programmer, developer, program tester, etc.) such that only interaction with the creation breakpoint itself is principally supported.
- the multiple breakpoints used to track the multiple creators are not associated with a common creation breakpoint.
- the automated functionality described herein typically facilitates the setting of the multiple breakpoints by virtue of the automated nature in which creators can be identified (and optionally presented to a user for selection), and breakpoints may be collectively set.
- the embodiments described herein also facilitate tracking of object creations via multiple creators, typically via maintaining a common counter that is incremented in response to hitting any of the breakpoints set on the multiple creators.
- the counter as well as a condition that triggers a halting of execution based upon the state of the counter, are typically maintained in association with a creation breakpoint.
- object creation tracking across multiple creators may not require the utilization of a creation breakpoint and/or the utilization of breakpoints that are set on individual creators for a class.
- FIG. 1 illustrates a computer system 10 suitable for utilizing creation breakpoints consistent with the invention.
- Computer system 10 is shown for a multi-user programming environment that includes at least one processor 12 that obtains instructions or op codes, and data via a system bus 14 from a main memory 16 .
- Computer system 10 may be implemented as a PC-based server, a minicomputer, a midrange computer, a mainframe computer, etc. In other embodiments, however, computer system 10 may be implemented using practically any other type of computer or programmable electronic device, including single-user computers such as desktop computers, laptop computers, handheld computers, etc.
- Processor 12 may represent one or more processors (e.g., microprocessors), and memory 16 may represent the random access memory (RAM) devices comprising the main storage of computer system 10 , as well as any supplemental levels of memory, e.g., cache memories, non-volatile or backup memories (e.g., programmable or flash memories), read-only memories, etc.
- memory 16 may be considered to include memory storage physically located elsewhere in computer system 10 , e.g., any cache memory in a processor 12 , as well as any storage capacity used as a virtual memory, e.g., as stored on a direct access storage device 38 or on another computer coupled to computer system 10 via a network 46 .
- any interconnect architecture, or collection of interconnect architectures may be used to implement system bus 14 consistent with the invention.
- Memory 16 is shown having resident therein an operating system 18 , an object-oriented user program 20 , and a programming environment 22 (e.g., an Integrated Development Environment (IDE)).
- the programming environment 22 typically provides tools for creating, editing, compiling and debugging the user program 20 .
- the debugger 24 includes a user interface 26 , a program inspector 28 , an execution environment 30 , a breakpoint manager 32 , a breakpoint table 34 , and a creation counter 35 , the use and configuration of each of which is described in greater detail below.
- the debugger 24 is illustrated as being resident on the same platform upon which the user program 20 runs. In other embodiments, however, a debugger may be resident on a different platform than a programming and/or execution environment, e.g., when debugging embedded systems, or debugging server-based programs, on a programmer's workstation.
- FIG. 1 also illustrates that computer system 10 also may include various interfaces for coupling the computer system to various external devices.
- a mass storage interface 36 interfaces computer system 10 to one or more mass storage devices 38 , e.g., a direct access storage device (DASD).
- DASD direct access storage device
- a terminal interface 40 interfaces computer system 10 to one or more terminals or workstations 42
- a network interface 44 interfaces computer system 10 to one or more networks 46 . Any number of alternate computer architectures, incorporating other collections of external devices, may be used in the alternative.
- routines executed to implement the embodiments of the invention whether implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions, or even a subset thereof, will be referred to herein as “computer program code,” or simply “program code.”
- Program code typically comprises one or more instructions that are resident at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processors in a computer, cause that computer to perform the steps necessary to execute steps or elements embodying the various aspects of the invention.
- signal bearing media include but are not limited to recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, magnetic tape, optical disks (e.g., CD-ROM's, DVD's, etc.), among others, and transmission type media such as digital and analog communication links.
- debugger 24 The principal components in debugger 24 are illustrated in FIG. 2 , showing the relationship between each of these components and user program 20 .
- User interface 26 provides the mechanism through which user input may be received from a user, as well as the mechanism through which information such as debugging information can be presented to the user.
- Program inspector 28 is used to derive important information about a program, e.g., what are the constructors or creators for a particular class of object.
- Execution environment 30 which in the illustrated implementation is considered part of debugger 24 , provides the underlying platform through which user program 20 is executed in the debugger. In other applications, the execution environment may be implemented in a separate application that is interfaced with the debugger.
- Breakpoint manager 32 provides breakpoint management functionality for debugger 24 , and it is within this module that much of the creation breakpoint functionality is implemented in the illustrated embodiment. It will be appreciated that a wide variety of other debugging tools may also be incorporated into debugger 24 , including, for example, support for watches (allowing a user to see the current value for a particular variable), code stepping (allowing the user to execute a single line or instruction at a time), etc. These additional functions have been omitted from FIG. 2 , however, as they are not particularly relevant to an understanding of the use of creation breakpoints consistent with the invention.
- breakpoint manager 32 supports conventional statement-based breakpoints, as well as creation breakpoints consistent with the invention. Moreover, any type of breakpoint may be associated with a condition, as is well known in the art. Included within the breakpoint manager is typically functionality for setting breakpoints, removing breakpoints, and processing breakpoints when they are hit while the object-oriented program is executed in the execution environment. Creation breakpoints consistent with the invention may be implemented more or less as extensions to conventional breakpoints in the illustrated embodiment. However, in other embodiments, creation breakpoints may be handled completely separately from conventional breakpoints.
- one or more creation counters 35 may be accessible by the execution environment to log or track the number of creations of various types of objects. As will be discussed in greater detail below, as an alternative to utilizing separate creation counters, the creation counters may be stored within breakpoint table 34 and associated with the particular creation breakpoints defined therein.
- Breakpoint table 34 includes a plurality of entries 50 , each including a plurality of fields 52 - 68 .
- breakpoint table 34 defines both conventional-type breakpoints, as well as creation breakpoints consistent with the invention.
- Fields 52 , 54 , 56 and 58 respectively store the class, file name, source code line number, and executable code address that identify a specific breakpoint, and that provide a mapping between the location of the breakpoint in the source code and in the executable code, e.g., so the appropriate source code may be displayed in response to hitting the breakpoint during execution of the executable code. It should be appreciated that other combinations of identifiers may be utilized to identify the position of each breakpoint in the source and/or executable code.
- Field 60 stores an optional condition to be associated with a breakpoint
- field 62 stores one or more actions to be performed in response to hitting the breakpoint, e.g., initiating a trace operation, halting execution, displaying debug information, logging debug information to a file or socket, etc.
- actions to be performed in response to hitting the breakpoint e.g., initiating a trace operation, halting execution, displaying debug information, logging debug information to a file or socket, etc.
- Various additional types of conditions and resulting actions are well understood in the art.
- Field 64 identifies whether the breakpoint is a creation breakpoint. If not set, it is assumed that the breakpoint for a given entry is a conventional-type breakpoint. Otherwise, if field 64 is set to indicate a creation breakpoint, the entry is treated as a creation breakpoint, and additional fields 66 , 68 are utilized in association therewith.
- field 66 provides a pointer to a creator list 70 , which includes a plurality of entries 72 , 74 that are associated with specific creators for a particular class.
- Each entry 72 , 74 includes a creator field 76 that identifies the creator associated with the entry.
- Each entry also includes fields 78 , 80 and 82 , which respectively store the file name, source code line number, and executable code address of a statement in the creator upon which a breakpoint is set for that creator.
- Field 84 stores whether the particular creator is selected by the user, i.e., whether the creator is being actively monitored for breakpoint hits. In the alternative, field 84 may be omitted, with the assumption being that each entry listed in list 70 is an active creator. In the configuration shown in FIG. 3 , however, creators that exist for a particular class, but which are not monitored for hits thereto, are still listed, but are essentially ignored during execution.
- each entry 50 in the breakpoint table 34 may also include an optional counter field 68 , which is used to store a creation counter for a creation breakpoint.
- Maintenance of a counter in breakpoint table 34 is an alternative implementation to the use of a separate creation counter 35 as shown in FIG. 2 . Either implementation may be used in various embodiments consistent with the invention.
- creation breakpoint table 34 presumes that all of the creators for a particular class are defined in that class. In other embodiments, however, creators that have not been overridden from any super classes of a particular class may also be incorporated into the creator list for a particular creation breakpoint. In such an instance, it may be desirable to include a class field in each entry 72 , 74 of creator list 70 .
- FIG. 4 illustrates a set breakpoint routine 100 , which is utilized to set a breakpoint in the debugger 24 via interaction by a user through user interface 26 ( FIG. 2 ).
- Routine 100 may be initiated via any number of user input operations, e.g., via a graphical user interface control such as a button, menu, pop-up menu, etc., or via a command line command, a keystroke combination, or other user input operation known in the art.
- Routine 100 begins in block 102 by determining whether the user has indicated a desire to set a creation breakpoint. If not, control passes to block 104 , where a conventional breakpoint is set in a manner known in the art. Otherwise, block 102 passes control to block 106 to add the creation breakpoint, by adding an entry to breakpoint table 34 for the creation breakpoint. Next, block 108 determines whether the creation breakpoint is a conditional breakpoint. If so, control passes to block 110 to add a condition based upon user input, e.g., by storing the condition in the entry for the creation breakpoint in breakpoint table 34 .
- a creation breakpoint may also incorporate a counter condition whereby the total number of hits to a particular class of object may be tracked across multiple creators.
- a user may specify that a creation breakpoint be triggered only upon meeting a particular condition.
- one possible condition would be that the total number of object creations meets or exceeds a predetermined threshold.
- the creators for the selected class are identified, e.g., by utilizing program inspector 28 of debugger 24 to obtain the list of creators (optionally including those in a super class) for the selected class.
- program inspector 28 may use Java reflection API's, the use and configuration of which are known in the art.
- other mechanisms may be used to determine what creators exist for a particular class.
- inheritance concepts may be utilized in connection with the creation breakpoints described herein, e.g., as described in U.S. patent application Ser. No. 09/998,511, filed on Nov. 30, 2001 by Jeremy Alan Arnold et al., entitled “INHERITANCE BREAKPOINTS FOR USE IN DEBUGGING OBJECT-ORIENTED COMPUTER PROGRAMS,” (ROC920010096US1) which application is incorporated by reference herein.
- block 116 determines whether the user has specified that only a subset of the creators are to be associated with the creation breakpoint. If so, control passes to block 118 to present a list of creators to the user for selection thereby. Block 120 then selects the creators based upon the selections made by the user. Returning to block 116 , if the user has not specified to only associate a subset of creators with a creation breakpoint, control passes directly to block 122 to select all creators for inclusion with the creation breakpoint.
- breakpoints are typically added at specific locations in each creator.
- the breakpoints set on each creator are stored in a creator list 70 , rather than as separate entries in breakpoint table 34 .
- the addition of a breakpoint for each selected creator occurs in much the same manner, whereby either a branch instruction to debugger program code, or alternatively an invalid instruction that triggers an exception, is typically inserted into the user program at the specified location.
- Other manners of modifying a user program to incorporate breakpoints on a temporary basis may also be used in the alternative.
- the individual breakpoints associated with a creation breakpoint are typically set on a particular statement in each creator, e.g., the first statement.
- Other statement-based breakpoints, as well as non-statement-based breakpoints that are associated with the creators themselves, may be used in the alternative.
- each creator may be added to creator list 70 in block 114 of FIG. 4 , with the selected field 84 for each entry modified in blocks 122 and 120 as appropriate.
- fields 78 - 82 may only be modified in block 124 for those selected creators.
- each creator may have a breakpoint set thereon even if the creator is not selected, with functionality in the debugger utilized to ignore the breakpoint if it is determined that the creator with which it is associated is not selected.
- a user may be presented with a dialog box upon requesting that a creation breakpoint be created for a particular class (e.g., by right-clicking on a class definition and selecting an appropriate menu entry on the pop-up menu that is displayed as a result thereof).
- the dialog box may include, for example, fields for entering a condition, selecting or unselecting particular creators, etc.
- routine 100 may occur in different orders, e.g., a user may be presented with a list of creators initially upon requesting to create a creation breakpoint, and may be presented with the opportunity to specify a condition and select all or a subset of the creators in the same dialog box, with selection of a “OK” button resulting in the generation of the appropriate breakpoint data.
- a user may be presented with a list of creators initially upon requesting to create a creation breakpoint, and may be presented with the opportunity to specify a condition and select all or a subset of the creators in the same dialog box, with selection of a “OK” button resulting in the generation of the appropriate breakpoint data.
- Other modifications and alternatives will be apparent to one of ordinary skill in the art.
- FIG. 5 illustrates a breakpoint hit routine 130 that is executed whenever a breakpoint is hit during execution of a computer program being debugged.
- Routine 130 begins in block 132 by determining whether the breakpoint is associated with a creation breakpoint. This step may be performed, for example, by determining whether the breakpoint is in a creation list 70 , or alternatively, supplied as a non-creation entry 50 in breakpoint table 34 (i.e., an entry 50 where the creation flag in field 64 is not set).
- block 132 passes control to block 134 to handle the breakpoint in a conventional manner. Otherwise, block 132 passes control to block 136 to increment the counter associated with the creation breakpoint.
- block 138 processes any conditions associated with the creation breakpoint. If no condition is specified, or if a condition is specified but has not yet been satisfied, block 138 terminates without triggering the breakpoint. If no condition is specified (indicating that the creation breakpoint is unconditional), or if the condition specified for the breakpoint has been satisfied, control passes to block 140 to halt program execution and present debugger information associated with the creation breakpoint, in a manner similar to conventional breakpoints. Any additional actions associated with the creation breakpoint may also be performed at this time.
- FIG. 6 illustrates a remove breakpoint routine 150 that handles the removal of a creation breakpoint in a similar manner to a conventional breakpoint, with the exception that additional steps are performed to clear the creator list for the creation breakpoint entry.
- routine 150 begins in block 152 by determining whether the breakpoint to be removed is a creation breakpoint. If not, the breakpoint entry therefor is removed from breakpoint table 34 in a conventional manner, as shown in block 154 . If, however, the breakpoint is a creation breakpoint, prior to removing the breakpoint entry, the creator list 70 is removed as well, as shown in block 156 .
- a creation breakpoint entity Through the utilization of a creation breakpoint entity, multiple breakpoints associated with multiple creators can be managed collectively, i.e., set and/or removed as a group. Thus, a user is often freed from the burden of setting or removing individual breakpoints to or from particular creators. Moreover, as illustrated above in connection with FIG. 5 , a counter can be incremented for each creation of an object of a particular class, regardless of the creator being used to create that object.
- FIG. 7 illustrates in a window 180 a portion of a computer program 190 including a class definition 192 .
- class 192 includes two constructor methods, or creators, defined at lines 2 - 4 and 5 - 7 , respectively.
- class 192 is illustrated as a Java-compatible program.
- the creator defined at lines 2 - 4 is a default constructor method having a call signature of “MyClass( )”
- the creator defined at lines 5 - 7 is another constructor method having a call signature of “MyClass(int)”, which differs from the default constructor method in that it accepts a single integer argument i.
- the main( ) method defined in the program creates eleven “MyClass” objects, with six of those objects created using the default constructor method “MyClass( )”, and five of the objects created using the alternate constructor method “MyClass(int)”.
- MyClass(int) the default constructor method
- MyClass(int) the alternate constructor method
- Creation breakpoints consistent with the invention may be utilized in a number of manners to catch this programming error. For example, an unconditional creation breakpoint could be set on the MyClass( ) class, and with “all creators” specified such that individual breakpoints will be set on each constructor method. During execution while under debug, the creation breakpoint would be triggered eleven times, once for each creation of a “MyClass( )” instance. Were the programmer to manually count the number of times the creation breakpoint is hit, the programmer would be able to determine that the breakpoint was hit eleven times, rather than the intended ten times, and take appropriate corrective action thereafter.
- the programmer could set a conditional creation breakpoint on the “MyClass” class, specifying that all creators be tracked, and specifying a condition that triggers the breakpoint if the number of “MyClass” instances is greater than or equal to ten.
- FIG. 3 illustrates the resulting entry 50 that might be created in response to a user request to set the aforementioned conditional creation breakpoint on the “MyClass” class.
- the class and file name fields 52 , 54 for the entry specify the class and file name within which the class is defined.
- entry 50 defines a creation breakpoint, however, typically fields 56 and 58 are not used, and would thus are left blank.
- Field 64 specifies that the breakpoint is a creation breakpoint
- creator list field 66 points to the creator list 70 shown in FIG. 3 .
- Field 68 is initially set at an initial null value prior to execution of the program under debug.
- entries 72 , 74 are associated with a particular creator defined in the class. Entry 72 is associated with the default constructor method “MyClass( )”, which is identified in field 76 for the entry. Field 78 stores the file name for the creator, and fields 80 and 82 respectively store the source code line number and executable code address of the precise statement with which the breakpoint for that entry is associated. Similar information for the “MyClass(int)” constructor method is stored in entry 74 . Field 84 for each entry 72 , 74 also indicates that the creator is selected, as in this example it is presumed that the programmer has requested to track all creators.
- the creation breakpoint would be reached two times, upon the tenth and eleventh creations of a “Myclass” object.
- the programmer could use conventional debugging techniques to step through the code after the tenth creation to find out why an eleventh creation was occurring, and correct the error as appropriate.
- breakpoints with which a creation breakpoint is associated may be set on creators as a whole, rather than on specific statements in those creators.
- creation breakpoints may be handled completely separately from conventional-type breakpoints, and may not rely upon conventional-type breakpoints within each creator of a particular class.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
A computer system, program product and method debug an object-oriented computer program by tracking the creation of objects by a plurality of creators (e.g., constructor methods) of a selected class. A user need not separately track each creator. Instead, a debugger identifies each creator and associates breakpoints with all or a user-specified subset of creators to facilitate tracking. Any of the breakpoints may then trigger a halting of execution during debugging. Moreover, in some instances it may be desirable to track the number of creations by all or the subset of the creators for the selected class during program execution until a user-specified condition is satisfied, whereupon program execution is terminated and debugging information is provided to the user.
Description
- This application is a continuation of U.S. patent application Ser. No. 09/997,990 filed on Nov. 30, 2001 by Jeremy Alan Arnold et al., entitled “OBJECT-ORIENTED CREATION BREAKPOINTS” (ROC920010095US1), the disclosure of which is incorporated by reference herein.
- The invention is generally related to computers and computer software. More specifically, the invention is generally related to debugging computer programs, particularly in the field of object-oriented programming (OOP) technology.
- Debuggers are software tools that can be used to diagnose computer programs and trace errors that arise during execution of the program. Debuggers are commonly used during the development of computer programs, to verify that a program under development operates as intended.
- To support a debugger, information describing symbols and types in the program as well as information to map between source (human readable) and executable (machine readable) code is typically required. In the case of compiled programs, a compiler can often produce this information. This extra information, generally referred to as debugging information, enables a programmer to examine the types, variables and data structures used in a program by name and to follow the execution of the program through the source code.
- A number of debugging techniques can be used to enable a programmer to properly analyze a program to detect points in the program where errors occur. One such technique is to put a breakpoint into the program, at a point in the program where it is desirable for normal operation to be suspended automatically when certain conditions are met. Breakpoints are useful for program testing. They are specified by programmers so that interim results of processing can be inspected, and then programs can be restarted to continue running normally.
- In traditional debuggers, breakpoints are generally set on specific statements within functions or methods; program execution is suspended each time the particular statement is called. In some environments, breakpoints may also be specified to be “conditional” so that execution is suspended by a breakpoint only when a particular condition associated with that breakpoint is met (e.g., after the breakpoint has been hit Xtimes).
- Statement-based breakpoints have been found to be very useful for debugging program bugs and inefficiencies in traditional procedural languages that are sequential in nature. However, object-oriented languages, which have found increasing acceptability as programming languages, are based on quite a different concept.
- Object-oriented programs are typically created using a set of language tools, abstractions and constructs that support a particular form of user-defined type called a “class”. A class functions as a template, and associates a collection of declared data with a set of operations capable of being performed on that data, i.e., methods capable of being called on the data. In an object-oriented program, objects are dynamically created during runtime using the classes as templates. The creation of a new object is often referred to as “instantiation,” whereby an object is an “instance” of a class.
- 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. When defining a derived class, one may start by building on an existing base class that is similar to the one to be created. The derived class inherits the implementation and behavior of the base class, including its methods and data, except as modified by overriding amendments detailed in the derived class definition. Several classes can inherit the behaviors of a common parent, and in some object-oriented languages a derived class may inherit from more than one base class.
- In a working program, objects are instantiated, or created as needed, and built from the templates defined by their respective classes. During runtime, it is often desirable to provide each new object with initial data and/or initiate particular operations with the object. For this reason, many object-oriented environments support special methods known as constructors, or creators, that are called upon an object's creation. One or more constructor methods are typically defined in each class, while a default constructor method may be defined for some classes when no explicit method is defined by the developer.
- Many classes support multiple constructor methods that perform different operations based upon how many and what types of data values are provided when creation of an object is desired. Constructor methods typically specify particular call signatures that define the types of data values expected by those methods, so that, when object creation is initiated, the data values supplied therewith can be analyzed to locate a matching constructor method, and the matching constructor method can then be executed.
- The use of multiple constructor methods for a class provides significant flexibility for programmers. However, the flexibility in object creation has shortcomings during debugging of the computer program. For example, a programmer may desire to track when objects of a particular class have been created. Conventional breakpoints, which are statement based, could be set on statements in individual constructor methods so that the programmer is notified whenever a statement in a constructor method is hit during creation of an object. However, since more than one constructor may be responsible for creating these objects, a programmer is typically required to manually set a breakpoint on a statement in each constructor method for a class. Manually setting a breakpoint on a statement in each constructor method, however, can be excessively burdensome and time consuming, and a distinct risk exists that a programmer may inadvertently forget to set a breakpoint in one of the constructor methods, or forget to remove all of the breakpoints once the condition has been adequately tested.
- In addition, in some situations a programmer may wish to track the number of objects that are created for a particular class. As an example, a programmer may wish to verify that an excessive number of objects are not created for a particular purpose, e.g., in a database environment, where a programmer might intend for no more than 10 database connections to be active at any given time. Through the use of manually-set breakpoints in all constructor methods, a programmer could manually count the number of object creations; however, doing so could be unduly burdensome when tens, hundreds or thousands of objects are normally created in a program.
- Should halting execution after each object creation be unduly burdensome, a programmer could utilize conditional breakpoints in each constructor method to trigger only after a certain number of hits. However, given that each breakpoint would independently track the number of times it was hit, and given that a programmer may not know the relative frequency that each constructor method for a particular object is called, the programmer would still not be able to be notified after a specific number of objects were created.
- Consequently, a significant need exists for a method of debugging an object-oriented computer program that facilitates the tracking of object creation operations during execution of the computer program.
- The invention addresses these and other problems associated with the prior art by providing an apparatus, program product, and method of debugging an object-oriented computer program that facilitate the tracking of object creation operations by multiple creators for a particular class defined in a computer program.
- Consistent with one aspect of the invention, for example, an object-oriented computer program is debugged using a plurality of breakpoints set for a plurality of creators for a class defined in the object-oriented computer program. Specifically, in response to user input, a plurality of creators for the class are identified, and a plurality of breakpoints are set on the identified creators. Execution of the object-oriented computer program is then halted during debugging in response to hitting any of the plurality of breakpoints.
- In some embodiments, the plurality of breakpoints are associated with a “creation” breakpoint, whereby user input received from a programmer or other user is directed toward performing operations on the creation breakpoint, rather than the breakpoints set on the various creators. Functionality within the debugger thus manages the plurality of breakpoints as a collective group. Irrespective of whether the plurality of breakpoints are associated with a common creation breakpoint, however, through the automated identification of creators for a class in response to user input, a programmer or other user is relieved of the burden of manually identifying creators and setting individual breakpoints on the different creators for a particular class.
- Consistent with another aspect of the invention, an object-oriented computer program is debugged by tracking a number of object creations of a class defined in the object-oriented computer program during debugging, and halting execution of the object-oriented computer program in response to the number of object creations meeting a condition. As such, object creations are tracked across multiple creators.
- These and other advantages and features, which characterize the invention, are set forth in the claims annexed hereto and forming a further part hereof. However, for a better understanding of the invention, and of the advantages and objectives attained through its use, reference should be made to the Drawings, and to the accompanying descriptive matter, in which there is described exemplary embodiments of the invention.
-
FIG. 1 is a block diagram of a computer system incorporating a debugger supporting object-oriented creation breakpoints consistent with the invention. -
FIG. 2 is a block diagram of the principal software components in the debugger ofFIG. 1 . -
FIG. 3 is an exemplary data structure implementation for the breakpoint table ofFIG. 2 . -
FIG. 4 is a flow diagram for a set breakpoint routine executed by the debugger ofFIG. 2 . -
FIG. 5 is a breakpoint hit routine executed by the debugger ofFIG. 2 . -
FIG. 6 is a remove breakpoint routine executed by the debugger ofFIG. 2 . -
FIG. 7 is an illustrative example of an object-oriented computer program having a class defining multiple creators. - The embodiments illustrated hereinafter facilitate the debugging of object-oriented computer programs by tracking the execution of a multiple creators for classes defined in such computer programs. Typically, such tracking occurs through the use of “creation” breakpoints that permit tracking of multiple creators to be managed in a collective manner. Creators are typically implemented via constructor methods in many object-oriented programming environments, although it is envisioned that other environments may utilize default or other creators that are not explicitly defined by a programmer, but rather are implicitly defined. In still other environments, no methods may be called in response to creation of an object. Nonetheless, it may be beneficial to define this default condition, in which no method as called, to be analogous to one “creator” for the class.
- Creation breakpoints typically have associated therewith multiple breakpoints that are set on the various creators for a particular class, and typically on specific statements within such creators. Moreover, the multiple breakpoints are typically managed in a collective manner through user interaction with a creation breakpoint, e.g., so that the breakpoints can be collectively set or removed in response to particular user input, rather than being managed individually through user interaction with each breakpoint. While some environments may support interaction with individual breakpoints associated with a creation breakpoint, in the embodiments discussed hereinafter, the individual breakpoints are essentially hidden from the user (e.g., a programmer, developer, program tester, etc.) such that only interaction with the creation breakpoint itself is principally supported.
- In other embodiments, the multiple breakpoints used to track the multiple creators are not associated with a common creation breakpoint. In such embodiments, however, the automated functionality described herein typically facilitates the setting of the multiple breakpoints by virtue of the automated nature in which creators can be identified (and optionally presented to a user for selection), and breakpoints may be collectively set.
- Moreover, as will be discussed in greater detail below, the embodiments described herein also facilitate tracking of object creations via multiple creators, typically via maintaining a common counter that is incremented in response to hitting any of the breakpoints set on the multiple creators. The counter, as well as a condition that triggers a halting of execution based upon the state of the counter, are typically maintained in association with a creation breakpoint. However, it will be appreciated that, in other embodiments, object creation tracking across multiple creators may not require the utilization of a creation breakpoint and/or the utilization of breakpoints that are set on individual creators for a class.
- Turning now to the Drawings, wherein like numbers denote like parts throughout the several views,
FIG. 1 illustrates acomputer system 10 suitable for utilizing creation breakpoints consistent with the invention.Computer system 10 is shown for a multi-user programming environment that includes at least oneprocessor 12 that obtains instructions or op codes, and data via asystem bus 14 from amain memory 16.Computer system 10 may be implemented as a PC-based server, a minicomputer, a midrange computer, a mainframe computer, etc. In other embodiments, however,computer system 10 may be implemented using practically any other type of computer or programmable electronic device, including single-user computers such as desktop computers, laptop computers, handheld computers, etc. -
Processor 12 may represent one or more processors (e.g., microprocessors), andmemory 16 may represent the random access memory (RAM) devices comprising the main storage ofcomputer system 10, as well as any supplemental levels of memory, e.g., cache memories, non-volatile or backup memories (e.g., programmable or flash memories), read-only memories, etc. In addition,memory 16 may be considered to include memory storage physically located elsewhere incomputer system 10, e.g., any cache memory in aprocessor 12, as well as any storage capacity used as a virtual memory, e.g., as stored on a directaccess storage device 38 or on another computer coupled tocomputer system 10 via anetwork 46. Furthermore, practically any interconnect architecture, or collection of interconnect architectures, may be used to implementsystem bus 14 consistent with the invention. -
Memory 16 is shown having resident therein anoperating system 18, an object-orienteduser program 20, and a programming environment 22 (e.g., an Integrated Development Environment (IDE)). Theprogramming environment 22 typically provides tools for creating, editing, compiling and debugging theuser program 20. - As such, among the tools supported by programming
environment 22 is adebugger 24 that monitors and interfaces with program execution to diagnose theuser program 20. Thedebugger 24 includes auser interface 26, aprogram inspector 28, anexecution environment 30, abreakpoint manager 32, a breakpoint table 34, and acreation counter 35, the use and configuration of each of which is described in greater detail below. - In the illustrated embodiment, the
debugger 24 is illustrated as being resident on the same platform upon which theuser program 20 runs. In other embodiments, however, a debugger may be resident on a different platform than a programming and/or execution environment, e.g., when debugging embedded systems, or debugging server-based programs, on a programmer's workstation. -
FIG. 1 also illustrates thatcomputer system 10 also may include various interfaces for coupling the computer system to various external devices. For example, amass storage interface 36interfaces computer system 10 to one or moremass storage devices 38, e.g., a direct access storage device (DASD). In addition, a terminal interface 40interfaces computer system 10 to one or more terminals orworkstations 42, and anetwork interface 44interfaces computer system 10 to one ormore networks 46. Any number of alternate computer architectures, incorporating other collections of external devices, may be used in the alternative. - The discussion hereinafter will focus on the specific routines utilized to implement the herein-described debugger functionality. In general, the routines executed to implement the embodiments of the invention, whether implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions, or even a subset thereof, will be referred to herein as “computer program code,” or simply “program code.” Program code typically comprises one or more instructions that are resident at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processors in a computer, cause that computer to perform the steps necessary to execute steps or elements embodying the various aspects of the invention.
- Moreover, while the invention has and hereinafter will be described in the context of fully functioning computers and computer systems, those skilled in the art will appreciate that the various embodiments of the invention are capable of being distributed as a program product in a variety of forms, and that the invention applies equally regardless of the particular type of signal bearing media used to actually carry out the distribution. Examples of signal bearing media include but are not limited to recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, magnetic tape, optical disks (e.g., CD-ROM's, DVD's, etc.), among others, and transmission type media such as digital and analog communication links.
- In addition, various program code described hereinafter may be identified based upon the application within which it is 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. Furthermore, given the typically endless number of manners in which computer programs may be organized into routines, procedures, methods, modules, objects, and the like, as well as the various manners in which program functionality may be allocated among various software layers that are resident within a typical computer (e.g., operating systems, libraries, API's, applications, applets, etc.), it should be appreciated that the invention is not limited to the specific organization and allocation of program functionality described herein.
- The principal components in
debugger 24 are illustrated inFIG. 2 , showing the relationship between each of these components anduser program 20.User interface 26 provides the mechanism through which user input may be received from a user, as well as the mechanism through which information such as debugging information can be presented to the user.Program inspector 28 is used to derive important information about a program, e.g., what are the constructors or creators for a particular class of object. -
Execution environment 30, which in the illustrated implementation is considered part ofdebugger 24, provides the underlying platform through whichuser program 20 is executed in the debugger. In other applications, the execution environment may be implemented in a separate application that is interfaced with the debugger. -
Breakpoint manager 32 provides breakpoint management functionality fordebugger 24, and it is within this module that much of the creation breakpoint functionality is implemented in the illustrated embodiment. It will be appreciated that a wide variety of other debugging tools may also be incorporated intodebugger 24, including, for example, support for watches (allowing a user to see the current value for a particular variable), code stepping (allowing the user to execute a single line or instruction at a time), etc. These additional functions have been omitted fromFIG. 2 , however, as they are not particularly relevant to an understanding of the use of creation breakpoints consistent with the invention. - In the illustrated embodiment,
breakpoint manager 32 supports conventional statement-based breakpoints, as well as creation breakpoints consistent with the invention. Moreover, any type of breakpoint may be associated with a condition, as is well known in the art. Included within the breakpoint manager is typically functionality for setting breakpoints, removing breakpoints, and processing breakpoints when they are hit while the object-oriented program is executed in the execution environment. Creation breakpoints consistent with the invention may be implemented more or less as extensions to conventional breakpoints in the illustrated embodiment. However, in other embodiments, creation breakpoints may be handled completely separately from conventional breakpoints. - As is also shown in
FIG. 2 , one or more creation counters 35 may be accessible by the execution environment to log or track the number of creations of various types of objects. As will be discussed in greater detail below, as an alternative to utilizing separate creation counters, the creation counters may be stored within breakpoint table 34 and associated with the particular creation breakpoints defined therein. - Now turning to
FIG. 3 , an exemplary implementation of breakpoint table 34 is illustrated in greater detail. Breakpoint table 34 includes a plurality ofentries 50, each including a plurality of fields 52-68. In the illustrated implementation, breakpoint table 34 defines both conventional-type breakpoints, as well as creation breakpoints consistent with the invention. -
Fields -
Field 60 stores an optional condition to be associated with a breakpoint, and field 62 stores one or more actions to be performed in response to hitting the breakpoint, e.g., initiating a trace operation, halting execution, displaying debug information, logging debug information to a file or socket, etc. Various additional types of conditions and resulting actions are well understood in the art. -
Field 64 identifies whether the breakpoint is a creation breakpoint. If not set, it is assumed that the breakpoint for a given entry is a conventional-type breakpoint. Otherwise, iffield 64 is set to indicate a creation breakpoint, the entry is treated as a creation breakpoint, andadditional fields - In particular,
field 66 provides a pointer to acreator list 70, which includes a plurality ofentries entry creator field 76 that identifies the creator associated with the entry. Each entry also includesfields Field 84 stores whether the particular creator is selected by the user, i.e., whether the creator is being actively monitored for breakpoint hits. In the alternative,field 84 may be omitted, with the assumption being that each entry listed inlist 70 is an active creator. In the configuration shown inFIG. 3 , however, creators that exist for a particular class, but which are not monitored for hits thereto, are still listed, but are essentially ignored during execution. - In addition, as shown in
FIG. 3 , eachentry 50 in the breakpoint table 34 may also include anoptional counter field 68, which is used to store a creation counter for a creation breakpoint. Maintenance of a counter in breakpoint table 34 is an alternative implementation to the use of aseparate creation counter 35 as shown inFIG. 2 . Either implementation may be used in various embodiments consistent with the invention. - As may be appreciated from
FIG. 3 , creation breakpoint table 34 presumes that all of the creators for a particular class are defined in that class. In other embodiments, however, creators that have not been overridden from any super classes of a particular class may also be incorporated into the creator list for a particular creation breakpoint. In such an instance, it may be desirable to include a class field in eachentry creator list 70. - It will be appreciated that a wide variety of alternate data structures may be utilized to store the breakpoint information utilized in connection with creation breakpoints consistent with the invention. Therefore, the invention is not limited to the particular data structures described herein.
- To implement creation breakpoints consistent with the invention, a number of routines are supported by
breakpoint manager 32 ofFIG. 2 .FIG. 4 , for example, illustrates a setbreakpoint routine 100, which is utilized to set a breakpoint in thedebugger 24 via interaction by a user through user interface 26 (FIG. 2 ).Routine 100 may be initiated via any number of user input operations, e.g., via a graphical user interface control such as a button, menu, pop-up menu, etc., or via a command line command, a keystroke combination, or other user input operation known in the art. -
Routine 100 begins inblock 102 by determining whether the user has indicated a desire to set a creation breakpoint. If not, control passes to block 104, where a conventional breakpoint is set in a manner known in the art. Otherwise, block 102 passes control to block 106 to add the creation breakpoint, by adding an entry to breakpoint table 34 for the creation breakpoint. Next, block 108 determines whether the creation breakpoint is a conditional breakpoint. If so, control passes to block 110 to add a condition based upon user input, e.g., by storing the condition in the entry for the creation breakpoint in breakpoint table 34. - Any type of condition commonly utilized in connection with breakpoints may be utilized as a condition for a creation breakpoint consistent with the invention. Moreover, a creation breakpoint may also incorporate a counter condition whereby the total number of hits to a particular class of object may be tracked across multiple creators. As such, by specifying a particular number of creations and/or an operator, a user may specify that a creation breakpoint be triggered only upon meeting a particular condition. As an example, one possible condition would be that the total number of object creations meets or exceeds a predetermined threshold.
- If a conditional breakpoint is not specified, or after a specified condition has been added to the creation breakpoint entry, control passes to block 112 to obtain the selected class with which to associate the creation breakpoint. Next, in
block 114, the creators for the selected class are identified, e.g., by utilizingprogram inspector 28 ofdebugger 24 to obtain the list of creators (optionally including those in a super class) for the selected class. - For example, in a Java programming environment,
program inspector 28 may use Java reflection API's, the use and configuration of which are known in the art. In other embodiments, other mechanisms may be used to determine what creators exist for a particular class. In addition, inheritance concepts may be utilized in connection with the creation breakpoints described herein, e.g., as described in U.S. patent application Ser. No. 09/998,511, filed on Nov. 30, 2001 by Jeremy Alan Arnold et al., entitled “INHERITANCE BREAKPOINTS FOR USE IN DEBUGGING OBJECT-ORIENTED COMPUTER PROGRAMS,” (ROC920010096US1) which application is incorporated by reference herein. - Next, block 116 determines whether the user has specified that only a subset of the creators are to be associated with the creation breakpoint. If so, control passes to block 118 to present a list of creators to the user for selection thereby.
Block 120 then selects the creators based upon the selections made by the user. Returning to block 116, if the user has not specified to only associate a subset of creators with a creation breakpoint, control passes directly to block 122 to select all creators for inclusion with the creation breakpoint. - Once the creators have been selected in
block - To implement
block 124, conventional-type breakpoints are typically added at specific locations in each creator. However, unlike conventional breakpoints, the breakpoints set on each creator are stored in acreator list 70, rather than as separate entries in breakpoint table 34. As far as interaction with an object-oriented user program, however, typically the addition of a breakpoint for each selected creator occurs in much the same manner, whereby either a branch instruction to debugger program code, or alternatively an invalid instruction that triggers an exception, is typically inserted into the user program at the specified location. Other manners of modifying a user program to incorporate breakpoints on a temporary basis may also be used in the alternative. - In the illustrated implementation, the individual breakpoints associated with a creation breakpoint are typically set on a particular statement in each creator, e.g., the first statement. Other statement-based breakpoints, as well as non-statement-based breakpoints that are associated with the creators themselves, may be used in the alternative.
- Moreover, it should be appreciated that the population of data in breakpoint table 34 may occur in a number of manners consistent with the invention. For example, entries for each creator may be added to
creator list 70 inblock 114 ofFIG. 4 , with the selectedfield 84 for each entry modified inblocks block 124 for those selected creators. In the alternative, each creator may have a breakpoint set thereon even if the creator is not selected, with functionality in the debugger utilized to ignore the breakpoint if it is determined that the creator with which it is associated is not selected. - Moreover, the manner in which a user may supply the user input for each of the operations illustrated in
FIG. 4 may vary in different embodiments. For example, a user may be presented with a dialog box upon requesting that a creation breakpoint be created for a particular class (e.g., by right-clicking on a class definition and selecting an appropriate menu entry on the pop-up menu that is displayed as a result thereof). The dialog box may include, for example, fields for entering a condition, selecting or unselecting particular creators, etc. As such, it should be appreciated that the operations performed inroutine 100 may occur in different orders, e.g., a user may be presented with a list of creators initially upon requesting to create a creation breakpoint, and may be presented with the opportunity to specify a condition and select all or a subset of the creators in the same dialog box, with selection of a “OK” button resulting in the generation of the appropriate breakpoint data. Other modifications and alternatives will be apparent to one of ordinary skill in the art. - Once individual breakpoints are set for a particular creation breakpoint, processing of breakpoints during debugging of a computer program proceeds in a similar manner to that for conventional breakpoints.
FIG. 5 , for example, illustrates a breakpoint hit routine 130 that is executed whenever a breakpoint is hit during execution of a computer program being debugged.Routine 130 begins inblock 132 by determining whether the breakpoint is associated with a creation breakpoint. This step may be performed, for example, by determining whether the breakpoint is in acreation list 70, or alternatively, supplied as anon-creation entry 50 in breakpoint table 34 (i.e., anentry 50 where the creation flag infield 64 is not set). - If the breakpoint is not a creation breakpoint, block 132 passes control to block 134 to handle the breakpoint in a conventional manner. Otherwise, block 132 passes control to block 136 to increment the counter associated with the creation breakpoint.
- Next, block 138 processes any conditions associated with the creation breakpoint. If no condition is specified, or if a condition is specified but has not yet been satisfied, block 138 terminates without triggering the breakpoint. If no condition is specified (indicating that the creation breakpoint is unconditional), or if the condition specified for the breakpoint has been satisfied, control passes to block 140 to halt program execution and present debugger information associated with the creation breakpoint, in a manner similar to conventional breakpoints. Any additional actions associated with the creation breakpoint may also be performed at this time.
- Yet another operation that may be performed in connection with a creation breakpoint is the removal of the creation breakpoint once a user is satisfied that no further debugging with the creation breakpoint is required.
FIG. 6 illustrates aremove breakpoint routine 150 that handles the removal of a creation breakpoint in a similar manner to a conventional breakpoint, with the exception that additional steps are performed to clear the creator list for the creation breakpoint entry. - In particular, routine 150 begins in
block 152 by determining whether the breakpoint to be removed is a creation breakpoint. If not, the breakpoint entry therefor is removed from breakpoint table 34 in a conventional manner, as shown inblock 154. If, however, the breakpoint is a creation breakpoint, prior to removing the breakpoint entry, thecreator list 70 is removed as well, as shown inblock 156. - Therefore, it will be appreciated that, through the utilization of a creation breakpoint entity, multiple breakpoints associated with multiple creators can be managed collectively, i.e., set and/or removed as a group. Thus, a user is often freed from the burden of setting or removing individual breakpoints to or from particular creators. Moreover, as illustrated above in connection with
FIG. 5 , a counter can be incremented for each creation of an object of a particular class, regardless of the creator being used to create that object. - As an example of the operation of
debugger 24,FIG. 7 illustrates in a window 180 a portion of acomputer program 190 including aclass definition 192. As shown inFIG. 7 ,class 192 includes two constructor methods, or creators, defined at lines 2-4 and 5-7, respectively. For the purposes of illustration,class 192 is illustrated as a Java-compatible program. The creator defined at lines 2-4 is a default constructor method having a call signature of “MyClass( )”, and the creator defined at lines 5-7 is another constructor method having a call signature of “MyClass(int)”, which differs from the default constructor method in that it accepts a single integer argument i. - In the
exemplary program 190, the main( ) method defined in the program creates eleven “MyClass” objects, with six of those objects created using the default constructor method “MyClass( )”, and five of the objects created using the alternate constructor method “MyClass(int)”. Suppose, however, that the programmer that developed the main( ) method intended that the main loop execute ten times, rather than the eleven times. For example, suppose the programmer intended the terminating condition for the FOR loop to be “i<10” rather than “i<=10” as is shown inFIG. 7 . - Creation breakpoints consistent with the invention may be utilized in a number of manners to catch this programming error. For example, an unconditional creation breakpoint could be set on the MyClass( ) class, and with “all creators” specified such that individual breakpoints will be set on each constructor method. During execution while under debug, the creation breakpoint would be triggered eleven times, once for each creation of a “MyClass( )” instance. Were the programmer to manually count the number of times the creation breakpoint is hit, the programmer would be able to determine that the breakpoint was hit eleven times, rather than the intended ten times, and take appropriate corrective action thereafter.
- In the alternative, the programmer could set a conditional creation breakpoint on the “MyClass” class, specifying that all creators be tracked, and specifying a condition that triggers the breakpoint if the number of “MyClass” instances is greater than or equal to ten.
-
FIG. 3 , for example, illustrates the resultingentry 50 that might be created in response to a user request to set the aforementioned conditional creation breakpoint on the “MyClass” class. In this instance, the class and file name fields 52, 54 for the entry specify the class and file name within which the class is defined. Asentry 50 defines a creation breakpoint, however, typically fields 56 and 58 are not used, and would thus are left blank. Also, since a user has specified a condition, that condition is stored infield 60 as shown inFIG. 3 , and any desired actions are indicated infield 62.Field 64 specifies that the breakpoint is a creation breakpoint, andcreator list field 66 points to thecreator list 70 shown inFIG. 3 .Field 68 is initially set at an initial null value prior to execution of the program under debug. - Within
creator list 70 areentries Entry 72 is associated with the default constructor method “MyClass( )”, which is identified infield 76 for the entry.Field 78 stores the file name for the creator, and fields 80 and 82 respectively store the source code line number and executable code address of the precise statement with which the breakpoint for that entry is associated. Similar information for the “MyClass(int)” constructor method is stored inentry 74.Field 84 for eachentry - Under this scenario, during execution under debug, the creation breakpoint would be reached two times, upon the tenth and eleventh creations of a “Myclass” object. Thus, if a programmer discovered that he or she was creating more “Myclass” objects than expected, the programmer could use conventional debugging techniques to step through the code after the tenth creation to find out why an eleventh creation was occurring, and correct the error as appropriate.
- Various modifications may be made to the illustrated embodiments without departing from the spirit and scope of the invention. For example, the breakpoints with which a creation breakpoint is associated may be set on creators as a whole, rather than on specific statements in those creators. Also, creation breakpoints may be handled completely separately from conventional-type breakpoints, and may not rely upon conventional-type breakpoints within each creator of a particular class.
- Other modifications will be apparent to one of ordinary skill in the art having the benefit of the instant disclosure. Therefore, the invention lies in the claims hereinafter appended.
Claims (20)
1. A computer-implemented method of debugging an object-oriented computer program, the method comprising:
in response to user input, setting a creation breakpoint for a class defined in the object-oriented computer program, wherein setting the creation breakpoint includes:
identifying a plurality of creators for the class;
setting a plurality of breakpoints on the identified creators;
adding an entry for the creation breakpoint in a breakpoint data structure;
storing breakpoint information for each of the plurality of breakpoints in the breakpoint data structure; and
associating the breakpoint information for each of the plurality of breakpoints with the entry in the breakpoint data structure for the creation breakpoint to associate each of the plurality of breakpoints with the creation breakpoint;
determining that the creation breakpoint has been hit during debugging by detecting hitting of any of the plurality of breakpoints, wherein the creation breakpoint is determined to be hit only in response to detecting hitting of a breakpoint set on an identified creator for the class; and
halting execution of the object-oriented computer program during debugging in response to determining that the creation breakpoint has been hit.
2. The method of claim 1 , wherein identifying the plurality of creators includes identifying every creator for the class.
3. The method of claim 1 , further comprising, after identifying the plurality of creators, displaying a list of the identified creators and receiving user input to select a subset of identified creators, wherein the plurality of breakpoints are set on only the subset of the identified creators.
4. The method of claim 1 , wherein the plurality of breakpoints are collectively set on all of the identified creators in response to the user input.
5. The method of claim 1 , wherein setting the plurality of breakpoints includes setting each breakpoint from the plurality of breakpoints on a statement in one of the identified creators.
6. The method of claim 5 , wherein setting each breakpoint includes inserting debugging program code in the creator on which such breakpoint is set.
7. The method of claim 1 , further comprising tracking a total number of hits to the plurality of breakpoints, wherein halting execution of the object-oriented computer program during debugging in response to determining that the creation breakpoint has been hit includes:
determining whether the total number of hits meets a condition in response to hitting any of the plurality of breakpoints, wherein the condition is the total number of hits meeting or exceeding a threshold, and wherein the total number of hits includes at least one hit from at least two different breakpoints; and
halting execution of the object-oriented computer program if the total number of hits meets the condition.
8. The method of claim 1 , wherein each creator comprises a constructor method defined in the class.
9. The method of claim 1 , further comprising collectively removing the creation breakpoint and the plurality of breakpoints in response to user input.
10. The method of claim 1 , wherein storing breakpoint information for each of the plurality of breakpoints in the breakpoint data structure comprises adding an entry for each breakpoint to a creator list associated with the creation breakpoint.
11. An apparatus, comprising:
a memory within which resides at least a portion of an object-oriented computer program; and
program code configured to debug the object-oriented computer program by:
in response to user input, setting a creation breakpoint for a class defined in the object-oriented computer program, wherein setting the creation breakpoint includes:
identifying a plurality of creators for the class;
setting a plurality of breakpoints on the identified creators;
adding an entry for the creation breakpoint in a breakpoint data structure;
storing breakpoint information for each of the plurality of breakpoints in the breakpoint data structure; and
associating the breakpoint information for each of the plurality of breakpoints with the entry in the breakpoint data structure for the creation breakpoint to associate each of the plurality of breakpoints with the creation breakpoint;
determining that the creation breakpoint has been hit during debugging by detecting hitting of any of the plurality of breakpoints, wherein the creation breakpoint is determined to be hit only in response to detecting hitting of a breakpoint set on an identified creator for the class; and
halting execution of the object-oriented computer program during debugging in response to determining that the creation breakpoint has been hit.
12. The apparatus of claim 11 , wherein the program code is configured to identify the plurality of creators by identifying every creator for the class.
13. The apparatus of claim 11 , wherein the program code is further configured to, after identifying the plurality of creators, display a list of the identified creators and receive user input to select a subset of identified creators, wherein the plurality of breakpoints are set on only the subset of the identified creators.
14. The apparatus of claim 11 , wherein the plurality of breakpoints are collectively set on all of the identified creators in response to the user input.
15. The apparatus of claim 11 , wherein the program code is configured to set the plurality of breakpoints by setting each breakpoint from the plurality of breakpoints on a statement in one of the identified creators.
16. The apparatus of claim 11 , wherein the program code is configured to track a total number of hits to the plurality of breakpoints, determine whether the total number of hits meets a condition in response to hitting any of the plurality of breakpoints, and halt execution of the object-oriented computer program if the total number of hits meets the condition, wherein the condition is the total number of hits meeting or exceeding a threshold, and wherein the total number of hits includes at least one hit from at least two different breakpoints.
17. The apparatus of claim 11 , wherein the program code is further configured to collectively remove the creation breakpoint and the plurality of breakpoints in response to user input.
18. The apparatus of claim 11 , wherein the program code is further configured to store breakpoint information for each of the plurality of breakpoints in the breakpoint data structure by adding an entry for each breakpoint to a creator list associated with the creation breakpoint
19. A program product, comprising:
program code configured to debug an object-oriented computer program by:
in response to user input, setting a creation breakpoint for a class defined in the object-oriented computer program, wherein setting the creation breakpoint includes:
identifying a plurality of creators for the class;
setting a plurality of breakpoints on the identified creators;
adding an entry for the creation breakpoint in a breakpoint data structure;
storing breakpoint information for each of the plurality of breakpoints in the breakpoint data structure; and
associating the breakpoint information for each of the plurality of breakpoints with the entry in the breakpoint data structure for the creation breakpoint to associate each of the plurality of breakpoints with the creation breakpoint;
determining that the creation breakpoint has been hit during debugging by detecting hitting of any of the plurality of breakpoints, wherein the creation breakpoint is determined to be hit only in response to detecting hitting of a breakpoint set on an identified creator for the class; and
halting execution of the object-oriented computer program during debugging in response to determining that the creation breakpoint has been hit; and
a signal bearing medium bearing the program code.
20. The program product of claim 19 , wherein the signal bearing medium includes at least one of a transmission medium and a recordable medium.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/197,895 US20050273765A1 (en) | 2001-11-30 | 2005-08-05 | Object-oriented creation breakpoints |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/997,990 US7644394B2 (en) | 2001-11-30 | 2001-11-30 | Object-oriented creation breakpoints |
US11/197,895 US20050273765A1 (en) | 2001-11-30 | 2005-08-05 | Object-oriented creation breakpoints |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/997,990 Continuation US7644394B2 (en) | 2001-11-30 | 2001-11-30 | Object-oriented creation breakpoints |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050273765A1 true US20050273765A1 (en) | 2005-12-08 |
Family
ID=25544640
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/997,990 Expired - Fee Related US7644394B2 (en) | 2001-11-30 | 2001-11-30 | Object-oriented creation breakpoints |
US11/197,895 Abandoned US20050273765A1 (en) | 2001-11-30 | 2005-08-05 | Object-oriented creation breakpoints |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/997,990 Expired - Fee Related US7644394B2 (en) | 2001-11-30 | 2001-11-30 | Object-oriented creation breakpoints |
Country Status (1)
Country | Link |
---|---|
US (2) | US7644394B2 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055605A1 (en) * | 2003-09-09 | 2005-03-10 | Andreas Blumenthal | Activating assertions and breakpoints |
US20050091654A1 (en) * | 2003-10-28 | 2005-04-28 | International Business Machines Corporation | Autonomic method, system and program product for managing processes |
US20070174707A1 (en) * | 2005-12-30 | 2007-07-26 | Cisco Technology, Inc. | Collecting debug information according to user-driven conditions |
US20080163179A1 (en) * | 2001-11-30 | 2008-07-03 | International Business Machines Corporation | Inheritance breakpoints for use in debugging object-oriented computer programs |
US20080168428A1 (en) * | 2007-01-10 | 2008-07-10 | Cary Lee Bates | Identifying a Potential Breakpoint Location in a Code Path in a Computer Program Based Upon the Frequency of Execution of the Code Path as Identified in Collected Profile Data |
US20100192134A1 (en) * | 2006-12-12 | 2010-07-29 | Microsoft Corporation | Mapping breakpoints between web based documents |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080360B2 (en) * | 2001-12-14 | 2006-07-18 | International Business Machines Corporation | Breakpoint safety net |
US6981248B2 (en) * | 2002-05-02 | 2005-12-27 | International Business Machines Corporation | Conditional breakpoint encountered indication |
CA2408457A1 (en) * | 2002-10-17 | 2004-04-17 | Ibm Canada Limited-Ibm Canada Limitee | Collection and detection of differences of values of expressions/variables when debugging a computer process |
US7272826B2 (en) * | 2003-05-08 | 2007-09-18 | International Business Machines Corporation | Hierarchical breakpoint groups |
US20050071820A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | Using a debugging framework to enforce best practices in program development |
FR2864655B1 (en) * | 2003-12-31 | 2006-03-24 | Trusted Logic | METHOD OF CONTROLLING INTEGRITY OF PROGRAMS BY VERIFYING IMPRESSIONS OF EXECUTION TRACES |
US8490064B2 (en) * | 2004-05-21 | 2013-07-16 | Oracle International Corporation | Hierarchical debug |
EP1768954A4 (en) * | 2004-06-24 | 2008-05-28 | Incyte Corp | 2-methylpropanamides and their use as pharmaceuticals |
US7484203B2 (en) * | 2005-03-21 | 2009-01-27 | International Business Machines Corporation | Automated interaction diagram generation using source code breakpoints |
US20060225051A1 (en) * | 2005-04-05 | 2006-10-05 | Cisco Technology, Inc. | Method and system for code coverage |
US8087002B2 (en) * | 2006-04-04 | 2011-12-27 | Tibco Software Inc. | Method and system for providing a visual debugger for an interpreted statistical language |
US7890935B2 (en) * | 2006-05-31 | 2011-02-15 | International Business Machines Corporation | Thread-specific presentation of breakpoints |
US8239832B2 (en) * | 2007-05-25 | 2012-08-07 | Microsoft Corporation | In-process debugging using external debugging infrastructure |
US7954147B2 (en) * | 2007-09-11 | 2011-05-31 | International Business Machines Corporation | Method for securely enabling dynamic instrumentation |
US8402431B2 (en) * | 2008-04-09 | 2013-03-19 | Renesas Electronics America Inc. | System and method for communicating with a microcontroller |
US20110321017A1 (en) * | 2010-06-29 | 2011-12-29 | International Business Machines Corporation | Computer code debugging method and apparatus providing exception breakpoints |
US9274931B2 (en) | 2013-05-06 | 2016-03-01 | International Business Machines Corporation | Inserting implicit sequence points into computer program code to support debug operations |
CN106971103B (en) * | 2016-02-25 | 2018-12-14 | 三星半导体(中国)研究开发有限公司 | The method of application program permission is managed in electric terminal |
US10255172B1 (en) * | 2016-09-30 | 2019-04-09 | EMC IP Holding Company LLC | Controlled testing using code error injection |
US10268558B2 (en) | 2017-01-13 | 2019-04-23 | Microsoft Technology Licensing, Llc | Efficient breakpoint detection via caches |
US10353801B2 (en) | 2017-02-28 | 2019-07-16 | International Business Machines Corporation | Abnormal timing breakpoints |
US10169196B2 (en) * | 2017-03-20 | 2019-01-01 | Microsoft Technology Licensing, Llc | Enabling breakpoints on entire data structures |
US10740220B2 (en) | 2018-06-27 | 2020-08-11 | Microsoft Technology Licensing, Llc | Cache-based trace replay breakpoints using reserved tag field bits |
US11669432B1 (en) * | 2020-07-17 | 2023-06-06 | Cisco Technology, Inc. | Compiler-enabled application execution tracking |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4796258A (en) * | 1986-06-23 | 1989-01-03 | Tektronix, Inc. | Microprocessor system debug tool |
US4866665A (en) * | 1986-10-27 | 1989-09-12 | Burr-Brown Ltd. | Break points system in a software monitor where entry address of break point routing equals op code of call instruction |
US4885717A (en) * | 1986-09-25 | 1989-12-05 | Tektronix, Inc. | System for graphically representing operation of object-oriented programs |
US5093914A (en) * | 1989-12-15 | 1992-03-03 | At&T Bell Laboratories | Method of controlling the execution of object-oriented programs |
US5124989A (en) * | 1990-01-08 | 1992-06-23 | Microsoft Corporation | Method of debugging a computer program |
US5321828A (en) * | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
US5560009A (en) * | 1990-09-21 | 1996-09-24 | Hewlett-Packard Company | Generating symbolic debug information by merging translation and compiler debug information |
US5590330A (en) * | 1994-12-13 | 1996-12-31 | International Business Machines Corporation | Method and system for providing a testing facility in a program development tool |
US5630049A (en) * | 1994-11-30 | 1997-05-13 | Digital Equipment Corporation | Method and apparatus for testing software on a computer network |
US5740440A (en) * | 1995-01-06 | 1998-04-14 | Objective Software Technology | Dynamic object visualization and browsing system |
US5754839A (en) * | 1995-08-28 | 1998-05-19 | Motorola, Inc. | Apparatus and method for implementing watchpoints and breakpoints in a data processing system |
US20030079159A1 (en) * | 2001-10-18 | 2003-04-24 | Ten-Hove Ronald A. | Mechanism for debugging a computer process |
US6718484B1 (en) * | 1999-11-08 | 2004-04-06 | Fujitsu Limited | Debugging method and apparatus for multitask programs and recording medium storing a program realizing the debugging method and apparatus |
US6823518B1 (en) * | 2000-10-17 | 2004-11-23 | Microsoft Corporation | Threading and communication architecture for a graphical user interface |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845125A (en) * | 1993-06-21 | 1998-12-01 | Kabushiki Kaisha Toshiba | Debugger using class information and dynamic instance inter-relationships |
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 |
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 |
US5778230A (en) * | 1995-11-13 | 1998-07-07 | Object Technology Licensing Corp. | Goal directed object-oriented debugging system |
US6091896A (en) | 1995-12-22 | 2000-07-18 | Hewlett-Packard Company | Debugging optimized code using data change points |
JP2795244B2 (en) * | 1996-01-17 | 1998-09-10 | 日本電気株式会社 | Program debugging system |
US5940616A (en) * | 1996-05-31 | 1999-08-17 | International Business Machines Corporation | Tracker class for object-oriented programming environments |
US6044305A (en) | 1996-10-04 | 2000-03-28 | Fisher Controls International, Inc. | Method and apparatus for debugging and tuning a process control network having distributed control functions |
US6189140B1 (en) * | 1997-04-08 | 2001-02-13 | Advanced Micro Devices, Inc. | Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic |
JPH1124901A (en) * | 1997-06-27 | 1999-01-29 | Internatl Business Mach Corp <Ibm> | Method and system for analyzing and displaying program information |
DE69803575T2 (en) * | 1997-07-25 | 2002-08-29 | British Telecommunications P.L.C., London | VISUALIZATION IN A MODULAR SOFTWARE SYSTEM |
CA2211505C (en) * | 1997-07-25 | 2002-02-05 | Ibm Canada Limited-Ibm Canada Limitee | Setting instance breakpoints in object oriented computer programs |
US6077312A (en) * | 1998-05-06 | 2000-06-20 | International Business Machines Corporation | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint |
US6629123B1 (en) | 1998-10-02 | 2003-09-30 | Microsoft Corporation | Interception of unit creation requests by an automatic distributed partitioning system |
US6266806B1 (en) * | 1998-10-22 | 2001-07-24 | Alcatel Usa Sourcing, L.P. | Object oriented monitor displaying interactions among objects in square matrix with an object designated in first column and additional column(s) for interacting objects |
US6378125B1 (en) | 1999-02-22 | 2002-04-23 | International Business Machines Corporation | Debugger thread identification points |
JP2001034504A (en) | 1999-07-19 | 2001-02-09 | Mitsubishi Electric Corp | Source level debugger |
JP3339482B2 (en) | 1999-12-15 | 2002-10-28 | 日本電気株式会社 | Distributed debugging apparatus, debugging method, and recording medium recording control program |
US6681384B1 (en) | 1999-12-23 | 2004-01-20 | International Business Machines Corporation | Multi-threaded break-point |
-
2001
- 2001-11-30 US US09/997,990 patent/US7644394B2/en not_active Expired - Fee Related
-
2005
- 2005-08-05 US US11/197,895 patent/US20050273765A1/en not_active Abandoned
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4796258A (en) * | 1986-06-23 | 1989-01-03 | Tektronix, Inc. | Microprocessor system debug tool |
US4885717A (en) * | 1986-09-25 | 1989-12-05 | Tektronix, Inc. | System for graphically representing operation of object-oriented programs |
US4866665A (en) * | 1986-10-27 | 1989-09-12 | Burr-Brown Ltd. | Break points system in a software monitor where entry address of break point routing equals op code of call instruction |
US5093914A (en) * | 1989-12-15 | 1992-03-03 | At&T Bell Laboratories | Method of controlling the execution of object-oriented programs |
US5124989A (en) * | 1990-01-08 | 1992-06-23 | Microsoft Corporation | Method of debugging a computer program |
US5560009A (en) * | 1990-09-21 | 1996-09-24 | Hewlett-Packard Company | Generating symbolic debug information by merging translation and compiler debug information |
US5321828A (en) * | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
US5630049A (en) * | 1994-11-30 | 1997-05-13 | Digital Equipment Corporation | Method and apparatus for testing software on a computer network |
US5590330A (en) * | 1994-12-13 | 1996-12-31 | International Business Machines Corporation | Method and system for providing a testing facility in a program development tool |
US5740440A (en) * | 1995-01-06 | 1998-04-14 | Objective Software Technology | Dynamic object visualization and browsing system |
US5754839A (en) * | 1995-08-28 | 1998-05-19 | Motorola, Inc. | Apparatus and method for implementing watchpoints and breakpoints in a data processing system |
US6718484B1 (en) * | 1999-11-08 | 2004-04-06 | Fujitsu Limited | Debugging method and apparatus for multitask programs and recording medium storing a program realizing the debugging method and apparatus |
US6823518B1 (en) * | 2000-10-17 | 2004-11-23 | Microsoft Corporation | Threading and communication architecture for a graphical user interface |
US20030079159A1 (en) * | 2001-10-18 | 2003-04-24 | Ten-Hove Ronald A. | Mechanism for debugging a computer process |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163179A1 (en) * | 2001-11-30 | 2008-07-03 | International Business Machines Corporation | Inheritance breakpoints for use in debugging object-oriented computer programs |
US8423969B2 (en) | 2001-11-30 | 2013-04-16 | International Business Machines Corporation | Inheritance breakpoints for use in debugging object-oriented computer programs |
US20050055605A1 (en) * | 2003-09-09 | 2005-03-10 | Andreas Blumenthal | Activating assertions and breakpoints |
US7603659B2 (en) * | 2003-09-09 | 2009-10-13 | Sap Aktiengesellschaft | Activating assertions and breakpoints |
US20050091654A1 (en) * | 2003-10-28 | 2005-04-28 | International Business Machines Corporation | Autonomic method, system and program product for managing processes |
US20070174707A1 (en) * | 2005-12-30 | 2007-07-26 | Cisco Technology, Inc. | Collecting debug information according to user-driven conditions |
US7694180B2 (en) * | 2005-12-30 | 2010-04-06 | Cisco Technology, Inc. | Collecting debug information according to user-driven conditions |
US20100192134A1 (en) * | 2006-12-12 | 2010-07-29 | Microsoft Corporation | Mapping breakpoints between web based documents |
US8245198B2 (en) * | 2006-12-12 | 2012-08-14 | Microsoft Corporation | Mapping breakpoints between web based documents |
US20080168428A1 (en) * | 2007-01-10 | 2008-07-10 | Cary Lee Bates | Identifying a Potential Breakpoint Location in a Code Path in a Computer Program Based Upon the Frequency of Execution of the Code Path as Identified in Collected Profile Data |
US8219980B2 (en) * | 2007-01-10 | 2012-07-10 | International Business Machines Corporation | Identifying a potential breakpoint location in a code path in a computer program based upon the frequency of execution of the code path as identified in collected profile data |
Also Published As
Publication number | Publication date |
---|---|
US20030106045A1 (en) | 2003-06-05 |
US7644394B2 (en) | 2010-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7644394B2 (en) | Object-oriented creation breakpoints | |
US8423969B2 (en) | Inheritance breakpoints for use in debugging object-oriented computer programs | |
US7503037B2 (en) | System and method for identifying bugs in software source code, using information from code coverage tools and source control tools to determine bugs introduced within a time or edit interval | |
US6634020B1 (en) | Uninitialized memory watch | |
US6067641A (en) | Demand-based generation of symbolic information | |
CN110554965B (en) | Automated fuzz testing method, related equipment and computer readable storage medium | |
US8627287B2 (en) | Prioritizing quality improvements to source code | |
US8219980B2 (en) | Identifying a potential breakpoint location in a code path in a computer program based upon the frequency of execution of the code path as identified in collected profile data | |
US6658649B1 (en) | Method, apparatus and article of manufacture for debugging a user defined region of code | |
US6430741B1 (en) | System and method for data coverage analysis of a computer program | |
US9535823B2 (en) | Method and apparatus for detecting software bugs | |
Soltani et al. | A guided genetic algorithm for automated crash reproduction | |
US20050177775A1 (en) | Data race detection using sequential program analysis | |
US20040205720A1 (en) | Augmenting debuggers | |
US7089535B2 (en) | Code coverage with an integrated development environment | |
US9183114B2 (en) | Error detection on the stack | |
US6493834B1 (en) | Apparatus and method for dynamically defining exception handlers in a debugger | |
US6978399B2 (en) | Debug thread termination control points | |
WO2012127482A1 (en) | Method and system for detecting memory leaks in a program | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
US20080127119A1 (en) | Method and system for dynamic debugging of software | |
US7624381B1 (en) | Portable detection of start and completion of object construction | |
Brörkens et al. | Dynamic event generation for runtime checking using the JDI | |
US20060101418A1 (en) | Apparatus and method for automatic generation of event profiles in an integrated development environment | |
Delamare et al. | Vidock: a tool for impact analysis of aspect weaving on test cases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION |