IP Library Granted Patent US 8,504,994
Granted Patent B2
US 8,504,994 · App. 12/575,357 · Granted Aug 6, 2013

System and method for software diagnostics using a combination of visual and dynamic tracing

Inventors: Valery Golender (Kfar Saba, IL); Ido Ben Moshe (Herzlia, IL); Shlomo Wygodny (Ramut Hasharon, IL)
Assignee: Identify Software, Ltd.
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,504,994
App. No.
12/575,357
Granted
Aug 6, 2013
Kind
B2
Abstract

A software system is disclosed that provides remote troubleshooting and tracing of the execution of computer programs. The software system includes an information-gathering module that gathers run-time information about program execution, program interaction with the operating system and the system resources, monitors user actions and captures screen output, and passes the gathered information to an information-display module, the gathered information allowing a support technician (e.g., a software developer, a help desk person, etc.) to see the user interactions with the program and corresponding reactions of the system, and/or to remotely view environment variables, file access operations, system interactions, and user interactions that occur on the user's computer and locate failed operations that cause execution problems.

Claims (55)

1. A computer system that facilitates a visual process of identifying and isolating software execution problems within a client program without requiring modifications to the executable of the client program, said system comprising:

a first computer having a first processor and a first display device, the first processor executing the client program in a runtime environment that includes generating information displayed on the first display device;

a second computer having a second processor and a second display device, the first computer being remote from but communicatively connected to the second computer;

a trace options module configured, when executed using the second processor, to receive from a user a selection of one or more source code portions of the client program, the selections being recorded in a trace control file that is sent to the first computer with a tracing agent;

an information-gathering module configured, when executed using the first processor, to:

connect to the runtime environment of the client program using the tracing agent;

monitor selected events related to the user-selected source code portions recorded in the trace control file, the selected events occurring during execution of the client program, and store data describing said events in a log file,

augment the log file with API events, message events, and program events, including screen update events and user interaction events, occurring during execution of the client program but outside of the user-selected source code portions, and

obtain screen captures of images displayed on the first display device by the client program in response to storing the API events, message events, and program events, and store the screen captures in the log file; and

an information-display module configured, when executed on the second processor, to:

receive said log file,

display an animated list of events logged in said log file in a first portion of the second display device, and

play an animation of the screen captures by rendering the screen captures in a second portion of the second display device, the animation of the screen captures being synchronized with the animated event display by advancing the screen capture animation when a screen update event or user interaction event that triggered the obtaining of the screen capture is encountered in the log file.

2. The system of claim 1 , wherein said source code portions include functions in the client program.

3. The system of claim 1 , wherein said source code portions include lines of source code in the client program.

4. The system of claim 1 , wherein connecting to the runtime environment of the client program comprises overwriting a target address of an assembly instruction to be traced.

5. The system of claim 1 , wherein to display screen captures obtained by said information-gathering module synchronously with the information from the log file comprises displaying an animated screen-capture display, displaying animated event displays on a user interface, and providing controls to pause and rewind the animated screen-capture display and the animated event displays.

6. The system of claim 1 , wherein the log file is stored in a circular buffer of a fixed size.

7. The system of claim 1 , wherein the screen update events include a mouse move operation, a mouse click operation, a key pressure operation, a frame buffer update, and a set frame buffer format operation.

8. The system of claim 1 , wherein the user interaction events include an attach process operation, a detach process operation, and a terminate process operation.

9. The system of claim 1 , the screen captures being bitmaps of a window update region.

10. A method for facilitating visual troubleshooting of problems occurring when trying to execute a client program on a remote computer, comprising:

receiving from a user one or more selected source code portions of the client program at a second computer, the second computer comprising a second processor and a second display device and being remote from but communicatively connected to the remote computer, the selections being recorded in a trace control file;

loading the client program on a processor of said remote computer to create an in-memory executable image of said client program, the remote computer having a first display device, the client program generating information displayed on the first display device;

sending the trace control file and a tracing agent from the second computer to the remote computer;

loading an information-gathering module on said processor of said remote computer, wherein said information-gathering module:

connects to said client program at runtime by hooking to said in-memory executable image using the tracing agent,

monitors selected events related to the user-selected source code portions recorded in the trace control file, the selected events occurring during execution of said client program and stores event data describing said events in a log file,

augments the log file with API events, message events, and program events, including screen update events and user interaction events, that occur outside the events related to the user-selected source code portions and stores the API events, the message events, and the program events in a log file, and

obtains screen captures of images displayed on the first display device by the client program in response to storing the screen update events and the user interaction events in the log file and stores the screen captures in the log file;

loading an information-display module on a processor of the second computer; and

sending said log file to said information-display module, wherein said information-display module:

receives said log file,

displays an animated list of said stored events in a first portion of the second display device, and

plays an animation of the screen captures by rendering the screen captures in a second portion of the second display device, the animation of the screen captures being synchronized with the animated event display by advancing the screen capture animation when a screen update event or user interaction event that triggered the obtaining of the screen capture is encountered in the log file.

11. The method of claim 10 , wherein the log file is stored in a circular buffer of a fixed size.

12. The method of claim 10 , wherein the screen update events include a mouse move operation, a mouse click operation, a key pressure operation, a frame buffer update, and a set frame buffer format operation.

13. The method of claim 10 , wherein the user interaction events include an attach process operation, a detach process operation, and a terminate process operation.

14. The method of claim 10 , wherein the information-display module highlights suspicious events.

15. The system of claim 10 , the screen captures being bitmaps of a window update region.

16. A system having one or more processors for facilitating visual troubleshooting of problems occurring when executing a client program using a first processor on a remote computer, the execution creating an in-memory executable image of the client program, the system comprising:

means for receiving from a user, using a second computer comprising a processor and a second display device and being remote from but communicatively connected to the remote computer, one or more selected source code portions of the client program the selections being recorded in a trace control file;

means for sending the trace control file to the remote computer with a tracing agent;

means for monitoring events related to the user-selected source code portions recorded in the trace control file, the selected events occurring during execution of said client program on said remote computer and storing said events in a log file, said remote computer comprising the first processor and a first display device, the execution of said client program generating information displayed on said first display device,

means for augmenting the log file with API events, message events, and program events, including screen update events and user interaction events, and storing data describing said API events, message events, and program events in the log file;

means for obtaining screen captures of images displayed on the first display device in response to storing the screen update events and user interaction events in the log file, and storing the screen captures in the log file;

means for hooking said means for monitoring and means for obtaining to the in-memory executable copy of said client program using the tracing agent;

means for receiving the log file at the second computer; and

an information-display module executed on the second computer for:

displaying to the user said data describing said events in an animated list in a first portion of the second display device, wherein said information-display module lists events in chronological order,

playing an animation of the screen captures by rendering the screen captures in a second portion of the second display device, the animation of the screen captures being synchronized with the animated event display by advancing the screen capture animation when a screen update event or user interaction event that triggered the obtaining of the screen capture is encountered in the log file.

17. The system of claim 16 , wherein the log file is stored in a circular buffer of a fixed size.

18. The system of claim 16 , wherein the screen update events include a mouse move operation, a mouse click operation, a key pressure operation, a frame buffer update, and a set frame buffer format operation.

19. The system of claim 16 , wherein the user interaction events include an attach process operation, a detach process operation, and a terminate process operation.

20. The system of claim 16 , wherein the information-display module highlights failed system interactions.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2026
From: BMC SOFTWARE ISRAEL LTD
To: BMC HELIX ISRAEL LTD.
Reel/Frame 075403/0859 →
MERGER Recorded Nov 9, 2018
From: IDENTIFY SOFTWARE LTD.
To: BMC SOFTWARE ISRAEL LTD.
Reel/Frame 047465/0871 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2018
From: IDENTIFY SOFTWARE LTD.
To: BMC SOFTWARE ISRAEL LTD.
Reel/Frame 047465/0855 →
RELEASE OF SECURITY INTEREST Recorded Aug 25, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: IDENTIFY SOFTWARE LTD. (IL)
Reel/Frame 043678/0636 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2014
From: GOLENDER, VALERY; MOSHE, IDO BEN; WYGODNY, SHLOMO
To: MUTEK SOLUTIONS, LTD.
Reel/Frame 031976/0270 →
CHANGE OF NAME Recorded Jan 15, 2014
From: MUTEK SOLUTIONS, LTD.
To: IDENTIFY SOFTWARE LTD.
Reel/Frame 031976/0369 →
SECURITY AGREEMENT Recorded Dec 17, 2013
From: IDENTIFY SOFTWARE, LTD
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031833/0950 →
Continuity (3)
Continuation 09799338 · Mar 5, 2001
Provisional Application 60186636 · Mar 3, 2000
Related Publication 20100088683A1 · Apr 8, 2010