IP Library Granted Patent US 6,839,894
Granted Patent B1
US 6,839,894 · App. 09/717,187 · Granted Jan 4, 2005

Method and apparatus for debugging a software program using dynamic debug patches and copy on write views

Assignee: Oracle International 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 6,839,894
App. No.
09/717,187
Granted
Jan 4, 2005
Kind
B1
Abstract

A method and apparatus for debugging a software program is provided that is non-intrusive and allows multiple persons to debug concurrently in view private sessions. In one example, a method includes preserving a memory state of a portion of a software program, such as a database system. A second software program is compiled and dynamically linked, and which when executed, would normally cause modification to targeted data in the preserved portion of the software program. The second software program is executed by making a copy of the targeted data in the preserved portion of the software program. The copy is modified to generate a modified copy of the targeted data without modifying the data that is in the preserved portion of the software program. In subsequent accesses, the user that issued that executed the second software program accesses the modified copy whenever the user would have otherwise accessed the corresponding preserved portion. The second software program is made accessible to other users of the database system by publishing in the preserved portion a corresponding symbolic name associated with the second software program. If another user accesses the second software program and executes it, then another copy of the targeted data is made for that user. As before the copy is modified to generate a modified copy of the targeted data without modifying the data that is in the preserved portion of the software program.

Claims (63)

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

preserving a memory state of a preserved portion of the first software program;

dynamically linking a second software program to the first software program without deallocating from volatile memory the first software program;

executing the second software program; and

if execution of the second software program would otherwise cause modification to targeted data that is in the preserved portion of the first software program, then making a copy of the targeted data and modifying the copy of the targeted data to generate a modified copy of the targeted data without modifying the targeted data that is in the preserved portion of the first software program.

2. The method of claim 1 , further comprising the steps of:

publishing in the preserved portion of the first software program a corresponding symbolic name associated with the second software program; and

multiple users accessing the second software program is accessed through the corresponding symbolic name.

3. The method of claim 1 , wherein the first software program is a database system.

4. The method of claim 1 , wherein the step of preserving a memory state further includes the step of suspending a failed application of the database system.

5. The method of claim 1 , further including the step of, in response to a subsequent attempt to access the targeted data in the preserved portion of the first software program, accessing the modified copy of the targeted data.

6. The method of claim 5 , wherein the steps of dynamically linking and executing are initiated by a particular user, and wherein the step of accessing the modified copy occurs only if that particular user initiates the subsequent attempt to access the targeted data.

7. The method of claim 1 , wherein:

the steps of dynamically linking and executing the second software program are performed by a first user;

the modified copy is a first modified copy of the targeted data; and

the method further comprises the steps of:

after the first modified copy has been created for the first user, a second user executing performing an operation which, when executed, would cause modification to the targeted data in the preserved portion; and

performing the operation by making a second copy of the targeted data and modifying the second copy to generate a second modified copy of the targeted data, the second modified copy being separate from the first modified copy and from the preserved portion.

8. The method of claim 7 , further comprising the steps of:

after the first and second modified copies have been created for the first user and second user respectively, a third user dynamically linking and executing a third software program which, when executed, would cause modification to the targeted data in the preserved portion; and

making a third copy of the targeted data and modifying the third copy to generate a third modified copy, the third modified copy being separate from the first modified copy, from the second modified copy, and from the preserved portion.

9. A computer-readable medium bearing instructions for debugging a first software program, the instructions arranged, when executed by one or more processors, to cause the one or more processors to perform the steps of:

preserving a memory state of a preserved portion of the first software program;

dynamically linking a second software program to the first software program without deallocating from volatile memory the first software program;

executing the second software program; and

if execution of the second software program would otherwise cause modification to targeted data that is in the preserved portion of the first software program, then making a copy of the targeted data and modifying the copy of the targeted data to generate a modified copy of the targeted data without modifying the targeted data that is in the preserved portion of the first software program.

10. The computer-readable medium of claim 9 , further comprising the steps of:

publishing in the preserved portion of the first software program a corresponding symbolic name associated with the second software program; and

multiple users accessing the second software program is accessed through the corresponding symbolic name.

11. The computer-readable medium of claim 9 , wherein the first software program is a database system.

12. The computer-readable medium of claim 9 , wherein the step of preserving a memory state further includes the step of suspending a failed application of the database system.

13. The computer-readable medium of claim 9 , further including the step of, in response to a subsequent attempt to access the targeted data in the preserved portion of the first software program, accessing the modified copy of the targeted data.

14. The computer-readable medium of claim 13 , wherein the steps of dynamically linking and executing are initiated by a particular user, and wherein the step of accessing the modified copy occurs only if that particular user initiates the subsequent attempt to access the targeted data.

15. The computer-readable medium of claim 9 , wherein:

the steps of dynamically linking and executing the second software program are performed by a first user;

the modified copy is a first modified copy of the targeted data; and

the method further comprises the steps of:

after the first modified copy has been created for the first user, a second user executing performing an operation which, when executed, would cause modification to the targeted data in the preserved portion; and

performing the operation by making a second copy of the targeted data and modifying the second copy to generate a second modified copy of the targeted data, the second modified copy being separate from the first modified copy and from the preserved portion.

16. The computer-readable medium of claim 15 , further comprising the steps of:

after the first and second modified copies have been created for the first user and second user respectively, a third user dynamically linking and executing a third software program which, when executed, would cause modification to the targeted data in the preserved portion; and

making a third copy of the targeted data and modifying the third copy to generate a third modified copy, the third modified copy being separate from the first modified copy, from the second modified copy, and from the preserved portion.

17. An apparatus for debugging a first software program, wherein the apparatus comprises a memory storing one or more instructions which, when executed by one or more processors, cause the one or more processors to perform the steps of:

preserving a memory state of a preserved portion of the first software program;

dynamically linking a second software program to the first software program without deallocating from volatile memory the first software program;

executing the second software program; and

if execution of the second software program would otherwise cause modification to targeted data that is in the preserved portion of the first software program, then making a copy of the targeted data and modifying the copy of the targeted data to generate a modified copy of the targeted data without modifying the targeted data that is in the preserved portion of the first software program.

18. The apparatus of claim 17 , wherein the memory includes one or more additional instructions which, when executed by the one or more processors, cause the one or more processors to perform the additional steps of:

publishing in the preserved portion of the first software program a corresponding symbolic name associated with the second software program; and

multiple users accessing the second software program is accessed through the corresponding symbolic name.

19. The apparatus of claim 17 , wherein the first software program is a database system.

20. The apparatus of claim 17 , wherein the step of preserving a memory state further includes the step of suspending a failed application of the database system.

21. The apparatus of claim 17 , wherein the memory includes one or more additional instructions which, when executed by the one or more processors, cause the one or more processors to perform the additional step of, in response to a subsequent attempt to access the targeted data in the preserved portion of the first software program, accessing the modified copy of the targeted data.

22. The apparatus of claim 21 , wherein the steps of dynamically linking and executing are initiated by a particular user, and wherein the step of accessing the modified copy occurs only if that particular user initiates the subsequent attempt to access the targeted data.

23. The apparatus of claim 17 , wherein:

the steps of dynamically linking and executing the second software program are performed by a first user;

the modified copy is a first modified copy of the targeted data; and

wherein the memory includes one or more additional instructions which, when executed by the one or more processors, cause the one or more processors to perform the additional steps of:

after the first modified copy has been created for the first user, a second user executing performing an operation which, when executed, would cause modification to the targeted data in the preserved portion; and

performing the operation by making a second copy of the targeted data and modifying the second copy to generate a second modified copy of the targeted data, the second modified copy being separate from the first modified copy and from the preserved portion.

24. The apparatus of claim 23 , wherein the memory includes one or more additional instructions which, when executed by the one or more processors, cause the one or more processors to perform the additional steps of:

after the first and second modified copies have been created for the first user and second user respectively, a third user dynamically linking and executing a third software program which, when executed, would cause modification to the targeted data in the preserved portion; and

making a third copy of the targeted data and modifying the third copy to generate a third modified copy, the third modified copy being separate from the first modified copy, from the second modified copy, and from the preserved portion.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2003
From: ORACLE CORPORATION
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 013944/0938 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2000
From: JOSHI, VIKRAM; TSUKERMAN, ALEX; YAMAGUCHI, SHARI
To: ORACLE CORPORATION
Reel/Frame 011329/0436 →
Continuity (1)
Provisional Application 6016659800 · Nov 19, 1999