Skip to main content
QUICK REVIEW

[論文レビュー] Understanding Differences among Executions with Variational Traces

Jens Meinicke, Chu-Pan Wong|arXiv (Cornell University)|Jul 10, 2018
Security and Verification in Computing参考文献 1被引用数 4
ひとこと要約

本論文では、複数のプログラム実行における制御フローおよびデータフローの差異をコン pact かつ動的になぞる「変動トレース(variational traces)」を導入し、構成可能なソフトウェアにおける相互作用障害の理解を支援する。変動実行を活用して、指数関数的に増加する入力構成のあいだでトレース比較をスケーリングすることで、著者らはユーザースタディで、標準のデバッグツールと比較して、VarvizというEclipseプラグインを用いた開発者が障害を2倍以上速くデバッグできることを示している。

ABSTRACT

One of the main challenges of debugging is to understand why the program fails for certain inputs but succeeds for others. This becomes especially difficult if the fault is caused by an interaction of multiple inputs. To debug such interaction faults, it is necessary to understand the individual effect of the input, how these inputs interact and how these interactions cause the fault. The differences between two execution traces can explain why one input behaves differently than the other. We propose to compare execution traces of all input options to derive explanations of the behavior of all options and interactions among them. To make the relevant information stand out, we represent them as variational traces that concisely represents control-flow and data-flow differences among multiple concrete traces. While variational traces can be obtained from brute-force execution of all relevant inputs, we use variational execution to scale the generation of variational traces to the exponential space of possible inputs. We further provide an Eclipse plugin Varviz that enables users to use variational traces for debugging and navigation. In a user study, we show that users of variational traces are more than twice as fast to finish debugging tasks than users of the standard Eclipse debugger. We further show that variational traces can be scaled to programs with many options.

研究の動機と目的

  • 複数の入力が共同して障害を引き起こす、構成可能なソフトウェアにおける相互作用障害のデバッグという課題に対処すること。
  • 1つの入力しか分析しない従来のデバッガの限界を克服し、構成間での動作の比較が困難であることを解消すること。
  • 多数の入力組み合わせにおける実行トレースを効率的に比較する、スケーラブルで動的な方法を提供することにより、特定の入力が障害を引き起こす理由を説明すること。
  • 開発者が構成間でのプログラム動作の違いをナビゲートし理解できるようにするインタラクティブなツール(Varviz)を開発すること。
  • 変動トレースの有効性とスケーラビリティを、複雑な機能相互作用を含む実世界のデバッグシナリオにおいて評価すること。

提案手法

  • すべての関連する入力構成を共有計算内で同時に実行する変動実行(ファセット実行)を用い、重複する実行やトレース記録を回避する。
  • ステートメントおよび状態をその対応する入力構成とともに動的に追跡・アノテートすることで、プロヴァナンスを保持し、差異を即座に特定可能にする。
  • すべての実行からの整列されたトレースを統合して変動トレースを構築し、共通の制御フローおよびデータフローを共有しながら、分岐するパスにはそれぞれの入力コンテキストをアノテートする。
  • 不要または冗長な情報を抑制することでトレースサイズを削減するフィルタリング技術を適用し、障害動作を説明する差異にのみ焦点を当てる。
  • インタラクティブなEclipseプラグインVarvizを実装し、変動トレースの可視化および実行差異のナビゲーション、フィルタリング、探索を支援する。
  • トレース整列およびプロヴァナンス追跡を活用して、事前にすべてのトレースを記録しない動的でオンデマンドの分析を可能にし、メモリの爆発的増加を回避する。

実験結果

リサーチクエスチョン

  • RQ1開発者は、構成可能なシステムにおける相互作用障害を理解するために、複数のプログラム実行の動作をどのように効果的に比較できるか?
  • RQ2指数関数的に増加する入力構成のあいだで、トレース比較をスケーリングするには、許容できないメモリや計算コストを伴わずに実現できる技法は何か?
  • RQ3動的で変動的なトレース分析アプローチは、従来のデバッガーよりもデバッグ速度と正確性において優れていると期待できるか?
  • RQ4変動トレースは、複数の相互作用する入力が関与する複雑な障害原因をどの程度効果的に説明できるか?
  • RQ5デバッグに必要な差異を保持しつつ、変動トレースはどの程度スケーリングおよび圧縮可能か?

主な発見

  • Varvizプラグインを利用したユーザーは、標準のEclipseデバッガーを利用したユーザーと比較して、デバッグタスクを2倍以上速く完了した。
  • デバッグタスクの平均完了時間が、変動トレースを用いることで半分以下に短縮され、開発者の生産性が著しく向上したことが示された。
  • 変動トレースは、`flag` および `ipv4` パラメータが共同でクラッシュを引き起こす例のように、複数の入力が関与する相互作用障害を効果的に捉え、説明できた。
  • 著者らは、変動実行により、完全なトレース記録なしに指数関数的に大きな入力空間においても、スケーラブルなトレース生成が可能であることを実証した。
  • 変動トレースに適用されたフィルタリングは、トレースサイズを効果的に削減し、故障関連の差異を保持したまま、簡潔さを維持した。
  • 6つの高構成性システムを対象とした評価から、変動トレースが複雑な実世界のシナリオにおいても実用的で効果的であることが示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。