IP Library Granted Patent US 8,522,213
Granted Patent B2
US 8,522,213 · App. 13/106,375 · Granted Aug 27, 2013

Debugger and debugging methods using breakpoints conditioned on the static identity of data

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,522,213
App. No.
13/106,375
Granted
Aug 27, 2013
Kind
B2
Abstract

A method of debugging a program includes setting a breakpoint in the program identifying a location within the program, a reference-typed expression that is valid within the scope of the location, and a set of statically-specified data entities to which the expression refers, upon encountering the location during a current run of the program, determining whether the associated expression evaluates to a reference corresponding to one of the statically-specified data entities, pausing the program at the location if a value of the expression refers to one of the statically-specified data entities, and continuing the program without pausing if the value does not refer to one of the statically-specified data entities.

Claims (41)

1. A method of debugging a program, the method comprising:

setting a breakpoint in the program identifying i) a location within the program, ii) a reference-typed expression that is valid within a scope of the location, and iii) a statically-specified data entity to which the expression refers;

upon encountering the location during a current run of the program, determining, by a processor, whether the associated expression evaluates to the statically-specified data entity;

pausing the program at the location if a value of the expression refers to the statically-specified data entity; and

continuing the program without pausing if the value does not refer to the statically-specified data entity.

2. The method of claim 1 , wherein the reference-typed expression is an expression whose value refers to a data entity that is dynamically allocated by the program.

3. The method of claim 1 , wherein the expression is valid when the expression refers only to literal values and variables.

4. The method of claim 1 , wherein the location is a line of code within the program or an entry point of a program entity.

5. The method of claim 1 , wherein the referenced-typed expression is an expression whose value refers to an object class and the statically-specified data is an instance of the object class.

6. The method of claim 5 , wherein the breakpoint identifies the statically-specified data entity by including a name of the object class that allocates the instance.

7. The method of claim 5 , wherein the breakpoint identifies the statically-specified data entity by including a name of an object method that allocates the instance.

8. The method of claim 1 , wherein the breakpoint identifies the statically-specified data entity by including a name of a file that allocates the data entity.

9. The method of claim 1 , wherein the breakpoint identifies the statically-specified data entity by including a name of a library that allocate the data entity.

10. The method of claim 1 , wherein prior to determining whether the value refers to the statically specified data entity, an object identifier and a stack backtrace of an allocation of the expression is recorded as an entry in a table.

11. The method of claim 10 , wherein determining whether the value refers to the statically specified data entity comprises:

determining an object identifier of an object to which the value refers;

determining the entry in the table that includes the object identifier; and

determining that the value refers to the statically-specified data entity if the stack backtrace of the entry refers to any allocation location associated with the statically-specified data entity.

12. The method of claim 11 , further comprising determining that the value does not refer to the statically-specified data entity if the stack backtrace does not refer to any allocation location associated with the statically-specified data entity.

13. The method of claim 10 , wherein the table is a hash table.

14. A method of debugging a program, the method comprising:

upon encountering a current line of a program identified by a breakpoint, determining, by a processor, whether an expression within a scope of the current line evaluates to a reference corresponding to a statically-specified data entity identified by the breakpoint, wherein a value of the expression refers to a data entity dynamically allocated by the program;

pausing the program at the location if a value of an expression of the breakpoint refers to the statically-specified data entity; and

continuing the program without pausing if the value does not refer to the statically-specified data entity.

15. The method of claim 14 , wherein the expression is valid when the expression refers only to literal values and variables.

16. The method of claim 14 , wherein a value of the expression refers to an object class and the statically-specified data entity is an instance of the corresponding object class.

17. The method of claim 14 , wherein prior to determining, for each allocation of the expression, an object identifier and a stack backtrace of the allocation are recorded as an entry in a table.

18. An apparatus for debugging a program, the apparatus comprising:

a memory for storing at least one target program, a debugging program, and a user interface program;

a processor configured to execute the selected target program and the debugging program,

wherein the user interface program enables a user to select one of the target programs for debugging, and set a breakpoint in the program identifying i) a location within the program, ii) a reference-typed expression that is valid within a scope of the location, and iii) a statically-specified data entity to which the expression refers, and

wherein the debugging program determines whether the associated expression evaluates to a reference corresponding to the statically-specified data entity, pauses the target program at the location if a value of the expression refers to the statically-specified data entity, and continues the target program without pausing if the value does not refer to the statically-specified data entity.

19. The apparatus of claim 18 , wherein the user interface program enables the user to examine the content of at least one memory location of the memory when the program is paused.

20. A method of debugging a program, the method comprising:

setting a breakpoint in the program identifying a first location within the program, a reference-typed expression that is valid within the scope of the location, and a set of statically-specified data entities to which the expression refers, wherein for each allocation of the expression an object identifier and a stack backtrace of the allocation are recorded as an entry in a table;

upon encountering the location during a current run of the program, determining, by a processor, whether the associated expression evaluates to a reference corresponding to one of the statically-specified data entities;

determining an object identifier of an object to which a value of the expression refers;

determining the entry in the table that includes the object identifier;

determining that the value refers to one of the statically-specified data entities if the stack backtrace of the entry refers to a second location associated with the statically-specified data entities;

pausing the program at the first location if the value is determined to refer to the one statically-specified data entity; and

continuing the program without pausing if the value is not determined to refer to the one statically-specified data entity.

Assignments (2)
CONVEYOR ASSIGNS UNDIVIDED 50% INTEREST Recorded Nov 1, 2017
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: SERVICENOW, INC.; INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044347/0723 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2011
From: FUHRER, ROBERT M.; SOROKER, DANNY
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 026268/0970 →