7
BugRedux: Reproducing Field Failures for In-House Debugging Wei Jin and Alessandro Orso 1

Bug Redux: Reproducing Field Failures for In-House Debugging (5分説明用)

  • Upload
    nkazuki

  • View
    212

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Bug Redux: Reproducing Field Failures for In-House Debugging (5分説明用)

BugRedux: Reproducing Field Failures for In-House Debugging

Wei Jin and Alessandro Orso

1

Page 2: Bug Redux: Reproducing Field Failures for In-House Debugging (5分説明用)

目的と問題

目的:出荷後に報告された欠陥を,社内で再現したい

2

問い2: クラッシュレポートはどんな実行時情報を含むべきか?

多くの情報 (e.g., 実行トレースすべて) - 実行時オーバーヘッド大 - プライベートな情報を含んでしまう恐れ

少ない情報 (e.g., 発生した例外の種類のみ) - 報告された欠陥が再現できない

トレードオフ

問い1: どうすれば報告された欠陥を再現できる?

Page 3: Bug Redux: Reproducing Field Failures for In-House Debugging (5分説明用)

提案ツールと貢献

3

• 実行時情報を収集し,それを利用して

欠陥を再現するツールBugReduxの開発

• 収集する情報を変化させて,費用対効果を調査

欠陥を再現する テストケース生成

提案ツール動作図 発表論文より引用 (日本語は発表者)

ログ関数 埋め込み

Page 4: Bug Redux: Reproducing Field Failures for In-House Debugging (5分説明用)

報告された欠陥の再現

4

クラッシュレポート中の文をゴールの列とし, ゴールを同じ順番で通過する

欠陥の再現 :=

1. プログラムを記号的に実行. 次に通過したい文に近づくように探索 2. 得られた条件を満たす入力を制約ソルバで求める

Page 5: Bug Redux: Reproducing Field Failures for In-House Debugging (5分説明用)

クラッシュレポートに含める情報

5

以下の4種類を考慮し,実験的に評価

欠陥を再現するためには どんな情報を記録すべきか?

• 例外発生時の位置(POF) • 例外発生時のコールスタック(Call Stack) • 例外発生時の関数呼び出し履歴(Call Sequence) • 完全な実行トレース(Complete Trace)

Page 6: Bug Redux: Reproducing Field Failures for In-House Debugging (5分説明用)

実験結果1: オーバーヘッド

6

• POFとCall Stackはクラッシュレポートに入っているのが一般的, オーバーヘッドはほぼ無視できる程度 • Call Sequenceは時間・空間ともにオーバーヘッドがあるが, 完全なトレースよりは桁違いに小さいオーバーヘッド

時間オーバーヘッド(%) 空間オーバーヘッド(kB)

対象とした プログラム達

Page 7: Bug Redux: Reproducing Field Failures for In-House Debugging (5分説明用)

実験結果2: 欠陥再現性能

7

• POF, Call Stack, Call Sequenceまでは,情報が増えるほど, 欠陥再現の性能が高くなっている • 完全な実行トレースを再現しようとすると, 制約が複雑になりすぎるためか,テストケース生成に失敗した

テストケース生成にかかった時間 欠陥がただしく再現できたかどうか(Yes or No)

対象とした プログラム達