English is here.
概要 デバッガを用いて関数呼び出し単位の疑似逆実行を 実現する方法のひとつとして, プロファイル用の関数を置き換えることにより, C プログラムにおける関数呼び出しの入口を捕捉する 方法が提案されている. しかし, この方法では関数からリターンするところを捕捉できないので, 逆実行時の停止目標点を決定するために, (1)現在の実行点までスタックをシミュレートしながら 先頭から再実行し, 制御点の移動目標を決め(scan pass), (2)実際に制御点をそこに移すために再度先頭から 実行する(re-execute pass)ことになっており, 本来不要なパス(1)が存在する. 本論文では, コンパイラのアセンブリ言語出力を修正して関数から リターンするところをも捕捉し, スタックのシミュレーションを通常実行時に正確に 行うことによって, 従来手法では2パスを要していた逆実行時の処理を, 1パスで行う手法を提案する. また, 通常実行時のオーバーヘッドと逆実行時のオーバーヘッドを, 経過時間の計測によって従来手法と比較する.