Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

US008504994B2

(12) Ulllted States Patent


Golender et a].
(54) SYSTEM AND METHOD FOR SOFTWARE

(10) Patent N0.:


(45) Date of Patent:
4,598,364 A

US 8,504,994 B2
Aug. 6, 2013

7/ 1986 Gum et al.

DIAGNOSTICS USINGA COMBINATION OF


, ,

2
5,021,949 A 5,121,489 A

$41013? 4131
was 1 e .

VISUAL AND DYNAMIC TRACING

6/1991 Molten et 31' 6/1992 Andrews

(75)

Inventors: Valery Golender, Kfar Saba (IL); Ido


Ben Moshe, HerZlia (IL); Shlomo

5,193,180 A
5,265,254 A
5,335,344 A

3/ 1993 Hastings
11/1993 Blasciak et al.

wygodnys Ramut Hasharon (1L)

5,297,274 A

3/ 1994 Jackson

8/1994 Hastings

(73) Assignee: Identify Software, Ltd., Petach-Tikva

5347649 A

9/1994 Alderson

(1L)
(*) Notice: Subject to any disclaimer, the term of this
patent is extended or adjusted under 35 W0 W0 96'05556

(Continued)
FOREIGN PATENT DOCUMENTS
2/1996

U.S.C. 154(b) by 811 days.


(21) Appl' NO: 12/575357

OTHER PUBLICATIONS

Abramson, D., et al., A Debugging Tool for Software Evolution,

(22) Filed:
(65)

Oct 7, 2009

EASE-95., 7th International Workshop on Computer-Aided Software


ngrneerlng, Jul. 1995.

Prior Publication Data US 2010/0088683 A1 Apr. 8, 2010


Related US. Application Data

(Continued)
Prlmary Exammer i Tuan A Vu

(63)
(60)

Continuation of application No. 09/799,338, ?led on Mar. 5, 2001, now abandoned.


Provisional application N0~ 60/186,636, ?led 011 Mar3, 2000Int- Cl-

(57)

ABSTRACT

A software system is disclosed that provides remote trouble

shooting and tracing of the execution of computer programs.


The software system includes an information- gathering mod ule that gathers run-time information about program execu tion, program interaction with the operating system and the system resources, monitors user actions and captures screen
Output, and passes the gathered infonnation to an informa

(51)
(52)

G06F 9/44
U-s- Cl-

(2006-01)

USPC ........................................................ .. 717/128

(58) Field of Classi?cation Search


USPC ............... .. 7l7/l24il28, 129; 709/203, 217,

tion-display module, the gathered information allowing a


support technician (e.g., a software developer, a help desk

709/221, 224; 707/10; 7l4/28i35, 38, 45,

person, etc.) to see the user interactions with the program and

714/47, 50, 46; 710/6; 715/700 See application ?le for complete search history.
(56) References Cited
U.S. PATENT DOCUMENTS
4,503,495 A 3/1985 Boudreau

corresponding reactions of the system, and/or to remotely view environment variables, ?le access operations, system
interactions, and user interactions that occur on the users

computer and locate failed operations that cause execution

problems.
4,511,960 A 4/1985 Boudreau
SUPPORT S115

20 Claims, 18 Drawing Sheets


[12w
NT WWH ER SWE

SEND VISUAL PQOELEM MoNwoR APPLEVEL TC =15 TO HE CJS

CUSTOMER 5 TE
APPucAnoN IRACNG u SING
wsuAt PROBLEM MoWoR AGENT

ANALYZE FiOELEMS USING SOLRCE CODE EHGTRAPPER ANAJZER

APPUCAI ON SOJRCE CODE

US 8,504,994 B2
Page 2
U.S. PATENT DOCUMENTS
5,386,565 5,394,544 5,408,650 5,410,685 5,421,009
5,386,522 A

OTHER PUBLICATIONS
Advisory Action dated Oct. 20, 2008 from Related U.S. Appl. No. 10/80&760~ Advisory Action dated Oct. 7, 2005 from Related U.S. Appl. No. 09/799,338.
-

A A A A A

V1995 2/1995 4/ 1995 4/1995 5/1995

1/1995

Tanaka et a1 Motoyama et al. Arsenault Banda et a1.

Evans

5,430,586 A
5,446,876 A
5,450,586 A

Platt 7/1995 K09


8/1995 Levlne et a1~

Appelbe et al., Integrating tools for debugging and developing multitasking programs, ACM, 1993, pp. 78-88.
Bates, Peter C., Debugging Heterogeneous Distributed Systems
Using Event-Based Models of Behavior, ACM Transactions on

9/1995 Kuzara et 31'

2
5483468 A
5,513,317 A
4/1996

Qgggliy
V1996 Chen et a1
Borchardt ' et al.

Computer Systems, vol. 13, No. 1, Feb. 1995, pp. 1-31.


Bruegge, C.P. et al., A Framework for Dynamic Program Analyz
ers, OOPSLA, 1993, pp. 62-85.
_ _

5 526 485 A

6/l996 Brodsky

Forrest, S., et al., A sense ofselffor UIllX processes, Proceedings of

535333192 A
5,551,037 5,574,897 5,581,697 5,590,354 A A A A

7/1996 Hawley et a1
8/1996 11/1996 12/1996 12/1996 Fowler et a1. Hermsmeier et al. Gramlich et al. Klapproth et 81.

1996 IEEE Symposium on Computer Security and Privacy, 1996, pp.


120-128 Geer, C.P. et al., Instruction Stream Trace, IBM Technical Disclo sure Bulletin, vol. 26, No. 11, Apr. 1984, pp. 6217-6220. GoldsZmidt et al, Interactive blackbox debugging for concurrent

5,612,898 A
5,615,331 A 5,632,032 A
5,642,478 A

3/1997 Huckins
3/1997 Toonans et 31' 5/1997 Au et a1~
6/1997 Chen et al.
3/1998
4/1998

language, ACM pp 271_2g2, 1990


Harward, L.D. Jr., PL/1 Trace Program, IBM Technical Disclosure Bulletin, vol. 13, N0. 4, Sep. 1970, pp. 855-857.
H t TA G

5,657,438 A
5,732,210 A

8/l997 Wygodny et a1
BuZbee
Ahmad et a1.

1 En, .1 .is IeInerga J racf97a3c1ity,2446 24ers ica 1sc osure u e 1, V0 '


' '

1T

-1-

,, IBMT 1111'_
_

1D-

B 1

~
_

a?

PP

'
_

5,740,355 A
5,745,748 A

4/l998 Watanabe et a1
@1998 Harper 7/1998 Parker et a1 714/381 1

James R., Ef?cient Program Tracing, IEEE, May 1993, pp.


Lee et al., Learning Patterns from Unix Process Execution Traces for Intrusion Detection, AAAI Technical Report 1997 (retrieved on

5 771 385 A 537813720 A *

5,848,274 5,867,643 5,870,606 5,896,535 5,903,718 5,928,369

A A A A A A

12/1998 2/1999 2/1999 4/1999 5/1999

Hamby et 31 Sutton Lindsey Ronstrom Marik

7/1999 Keyser et 31,


8/1999 John, Jr. et a1.

Jun. 11, 2009) Retrieved from the Internet: URL: https://www.aaai. org/Papers/Workshops/l997/WS-97-07/WS97-07-010.pdf. Malony, Allen D. et al., Traceview: A Trace Visualization Tool, IEEE, SPP- 1991, PP 19-28~ Martonosi, Margaret et al., Effectiveness of Trace Sampling for Performance Debugging Tools, ACM SIGMETRICS, 1993, pp.
248-259.

5,938,778 A

5,940,618 5,960,198 5,983,366 6,003,143


6,026,433 6,026,438 6,047,124 6,065,043 6,108,330

A A A A
A A A A A

8/1999 9/1999 11/1999 12/ 1999


2/2000 2/ 2000 4/2000 5/2000 8/2000

Blandy et al. Roediger et al. King Kim et al.


DArlach et al.

Meier, Michael S., et al., Experiences with Building Distributed Debuggers, SPDT, 1996, pp. 70-79. Mukherjea, Sougata et al., Applying Algorithm Animation Tech niques for Program Tracing, Debugging, and Understanding, IEEE,
1993, pp. 456-465. Netzer, H.B., et al., Optimal Tracing and Incremental Reexecution for Debugging Long-Running Programs, ACM SIGPLAN 1994 Conference on Programming Language Design and Implementation, Jun. 2024, Orlando, Florida, pp. 313-325.
NetZer, Robert H.B. eta1., O Ptimal Tracin g and Re P lay for Debu 6 -

PiaZZa et al. M?fsl?nd Domenikos et a1~ Bhatia er 91

6,173,340 B1 *

1/2001 Gready et a1~ ~~~~~~~~~~~~~~~~~~ ~~ 710/6

6,202,199 B1 6,219,826 B1

3/2001 Wygodny et a1~ 4/2001 De Pauw et 31'

ging Message-Passing Parallel Programs, IEEE, 1992, pp. 502-511. NetZer, Robert H.B., Optimal Tracing and Replay for Debugging

2752;; 6263456 Bl
7 7

Enameluck let 31' 70001 B0255 it :1


'

Shared-Memory Parallel Programs, AClVUONR Workshop on Par ?llel and Distributed Debugging, May 17-18, 1993, San Diego, Cali
ornia, pp. 1-12.

g3;

1392333113, et 31'
4/2002 ODonnell
7/2002 10/2002

Plattner, Bernhard et al., Monitoring Program Execution: A Survey,


IEEE, Nov. 1981, pp. 76-93.

6360331 B2
6 374 369 B1
6,415,394 B1 6 467 052 B1*

3/2002 Ven et a1

Redell, Experience with TopaZ teledebugging, ACM SIGPLAN &


,, Reiss, Steven P., Trace-Based Debugging, Automated and Algo . . .

. Fruehling et al. Kaler et al 714/39 ' """""""""" "

SIGOPS, pp. 35-44, 1990.

rithmic Debugging Workshop, May 3-5, 1993.

6490696 Bl
6,587,969 B1 * 6593940 B1 *
6 865 508 B2

12/2002 Wood et al'

Rosenberg Jonathan B How Debuggers Work' Algorithms Data

gss?glilyetai'l
7/2003 Weinberg et 7/2003 Petersen et a1
300% Ueki Anderson et a1 et 31

Structures, and Architecture, John Wiley & Sons, Inc., 1996.


714/46 Schieber, Colleen et al., RATCHET: Real-time Address Trace Com pression Hardware for Extended Traces, Performance Evaluation
Review, Soule, K., V01. Algorithm 21, NOS. 3 for and Tracing 4, Execution Paths to a Given Loca

7:058:928 7,089,536 7,114,150 7,386,839


2002/0087949 2003/0005414 2003/00888 54 2004/0060043 2006/0150162 2006/0242627 2008/ 0244534

B2 B2 B2 B1
A1 A1 A1 A1 A1 A1 A1

6/2006 8/2006 9/2006 @2008

Wygodny et a1 Ueki et al. Dimpsey et a1 Golender et 31

tion in a Program, IBM Technical Disclosure Bulletin, vol. 14, No. 4, _$eP~_1971; PP 1016-1019 _ _ Spinellis, Diomidis, Trace: A Tool for Logging Operating System Call Transactions, Operating Systems Review Publication, vol. 28,
N9 4, Oct. 1994, PP 56-61 Timmerman, F Gielen et al., High Level Tools for the Debugging of Real-Time Multiprocessor Systems, AClVUONR Workshop on Par

7/2002 Golender et al. 1/2003 Elliott et a1, 5/2003 Wygodny et a1,

3/2004 Frysinger et a1, 7/2006 Mongkolsmai et al. 10/2006 Wygodny et al.


10/ 2008 Golender et al.

allel and Distributed Debugging, May 17-18, 1993, San Diego, Cali fornia, pp. 151-158. Tsai, Jeffrey JP. et al., A Noninvasive Architecture to Monitor
Real-Time Distributed Systems, IEEE, Mar. 1990, pp. 11-23.

US 8,504,994 B2
Page 3
Ueki, K., et al., A Probe Debugging Method, Technical Report of Ieice, Jul. 2000. Wilner, David, WindView: A Tool for Understanding Real-time Embedded Software through System Visualization, ACM
SIGPLAN Notices, vol. 30, No. 11, Nov. 1995, pp. 117-123.

Past, present, and future of?ce actions, amendments, arguments, and


other relevant documents or materials in the ?le history of U.S.

Letters Patent No. 7,386,839, issued Jun. 10, 2008, entitled System and Method for Troubleshooting Software Con?guration Problems

Using Application Tracing.


Past, present, and future of?ce actions, amendments, arguments, and
other relevant documents or materials in the ?le history of U.S. Appl. No. 12/135,678, ?led Jun. 9, 2008, entitled System and Method for

Wismuller, Debugging of globally optimized programs using data


?ow analysis, ACM SIGPLAN, Apr. 1994, pp. 278-289. Of?ce Action dated Apr. 11, 2004 from Related U.S. Appl. No.

09/799,338.
Of?ce Action dated Aug. 6, 2008 from Related U.S. Appl. No.

Troubleshooting Software Con?guration Problems Using Applica tion Tracing. Past, present, and future of?ce actions, amendments, arguments, and
other relevant documents or materials in the ?le history of U.S. Appl. No. 10/808,760, ?led Mar. 25, 2004, entitled System and Method for

10/808,760.
Of?ce Action dated Dec. 31, 2007 from Related U.S. Appl. No.

10/ 808,760.
Of?ce Action dated Jan. 2, 2009 from Related U.S. Appl. No.

Troubleshooting Runtime Software Problems Using Application

Learning.
Past, present, and future of?ce actions, amendments, arguments, and
other relevant documents or materials in the ?le history of U.S. Appl. No. 11/165,442, ?led Jun. 23, 2005, entitled System and Method for

10/ 808,760.
Of?ce Action dated Jan. 23, 2006 from Related U.S. Appl. No.

09/799,338.
Of?ce Action dated Jan. 9, 2007 from Related U.S. Appl. No.

09/799,338.
Of?ce Action dated Jun. 22, 2009 from Related U.S. Appl. No.

Automated Tuning of Program Execution Tracing. Jeffrey K. Hollingsworth and Barton P Miller, An Adaptive Cost System for Parallel Program InstrumentationiProceedings of the
Second International Euro-Par Conference on Parallel Processingi

10/ 808,760.
Of?ce Action dated Jun. 6, 2005 from Related U.S. Appl. No.

09/799,338.
Of?ce Action dated Sep. 1, 2006 from Related U.S. Appl. No.

09/799,338.
Of?ce Action dated Sep. 27, 2007 from Related U.S. Appl. No.

vol. 1, 1996, 10 pages. Paolo Bellavista, Antonio Corradi, and Cesare Stefanelli, Java for On-Line Distributed Monitoring of Heterogeneous Systems and Ser vicesiThe Computer Journal, vol. 45, No. 6, 2002, 13 pages. Martin Shulz, John May, and John Gyllenhaal, DynTG: A Tool for

09/799,338.
Past, present, and future of?ce actions, amendments, arguments, and
other relevant documents or materials in the ?le history of U.S.

Interactive, Dynamic InstrumentationiICCS 2005, LNCS 3515,


2005, 9 pages. Daniel Reed et al. An Overview of the Pablo Performance Analysis

Letters Patent No. 6,202,199, issued Mar. 13, 2001, entitled System and Method for Remotely Analyzing the Execution of Computer

EnvironmentiUniversity of Illinois Department of Computer Sci


ence, Nov. 7, 1992, 45 pages. Celine Boutros Saab, Xavier Bonnaire, and Bertil Folliot Phoenix: A

Programs.
Past, present, and future of?ce actions, amendments, arguments, and
other relevant documents or materials in the ?le history of U.S.

Letters Patent No. 6,282,701, issued Aug. 28, 2001, entitled System and Method for Monitoring and Analyzing the Execution of Com

Self Adaptable Monitoring Platform for Cluster Managementi Cluster Computing 5, 2002, 11 pages. Weiming Gu et al. Falcon: On-line monitoring and Steering of
Large-Scale Parallel Programs , Proceedings of the Fifth Sympo sium on the Frontiers of Massively Parallel Computation, 1995, 38
pages.

puter Programs.
Past, present, and future of?ce actions, amendments, arguments, and
other relevant documents or materials in the ?le history of U.S. Appl. No. 09/748,752, ?led Dec. 26, 2000, entitled System and Method for

Final Of?ce Action received for U.S. Appl. No. 10/ 808,760, mailed
on Mar. 3, 2010, 19 pages.

System and Method for Conditional Tracing of Computer Programs,


now abandoned.

Past, present, and future of?ce actions, amendments, arguments, and


other relevant documents or materials in the ?le history of U.S. Appl.

No. 09/923,972, ?led Aug. 7, 2001, entitled System and Method for System and Method for Conditional Tracing of Computer Programs,
now abandoned.

Non Final Of?ce Action received for U.S. Appl. No. 10/ 808,760, mailed on Aug. 20, 2010, 20 pages. Notice ofAllowance received for U.S. Appl. No. 10/808,760, mailed on Feb. 7, 2011, 11 pages. Bowring, James F., et al., Active Learning for Automatic Classi? cation of Software Behavior, Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis, (2004), pp. 195-205.

Past, present, and future of?ce actions, amendments, arguments, and


other relevant documents or materials in the ?le history of U.S.

Hofmeyr, et al., Intrusion Detection using Sequences of System Calls, Journal of Computer Security, Retrieved on [Aug. 13, 2010],
Retrieved from the Internet <http://www.cs.unm.edu/-steveah/jcs

Letters Patent No. 7,058,928, issued Jun. 6, 2006, entitled System and Method for System and Method for Conditional Tracing of

accepted.pdf>, (1998), pp. 151-180.


Of?ce Action received for U. S. Appl. No. 10/ 808,760, mailed on Mar.

Computer Programs.
Past, present, and future of?ce actions, amendments, arguments, and
other relevant documents or materials in the ?le history of U.S. Appl. No. 11/447,579, ?led Jun. 6, 2006, entitled System and Method for

3, 2010, 19 pages.
Of?ce Action received for U.S. Appl. No. 10/808,760, mailed on

System and Method for Conditional Tracing of Computer Programs. Past, present, and future of?ce actions, amendments, arguments, and
other relevant documents or materials in the ?le history of U.S. Appl. No. 09/799,338, ?led Mar. 5, 2001, entitled System and Method for Software Diagnostics Using a Combination of Visual and Dynamic Tracing, now abandoned.

Aug. 20, 2010, 20 pages. Bowring et al.,Active Learning for Automatic Classi?cation of Soft
ware Behavior, Proceedings of the 2004 ACM SIGSOFT interna

tional symposium on Software testing and analysis, vol. 29 No.4, Jul. 11-14, 2004, pp. 195-205.

* cited by examiner

US. Patent

Aug. 6, 2013

Sheet 1 0f 18

US 8,504,994 B2

AT THE DEVELOPER SITE


m0

//Z

/05 \
BUGTRAPPER ANALYZER

TI
DEVELOPER

f/z/
DEBUG INFORMATION

AT THE CUSTOMER SITE


12a

USER
m4 m2

\
BUCTRARRER

TRACED USER
ARRLICATION

ACENT
DUCTRARRER
TRACE LIBRARY

//Z4
COMMANDS

(CLIENT)
(e g
. . START

STOP

TRACE

>> BUGTRARPER
TRACE LIBRARY

NOTIFICATTONS (e.g.

(AGENT SIDE)

_ SUBPROCESS CREATED)

(CUENT SIDE)
l

TRACE BUFFER

(SHARED MEMORY)

14/6? [15

US. Patent

Aug. 6, 2013

Sheet 2 0f 18

US 8,504,994 B2

BACK AT THE DEVELORERS SITE


/06

7/2

X
BDCTRARRER

00

f.
I 9 A I?
DEVELOPER I
3 5;

ANALYZER
TRACE
TREE

/J0

II

/Z2
TRACE LOG FILE

f/Z/
DEBUG INFORMATION

//2

(A
g

BDCTRARRER IN ONLINE MODE


00

DEVELOPER

/06\
BDCTRARRER ANALYZER COMMANDS (6.9. START/STOP TRACE)
BOOTRARRER w

//02
TRACED USER APPLICATION

(CLIENT)
BLICTRARRER

TRACE LIBRARY

NOTIFICATIONS (evg-

TRACE LIBRARY

(ACENT SIDE)

_ SUBPROCESS CREATED)

(CLIENT SIDE)
l

TRACE
TREE
/05

\
725

i/ZZ\

TRACE BUFFER (SHARED MEMORY)

TRACE

US. Patent

Aug. 6, 2013

Sheet 3 0f 18

US 8,504,994 B2

:SIag8?s;

_ @DU xL2m3u6q51o2ims

EA, % E@ @
m?2E39/8tw5m%h

l/ Q kw

US. Patent

Aug. 6, 2013

Sheet 5 0f 18

US 8,504,994 B2

W400
405

lgrocess List
/

IXII

. . _L__ Applications Processes

Nome
Exploring - C:\BugTropper\fire\Rele..

PIDI
115

Fire Simulation

113

CE

Concei

Refresh

[/61 4

US. Patent

Aug. 6, 2013

Sheet 7 0f 18

US 8,504,994 B2

602

i161

US. Patent

Aug. 6, 2013

Sheet 9 0f 18

US 8,504,994 B2

f 802
I E] File Class Tobe Nome Process = E C: \Progrom Fi|es\I\/luTek\BugTrc1pper\F
E gE E? E EETI E Threod Thread Thread Thread 57 65 125 69

FIG (9

US. Patent

Aug. 6, 2013

Sheet 10 0f 18

US 8,504,994 B2

K900
BugTrapper Agent Attach to running processes
Check enabled processes that you want to trace.

g?

Disabled processes may be started and traced from


the next dialog box.
The Finish button means that all the processes in memory will be traced.

List of processes:

iBl6gJSbounce\Debu

< Back

Finish

Cancel

906

902/ 904/

FIG: ,9

US. Patent

Aug. 6, 2013

Sheet 11 0f 18

US 8,504,994 B2

K7000
BugTrapper Agent Start processes
To start and then trace an enabled process in the list, check the process and fill in the fields below or use

El

the default settings,


List of processes:

Current process Full Path Name

C: \BugTrapper\bounce\Debug\bounce

Parameters

Working Directory C: \BugTrapper\bounce\Debug

\\/ 0/ 6

< Back

i
7006/

Finish
i

Cancel
7004

7002

[/61 [0

US. Patent

Aug. 6, 2013

Sheet 15 0f 18

US 8,504,994 B2

7402

CREATE CLIENT PROCESS IN A

CREATE_SUSPENDED STATE

I
ALLOCATE MEMORY AND LOAD THE TRACE RUNTIME INITIALIZATION ROUTINE

7404
7406

I
OVERWRITE ENTRY POINT OF CLIENT WITH A JUMP TO TRACE RUNTIME INITIALIZATION

l
START CLIENT PROCESS (WHICH EXECUTES JUMP TO RUNTIME INITIALIZATION)

7408
7470

I
RESTORE ORICIONAL ENTRY POINT CODE AND SUSPEND CLIENT PROCESS

l
CALL INST_ATTACH ROUTINE AND LOAD INSTRUMENTAION DLL

7472

14/61 14

US. Patent

Aug. 6, 2013

Sheet 16 0f 18

US 8,504,994 B2

M2675

E|_M<I3mOW>E 0KOCZ4E MIU

NQmK

%\\ %\

US. Patent

Aug. 6, 2013

Sheet 17 0f 18

US 8,504,994 B2

VZ%A_M@
:22% 2; EM 823 m

@W E

You might also like