特許
J-GLOBAL ID:200903023688917188

バグ自動検出装置

発明者:
出願人/特許権者:
代理人 (1件): 深見 久郎 (外2名)
公報種別:公開公報
出願番号(国際出願番号):特願平8-123086
公開番号(公開出願番号):特開平9-305432
出願日: 1996年05月17日
公開日(公表日): 1997年11月28日
要約:
【要約】【課題】 ダイナミックスライシング技術およびスタティックスライシング技術に比べてプログラムデバッグ作業を容易にすることである。【解決手段】 ステップS5では、異常点までプログラムを再実行する。この場合に、正常点と異常点との間の分割点に対応する制御フローを導出するとともに、エラーに影響を与える変数およびその変数の分割点における値を4つの依存関係に基づき導出する。ブログラマは、制御フローの誤りや、エラーに影響を与える変数の値の誤りや、分岐命令/ループ命令で使用される変数の値の誤りを判断する(S7,S9,S11)。このような処理を繰返し、正常点と異常点との間に最終的に残った命令を、ステップS27では、バグと判断する。ステップS29では、正常点と異常点との間に、異常点と依存関係を持つ命令が存在しない場合には、正常点と異常点との間に命令の漏れに関するバグが存在すると判断する。
請求項(抜粋):
手続型言語で記述されたプログラムのバグを検出するためのバグ自動検出装置であって、前記プログラムを実行させ、前記プログラムからの出力情報の中から誤りを操作者に指摘させ、その誤りを出力した命令が存在する命令箇所を記録するテスト制御手段、第1の命令箇所まで前記プログラムを再実行させるプログラム再実行手段と、前記再実行の際に、第2の命令箇所と、前記第1の命令箇所との間の第3の命令箇所を選択し、この第3の命令箇所に制御が移行する原因となった命令箇所における命令およびその命令の実行結果を求めるとともに、データ依存関係、制御依存関係、制御定義依存関係および設定洩れ依存関係に基づき、前記誤りに影響を与える変数およびその変数の前記第3の命令箇所における値を求める依存関係解析手段とを備え、前記第1の命令箇所は、前記誤りを出力した命令が存在する命令箇所であり、前記第2の命令箇所は、前記プログラムにおいて、最初に実行する命令が存在する命令箇所であり、前記バグ自動検出装置は、前記第3の命令箇所に制御が移行する原因となった命令の実行結果が誤っている場合には、その制御が移行する原因となった命令の中で使用されている変数の値が誤っているかどうかを、前記操作者に判断させ、前記第3の命令箇所に制御が移行する原因となった命令の実行結果が正しい場合には、前記誤りに影響を与える変数の前記第3の命令箇所における値が誤っているかどうかを前記操作者に判断させる分割検証制御手段をさらに備え、前記操作者が、前記第3の命令箇所に制御が移行する原因となった命令の中で使用されている変数の値に誤りがあると判断した場合に、前記第3の命令箇所に制御が移行する原因となった命令箇所を、前記第1の命令箇所として、前記プログラム再実行手段および前記依存関係解析手段は処理を行ない、前記操作者が、前記第3の命令箇所に制御が移行する原因となった命令の中で使用されている変数の値が正しいと判断した場合には、その制御が移行する原因となった命令を、前記分割検証制御手段はバグと判断し、前記操作者が、前記誤りに影響を与える変数の前記第3の命令箇所における値が誤っていると判断した場合には、その第3の命令箇所を、前記第1の命令箇所として、前記プログラム再実行手段および前記依存関係解析手段は処理を行ない、前記操作者が、前記誤りに影響を与える変数の前記第3の命令箇所における値が正しいと判断した場合には、その第3の命令箇所を、前記第2の命令箇所として、前記プログラム再実行手段および前記依存関係解析手段は処理を行ない、前記プログラム再実行手段、前記依存関係解析手段および前記分割検証制御手段による処理を繰返し、最終的に、前記第1の命令箇所と、前記第2の命令箇所との間に存在する命令箇所における命令を、前記分割検証制御手段は、バグと判断し、前記プログラム再実行手段、前記依存関係解析手段および前記分割検証制御手段による処理を繰返し、前記第1の命令箇所と、前記第2の命令箇所との間に、前記第1の命令箇所と、データ依存関係、制御依存関係、制御定義依存関係または設定漏れ依存関係を有する命令箇所が存在しない場合は、前記分割検証制御手段は、前記第1の命令箇所と前記第2の命令箇所との間に、命令の漏れに関するバグが存在すると判断し、ある命令箇所より前で、前記ある命令箇所に存在する命令で使用される変数を最後に定義した命令箇所と前記ある命令箇所とは、データ依存関係にあり、分岐命令またはループ命令が存在する命令箇所と、前記分岐命令の分岐内または前記ループ命令のループ内のある命令箇所とは、制御依存関係にあり、分岐命令の分岐内またはループ命令のループ内に、ある命令箇所より前で、前記ある命令箇所に存在する命令で使用される変数を最後に定義した命令箇所を含み、前記分岐命令の分岐外または前記ループ命令のループ外に前記ある命令箇所が存在する場合に、前記分岐命令またはループ命令が存在する命令箇所と、前記ある命令箇所とは、制御定義依存関係にあり、ある命令箇所より前で、前記ある命令箇所に存在する命令に用いる変数を最後に定義した命令箇所が、分岐命令またはループ命令の前に存在し、前記分岐命令またはループ命令の実行結果が変わると前記変数を定義し、前記分岐命令の分岐外またはループ命令のループ外に前記ある命令箇所が存在する場合に、前記分岐命令またはループ命令が存在する命令箇所と、前記ある命令箇所とは、設定洩れ依存関係にある、バグ自動検出装置。

前のページに戻る