IP Library Granted Patent US 10,339,031
Granted Patent B2
US 10,339,031 · App. 15/700,999 · Granted Jul 2, 2019

Efficient method data recording

Inventors: Eyal Koren (Dafna, IL); Asaf Dafner (Gedera, IL); Shiri Semo Judelman (Kfar-Saba, IL)
Assignee: BMC Software Israel Ltd.
G06F11/3636G06F8/70G06F9/4484G06F11/302G06F11/3466G06F11/3495G06F11/3688
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 10,339,031
App. No.
15/700,999
Granted
Jul 2, 2019
Kind
B2
Abstract

According to one general aspect, a method may include monitoring the execution of at least a portion of a software application. The method may also include collecting subroutine call information regarding a plurality of subroutine calls included by the portion of the software application, wherein one or more of the subroutine calls is selected for detailed data recording. The method may further include pruning, as the software application is being executed, a subroutine call tree to include only the subroutine calls selected for detailed data recording and one or more parent subroutine calls of each subroutine calls selected for detailed data recording.

Claims (53)

1. A method executed by a processor, the method comprising:

collecting subroutine call data regarding a of a plurality of subroutine calls executed by a software application;

selecting one or more of the plurality of subroutine calls for data recording, each of the selected subroutine calls being assigned a unique call identification (ID);

storing the recorded data for the selected subroutine calls in a subroutine data registry; and

pruning, as the plurality of subroutine calls execute, a subroutine call tree to include only the selected subroutine calls and one or more parent subroutine calls of each of the selected subroutine calls, the unique call IDs of the subroutine calls in the pruned subroutine call tree providing a mapping to the recorded data for the selected subroutine calls in the subroutine data registry,

wherein pruning the subroutine call tree includes maintaining an array of elements, each array element being associated with a respective subroutine call, the maintaining including:

adding a first element to the array when a first selected subroutine is called;

retaining, when the first selected subroutine exits, the first element in the array based on determining that the first selected subroutine is associated with a parent subroutine included in selected subroutine calls;

selecting a second element present in the array;

removing the selected second element from the array; and

generating the subroutine call tree based on the elements remaining in the array, the subroutine call tree including the first subroutine call associated with the first element and omitting the second subroutine call associated with the selected second element.

2. The method of claim 1 , wherein the recorded data for a subroutine call includes one or more of the following: a subroutine name, a class name or name of a data structure that includes the subroutine, input arguments or variables and/or their values, return values, a recording rule that caused the data recording or inclusion of the subroutine in the subroutine call tree, a subroutine descriptor or signature that identifies the subroutine, and the unique call ID of the subroutine.

3. The method of claim 1 , wherein selecting one or more of the plurality of subroutine calls for detailed data recording includes selecting a subroutine call for data recording based on a predefined selection rule, and mapping the unique call ID of the selected subroutine call to the predefined selection rule.

4. The method of claim 3 , wherein the predefined selection rule is based on one or more of the following: a predefined static list of subroutine calls, points of code execution, a subroutine throwing an exception, a subroutine returning a null or other value, and an error condition.

5. The method of claim 3 , wherein the predefined selection rule is based on a dynamic triggering event in the execution of a subroutine call.

6. The method of claim 5 , wherein the dynamic triggering event includes the subroutine call exceeding a threshold between an entry time and an exit time.

7. The method of claim 1 , wherein maintaining the array of one or more subroutine call elements further includes:

adding a single shared element to the array;

adding a third element to the array when a third subroutine is called, the third element including a first pointer to the single shared element;

adding a fourth subroutine call entry element to the array when a fourth subroutine is called, the fourth subroutine call entry element including a second pointer to the single shared element; and

removing, when the fourth subroutine exits, the fourth subroutine call entry element from the array based on determining that the fourth subroutine is not selected for data recording.

8. The method of claim 1 , wherein collecting subroutine call data regarding the hierarchy of the plurality of subroutine calls includes injecting code for collecting subroutine call data into the subroutine calls selected for data recording.

9. An apparatus comprising:

a processor; and

a memory including a subroutine call registry, the processor configured to:

collect subroutine call data regarding a hierarchy of a plurality of subroutine calls executed by a software application;

select one or more of the plurality of subroutine calls for data recording, each of the selected subroutine calls being assigned a unique call identification (ID);

store the recorded data for the selected subroutine calls in a subroutine data registry; and

prune, as the plurality of subroutine calls execute, a subroutine call tree to include only the selected subroutine calls and one or more parent subroutine calls of each of the selected, the unique call IDs of the subroutine calls in the pruned subroutine call tree providing a mapping to the recorded data for the selected subroutine calls in the subroutine data registry,

wherein pruning the subroutine call tree includes maintaining an array of elements, each element being associated with a respective subroutine call, the maintaining including:

adding a first element to the array when a first selected subroutine is called;

retaining, when the first selected subroutine exits, the first element in the array based on determining that the first selected subroutine is associated with a parent subroutine included in the selected subroutine calls;

selecting a second element present in the array; and

removing the second element from the array; and

generating the subroutine call tree based on the elements remaining in the array, the subroutine call tree including the first subroutine call associated with the first element and omitting the second subroutine call associated with the selected second element.

10. The apparatus of claim 9 , wherein the recorded data for a subroutine call includes one or more of the following: a subroutine name, a class name or name of a data structure that includes the subroutine, input arguments or variables and/or their values, return values, a recording rule that caused the data recording or inclusion of the subroutine in the subroutine call tree, a subroutine descriptor or signature that identifies the subroutine, and the unique call ID of the subroutine.

11. The apparatus of claim 9 , wherein selecting one or more of the plurality of the subroutine calls for detailed data recording includes selecting a subroutine call for data recording based on a predefined selection rule, and mapping the unique call ID of the selected subroutine call to the predefined selection rule.

12. The apparatus of claim 11 , wherein the predefined selection rule is based on one or more of the following: a predefined static list of subroutine calls, points of code execution, a subroutine throwing an exception, a subroutine returning a null or other value, and an error condition.

13. The apparatus of claim 11 , wherein the predefined selection rule is based on a dynamic triggering event in the execution of a subroutine call.

14. A computer program product tangibly and non-transitorily embodied on a non-transitory computer-readable medium, the computer program product including executable code that, when executed, causes an apparatus to:

collect subroutine call data regarding a hierarchy of a plurality of subroutine calls executed by a software application;

select one or more of the plurality of subroutine calls for data recording, each of the selected subroutine calls being assigned a unique call identification (ID);

store the recorded data for the selected subroutine calls in a subroutine data registry; and

prune, as the plurality of subroutine calls execute, a subroutine call tree to include only the selected subroutine calls and one or more parent subroutine calls of each of the selected subroutine calls, the unique call IDs of the subroutine calls in the pruned subroutine call tree providing a mapping to the recorded data for the selected subroutine calls in the subroutine data registry,

wherein pruning the subroutine call tree includes maintaining an array of elements, each array element being associated with a respective subroutine call, the maintaining including:

adding a first element to the array when a first selected subroutine is called;

retaining, when the first selected subroutine exits, the first element in the array based on determining that the first selected subroutine is associated with a parent subroutine included in the selected subroutine calls;

selecting a second element present in the array; and

removing the selected second element from the array; and

generating the subroutine call tree based on the elements remaining in the array, the subroutine call tree including the first subroutine call associated with the first element and omitting the second subroutine call associated with the selected second element.

15. The computer program product of claim 14 , wherein the recorded data for a subroutine call includes one or more of the following: a subroutine name, a class name or name of a data structure that includes the subroutine, input arguments or variables and/or their values, return values, a recording rule that caused the data recording or inclusion of the subroutine in the subroutine call tree, a subroutine descriptor or signature that identifies the subroutine, and the unique call ID of the subroutine.

16. The computer program product of claim 14 , wherein selecting one or more of the plurality of subroutine calls for detailed data recording includes selecting a subroutine call for data recording based on a predefined selection rule, and mapping the unique call ID of the selected subroutine call to the predefined selection rule.

17. The computer program product of claim 16 , wherein the predefined selection rule is based on one or more of the following: a predefined static list of subroutine calls, points of code execution, a subroutine throwing an exception, a subroutine returning a null or other value, and an error condition.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2026
From: BMC SOFTWARE ISRAEL LTD
To: BMC HELIX ISRAEL LTD.
Reel/Frame 075403/0859 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2018
From: IDENTIFY SOFTWARE LTD.
To: BMC SOFTWARE ISRAEL LTD.
Reel/Frame 047465/0855 →
MERGER Recorded Nov 9, 2018
From: IDENTIFY SOFTWARE LTD.
To: BMC SOFTWARE ISRAEL LTD.
Reel/Frame 047465/0871 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2017
From: KOREN, EYAL; DAFNER, ASAF; JUDELMAN, SHIRI S.
To: IDENTIFY SOFTWARE LTD. (IL)
Reel/Frame 043561/0834 →
Continuity (4)
Continuation 15299078 · Oct 20, 2016
Continuation 15003280 · Jan 21, 2016
Continuation 13630784 · Sep 28, 2012
Related Publication 20180024910A1 · Jan 25, 2018