a technique for enabling and supporting debugging of
play

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


  1. 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

  2. 3

  3. Field failures: Anomalous behavior (or crashes) of deployed software that occur on user machines 3

  4. 4

  5. Crash logs 4

  6. Crash logs User-provided information 4

  7. Our solution 5

  8. Our solution Record 5

  9. Our solution Record Replay 5

  10. Our solution Record Replay Minimize 5

  11. Our solution Record Replay Minimize Debug 5

  12. Usage Scenario In house In the field Develop Record (on line) � / � Execution repository Replay / Minimize (off line) Replay / Debug 6

  13. Existing record / replay approaches Deterministic debugging Regression testing (e.g. Chen et al. 01, King et al. 05, (e.g. Elbaum et al. 06, Orso et al. 06, Narayanasamy et al. 05, Netzer and Weaver Orso and Kennedy 05, Saff et al. 05, 94, Srinivasan et al. 04, VMWare) Mercury WinRunner) • Replay an entire execution by • Replay only a portion of an recording every component of execution by recording events an application for specific subsystems Both types of techniques are not amenable to minimization and may cause unacceptable overhead 7

  14. Outline ✓ Motivation & background • Our technique • record • replay • minimization • Empirical evaluation • Conclusion & future work 8

  15. Record & Replay • Goal: develop an approach that has low overhead and is amenable to minimization • Key insight: avoid focusing on low-level (internal) events • expensive (large number of events) • not amenable to minimization (high interdependence) 9

  16. Record & Replay • Goal: develop an approach that has low overhead and is amenable to minimization • Key insight: avoid focusing on low-level (internal) events • expensive (large number of events) • not amenable to minimization (high interdependence) ➡ Focus on high-level (external) interactions with the environment • efficient (fewer, more “expensive” interactions) • amenable to minimization (low interdependence) 10

  17. Environment interactions 11

  18. Environment interactions Streams 11

  19. Environment interactions Streams Files 11

  20. Environment interactions Streams Files 11

  21. Environment interactions Streams Files Interaction events: FILE — interaction with a file POLL — checks for availability of data on a stream PULL — read data from a stream 11

  22. Event log : Environment data (streams): Environment data (files): 12

  23. Event log : FILE foo.1 Environment data (streams): Environment data (files): foo.1 12

  24. Event log : FILE foo.1 Environment data (streams): Environment data (files): foo.1 12

  25. Event log : FILE foo.1 POLL KEYBOARD NOK Environment data (streams): Environment data (files): foo.1 12

  26. Event log : FILE foo.1 POLL KEYBOARD NOK Environment data (streams): Environment data (files): foo.1 12

  27. Event log : FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK Environment data (streams): KEYBOARD: {5680} Environment data (files): foo.1 12

  28. Event log : FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK Environment data (streams): KEYBOARD: {5680} Environment data (files): foo.1 12

  29. Event log : FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 5 Environment data (streams): KEYBOARD: {5680}hello Environment data (files): foo.1 12

  30. Event log : FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 5 Environment data (streams): KEYBOARD: {5680}hello Environment data (files): foo.1 12

  31. Event log : FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 5 POLL NETWORK OK Environment data (streams): KEYBOARD: {5680}hello NETWORK: {3405} Environment data (files): foo.1 12

  32. Event log : FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 5 POLL NETWORK OK Environment data (streams): KEYBOARD: {5680}hello ❙ NETWORK: {3405} Environment data (files): foo.1 12

  33. Event log : FILE foo.1 POLL KEYBOARD NOK POLL KEYBOARD OK PULL KEYBOARD 5 POLL NETWORK OK Environment data (streams): KEYBOARD: {5680}hello ❙ NETWORK: {3405} Environment data (files): foo.1 12

  34. Event log : 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): foo.1 foo.2 bar.1 13

  35. Event log : 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): foo.1 foo.2 bar.1 14

  36. Event log : 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): foo.1 foo.2 bar.1 14

  37. Event log : ✔ 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): foo.1 foo.2 bar.1 14

  38. Event log : ✔ 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): foo.1 foo.2 bar.1 14

  39. Event log : ✔ 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): foo.1 foo.2 bar.1 14

  40. Event log : ✔ 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): foo.1 foo.2 bar.1 14

  41. Minimize Goal: focus debugging effort 15

  42. Minimize Goal: focus debugging effort Execution recording 15

  43. Minimize Goal: focus debugging effort Execution recording Time minimization � 15

  44. Minimize Goal: focus debugging effort Execution Execution recording recording Time minimization � 15

  45. ✂ Minimize Goal: focus debugging effort Execution Execution recording recording Time Data minimization minimization � 15

  46. ✂ Minimize Goal: focus debugging effort Execution Execution Execution recording recording recording Time Data minimization minimization � 15

  47. Minimize: time Event log : 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): 16

  48. Minimize: time Event log : 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 (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): 16

  49. Minimize: time Event log : 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 Environment data (streams): KEYBOARD: {5680}hello ❙ {4056}c ❙ {300}... NETWORK: {3405}<html><body>... ❙ {202}... Environment data (files): 17

Recommend


More recommend