A Technique for Enabling and Supporting Debugging of Field Failures
James Clause and Alessandro Orso
Georgia Institute of Technology
This work was supported in part by NSF awards CCF-0541080 and CCR-0205422 to Georgia Tech.
1
A Technique for Enabling and Supporting Debugging of Field Failures - - PowerPoint PPT Presentation
A Technique for Enabling and Supporting Debugging of Field Failures James Clause and Alessandro Orso Georgia Institute of Technology This work was supported in part by NSF awards CCF-0541080 and CCR-0205422 to Georgia Tech. 1 3 Field
James Clause and Alessandro Orso
Georgia Institute of Technology
This work was supported in part by NSF awards CCF-0541080 and CCR-0205422 to Georgia Tech.
1
3
3
Field failures: Anomalous behavior (or crashes) of deployed software that occur on user machines
4
Crash logs
4
Crash logs User-provided information
4
5
5
Record
5
Record Replay
5
Record Replay Minimize
5
Record Replay Minimize Debug
6
In house In the field
Replay / Minimize (off line) Record (on line) Develop Replay / Debug
Execution repository
/
Existing record / replay approaches
7
Regression testing
(e.g. Elbaum et al. 06, Orso et al. 06, Orso and Kennedy 05, Saff et al. 05, Mercury WinRunner)
execution by recording events for specific subsystems Both types of techniques are not amenable to minimization and may cause unacceptable overhead
Deterministic debugging
(e.g. Chen et al. 01, King et al. 05, Narayanasamy et al. 05, Netzer and Weaver 94, Srinivasan et al. 04, VMWare)
recording every component of an application
✓ Motivation & background
8
amenable to minimization
9
amenable to minimization
➡ Focus on high-level (external) interactions with the
environment
10
11
Streams
11
Streams Files
11
Streams Files
11
Streams Files
11
Interaction events: FILE — interaction with a file POLL — checks for availability of data on a stream PULL — read data from a stream
Event log: Environment data (files):
12
Environment data (streams):
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 POLL KEYBOARD NOK
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 POLL KEYBOARD NOK
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 KEYBOARD: {5680} POLL KEYBOARD OK POLL KEYBOARD NOK
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 KEYBOARD: {5680} POLL KEYBOARD OK POLL KEYBOARD NOK
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 KEYBOARD: {5680}hello POLL KEYBOARD OK PULL KEYBOARD 5 POLL KEYBOARD NOK
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 KEYBOARD: {5680}hello POLL KEYBOARD OK PULL KEYBOARD 5 POLL KEYBOARD NOK
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 KEYBOARD: {5680}hello POLL KEYBOARD OK PULL KEYBOARD 5 POLL KEYBOARD NOK POLL NETWORK OK NETWORK: {3405}
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 KEYBOARD: {5680}hello POLL KEYBOARD OK PULL KEYBOARD 5 POLL KEYBOARD NOK POLL NETWORK OK NETWORK: {3405} ❙
Event log: Environment data (files):
12
Environment data (streams):
FILE foo.1 foo.1 KEYBOARD: {5680}hello POLL KEYBOARD OK PULL KEYBOARD 5 POLL KEYBOARD NOK POLL NETWORK OK NETWORK: {3405} ❙
Environment data (files):
13
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 ... PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK ...
foo.1 foo.2 bar.1
Environment data (files):
14
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 ... PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK ...
foo.1 foo.2 bar.1
Environment data (files):
14
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 ... PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK ...
foo.1 foo.2 bar.1
Environment data (files):
14
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 ... PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK ...
foo.1 foo.2 bar.1 ✔
Environment data (files):
14
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 ... PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK ...
foo.1 foo.2 bar.1 ✔
Environment data (files):
14
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 ... PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK ...
foo.1 foo.2 bar.1 ✔
Environment data (files):
14
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 ... PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK ...
foo.1 foo.2 bar.1 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔
15
Goal: focus debugging effort
15
Goal: focus debugging effort
Execution recording
15
Goal: focus debugging effort
Execution recording
minimization
15
Goal: focus debugging effort
Execution recording Execution recording
minimization
15
Goal: focus debugging effort
Execution recording Execution recording
minimization
Data minimization
15
Goal: focus debugging effort
Execution recording Execution recording Execution recording
minimization
Data minimization
Environment data (files):
16
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK
Environment data (files):
16
Event log: Environment data (streams):
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK NOK POLL NETWORK OK FILE foo.2 PULL NETWORK 1024 FILE foo.2 POLL KEYBOARD NOK
Environment data (files):
17
Event log: Environment data (streams):
FILE foo.1 POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK OK FILE foo.2 PULL NETWORK 1024 FILE foo.2
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
Environment data (files):
17
Event log: Environment data (streams):
FILE foo.1 POLL KEYBOARD OK PULL KEYBOARD 1 POLL NETWORK OK PULL NETWORK 1024 FILE bar.1 POLL NETWORK OK FILE foo.2 PULL NETWORK 1024 FILE foo.2
KEYBOARD: {5680}hello❙{4056}c❙{300}... NETWORK: {3405}<html><body>...❙{202}...
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
18
Atoms Chunks Whole entities Data minimization Environment
Assisting the Debugging
19
Two main limitations:
May not replay non-deterministic failures
Does not handle window system events (yet)
20
used to debug the original failure?
21
used to debug the original failure?
22
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% # entities streams size files size
23
Average value after minimization Header-color fault Address book fault
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% # entities streams size files size
23
Average value after minimization Header-color fault Address book fault
Moreover, these results are conservative: recorded executions only contain the minimal amount of data needed to perform an action.
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% # entities streams size files size
23
Average value after minimization Header-color fault Address book fault
Overhead
Moreover, these results are conservative: recorded executions only contain the minimal amount of data needed to perform an action.
Specific Example: Address Book Failure
25
field failures
considered, our technique can
26
27