IP Library › Granted Patent US 8,356,287
Granted Patent B2
US 8,356,287 · App. 11/877,689 · Granted Jan 15, 2013

Device, system and method of debugging computer programs

Inventors: Rachel Tzoref (Haifa, IL); Shmuel Ur (Shorashim, IL); Elad Yom-Tov (Hamovil, IL)
Assignee: International Business Machines Corporation
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,356,287
App. No.
11/877,689
Filed
Oct 24, 2007
Granted
Jan 15, 2013
Kind
B2
Examiner
LUU, CUONG V
Art Unit
2192
USPC
717/130
Abstract

Device, system, and method of debugging computer programs. For example, a method for debugging computer programs includes: locating a bug in a computer program based on a first score corresponding to a first instrumentation location of the computer program and a second score corresponding to a second instrumentation location of the computer program.

Claims (40)

1. A method for debugging computer programs, the method executed by a processor comprising: locating a bug in a computer program based on a first score corresponding to a first instrumentation location of the computer program and a second score corresponding to a second instrumentation location of the computer program,

wherein the first score corresponding to the first instrumentation location and the second score corresponding to the second instrumentation location are obtained by repeatedly executing the computer program and the first and second instrumentation locations are distinct,

wherein the first or the second score is calculated by an arithmetic operation on number of runs associated with the first or the second instrumentation location, respectively, in which the computer bug was revealed and number of runs in which the computer bug was not revealed, and

wherein the first score indicates an estimated probability that the first program location induces the program bug, and the second score indicates an estimated probability that the second program location induces the program bug.

2. The method of claim 1 , wherein the arithmetic operation is division.

3. The method of claim 1 , wherein locating the bug comprises:

calculating an absolute value of a difference between the first score and the second score.

4. The method of claim 1 , wherein locating the bug comprises:

calculating a plurality of score differences corresponding respectively to a plurality of pairs of consecutive instrumentation locations.

5. The method of claim 4 , comprising:

selectively displaying one or more score differences having the greatest absolute values.

6. The method of claim 4 , wherein locating the bug comprises:

determining one or more score differences that are significant to localizing the program bug; and

selectively displaying the one or more score differences in proximity to edges of a control flow graph corresponding to a flow of the computer program.

7. The method of claim 1 , comprising:

generating a control flow graph corresponding to a flow of the computer program; and

selectively displaying one or more score differences associated with one or more edges of the flow control graph.

8. The method of claim 7 , comprising: receiving a user selection of one of the edges of the control flow graph, said one of the edges having an entry node and an exit node; and displaying a program portion starting at a program location corresponding to the entry node and ending at a program location corresponding to the exit node.

9. A system for debugging computer programs, the system comprising:

a processor, a storage device, and a debugger executed by the processor for locating a bug in a computer program stored on the storage device,

based on a first score corresponding to a first instrumentation location of the computer program and a second score corresponding to a second instrumentation location of the computer program,

wherein the first score corresponding to the first instrumentation location and the second score corresponding to the second instrumentation location are obtained by repeatedly executing the computer program and the first and second instrumentation locations are distinct,

wherein the first or the second score is calculated by an arithmetic operation on number of runs associated with the first or the second instrumentation location, respectively, in which the computer bug was revealed and number of runs in which the computer bug was not revealed, and

wherein the first score indicates an estimated probability that the first program location induces the program bug, and the second score indicates an estimated probability that the second program location induces the program bug.

10. The method of claim 9 , wherein the arithmetic operation is division.

11. The system of claim 9 , wherein the debugger is to calculate an absolute value of a difference between the first score and the second score.

12. The system of claim 9 , wherein the debugger is to calculate a plurality of score differences corresponding respectively to a plurality of pairs of consecutive instrumentation locations.

13. The system of claim 12 , wherein the debugger is to selectively display one or more score differences having the greatest absolute values.

14. The system of claim 12 , wherein the debugger is to determine one or more score differences that are significant to localizing the program bug, and to selectively display the one or more score differences in proximity to edges of a control flow graph corresponding to a flow of the computer program.

15. The system of claim 9 , wherein the debugger is to generate a control flow graph corresponding to a flow of the computer program, and to selectively display one or more score differences associated with one or more edges of the flow control graph.

16. The system of claim 15 , wherein the debugger is to receive a user selection of one of the edges of the control flow graph, said one of the edges having an entry node and an exit node, and to display a program portion starting at a program location corresponding to the entry node and ending at a program location corresponding to the exit node.

17. A computer program product comprising a storage media including a computer readable program, wherein the computer readable program when executed on a computer causes the computer to perform a method comprising:

locating a bug in a computer program based on a first score corresponding to a first instrumentation location of the computer program, and a second score corresponding to a second instrumentation location of the computer program, wherein the first score corresponding to the first instrumentation location and the second score corresponding to the second instrumentation location are obtained by repeatedly executing the computer program and the first and second instrumentation locations are distinct,

wherein the first or the second score is calculated by an arithmetic operation on number of runs associated with the first or the second instrumentation location, respectively, in which the computer bug was revealed and number of runs in which the computer bug was not revealed,

wherein the first score indicates an estimated probability that the first program location induces the program bug, and the second score indicates an estimated probability that the second program location induces the program bug, and

wherein said computer readable program is stored on said storage media.

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

a processor, a storage device storing the computer program, and a debugger executed by the processor for calculating a first score corresponding to a first instrumentation location of the computer program and a second score corresponding to a second instrumentation location of the computer program, the first score corresponding to the first instrumentation location and the second score corresponding to the second instrumentation location are obtained by repeatedly executing the computer program and the first and second instrumentation locations are distinct, wherein the first or the second score is calculated by an arithmetic operation on number of runs associated with the first or the second instrumentation location, respectively, in which the computer bug was revealed and number of runs in which the computer bug was not revealed, wherein the first score indicates an estimated probability that the first program location induces the program bug, and wherein the second score indicates an estimated probability that the second program location induces the program bug;

a difference calculator to calculate an absolute value of a difference between the first score and the second score; and

a difference selector to selectively display one or more score differences having the greatest absolute values out of a plurality of score differences corresponding respectively to a plurality of pairs of consecutive instrumentation locations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2007
From: TZOREF, RACHEL; UR, SHMUEL; YOM-TOV, ELAD
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 020003/0640 →
Continuity (1)
Related Publication 20090113399A1 · Apr 30, 2009