JPH06202905A - クリティカルスライス・プログラムデバッグシステム - Google Patents
クリティカルスライス・プログラムデバッグシステムInfo
- Publication number
- JPH06202905A JPH06202905A JP4157823A JP15782392A JPH06202905A JP H06202905 A JPH06202905 A JP H06202905A JP 4157823 A JP4157823 A JP 4157823A JP 15782392 A JP15782392 A JP 15782392A JP H06202905 A JPH06202905 A JP H06202905A
- Authority
- JP
- Japan
- Prior art keywords
- statement
- program
- dependency
- variable
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【目的】 データエラーの原因となる文の抽出を、無駄
なく、漏れなく行ない、デバッグ作業の高効率化と信頼
性の向上を図る。 【構成】 ダイナミックスライスを拡張したプログラム
デバッグシステムで、データと制御の依存関係と共に、
ある文の変数に設定される値に影響を与える条件文との
間の変数値依存関係を記録するためのコードをプログラ
ムに埋め込むインストルメント部、実行されたプログラ
ムに埋め込まれていた変数値依存関係を記録する変数値
依存関係記録部、データ依存関係と制御依存関係に基づ
き抽出する文と共に、変数値依存関係を解析して変数値
エラーとして発見された変数の値の設定に影響する条件
文を抽出するクリティカルスライス獲得部を設ける。
なく、漏れなく行ない、デバッグ作業の高効率化と信頼
性の向上を図る。 【構成】 ダイナミックスライスを拡張したプログラム
デバッグシステムで、データと制御の依存関係と共に、
ある文の変数に設定される値に影響を与える条件文との
間の変数値依存関係を記録するためのコードをプログラ
ムに埋め込むインストルメント部、実行されたプログラ
ムに埋め込まれていた変数値依存関係を記録する変数値
依存関係記録部、データ依存関係と制御依存関係に基づ
き抽出する文と共に、変数値依存関係を解析して変数値
エラーとして発見された変数の値の設定に影響する条件
文を抽出するクリティカルスライス獲得部を設ける。
Description
【0001】
【産業上の利用分野】本発明は、一般の手続き型言語で
記述されたプログラムのデバッグ技術に係わり、特に、
発見されたデータエラーを基に、バグの存在するプログ
ラム内の文を効率良く限定するのに好適なクリティカル
スライス・プログラムデバッグシステムに関するもので
ある。
記述されたプログラムのデバッグ技術に係わり、特に、
発見されたデータエラーを基に、バグの存在するプログ
ラム内の文を効率良く限定するのに好適なクリティカル
スライス・プログラムデバッグシステムに関するもので
ある。
【0002】
【従来の技術】コンピュータ用のプログラムが仕様に合
わない場合には、ソーステキスト内で、その原因となっ
ている部分を見つけ、修正する必要がある。この原因を
バグと呼ぶ。プログラムのバグは、文の記述が漏れてい
る場合(文記述漏れバグ)や、余分な文の記述がある場
合(文記述過多バグ)、および、文の記述に誤りがある
場合に分類できる。さらに、文の記述に誤りがある場合
は、別の変数に値を設定するという誤りを引き起こす場
合(名前記述誤りバグ)と、それ以外の場合(文記述誤
りバグ)に分類できる。例えば、代入文において、左辺
の変数の名前を誤った場合には、名前記述誤りバグであ
る。尚、文記述誤りバグと文記述過多バグを総称して、
記述誤りバグということとする。
わない場合には、ソーステキスト内で、その原因となっ
ている部分を見つけ、修正する必要がある。この原因を
バグと呼ぶ。プログラムのバグは、文の記述が漏れてい
る場合(文記述漏れバグ)や、余分な文の記述がある場
合(文記述過多バグ)、および、文の記述に誤りがある
場合に分類できる。さらに、文の記述に誤りがある場合
は、別の変数に値を設定するという誤りを引き起こす場
合(名前記述誤りバグ)と、それ以外の場合(文記述誤
りバグ)に分類できる。例えば、代入文において、左辺
の変数の名前を誤った場合には、名前記述誤りバグであ
る。尚、文記述誤りバグと文記述過多バグを総称して、
記述誤りバグということとする。
【0003】プログラム内にバグがあると、変数に誤っ
た値が設定されたり、制御の流れが変わったりすること
がある。このように、ある実行時点において、ある変数
の値が誤っているようなデータエラーに関係するプログ
ラム内のバグの存在箇所を限定するための従来技術とし
ては、例えば、Mark Weiser,“Progr
am Slicing,”IEEE Transact
ions on Software Engineer
ing,Vol.SE−10,No4,July 19
84,pp.352〜357に記載のStatic S
lice(以下、スタティックスライスと記載)技術
と、 B.Korel and J.Laski,“D
ynamic Program Slicing,”
Information Processing Le
tters,Vol.29,No.10,Oct.19
88,pp.155〜163に記載のDynamic
Slice(以下、ダイナミックスライスと記載)技術
がある。
た値が設定されたり、制御の流れが変わったりすること
がある。このように、ある実行時点において、ある変数
の値が誤っているようなデータエラーに関係するプログ
ラム内のバグの存在箇所を限定するための従来技術とし
ては、例えば、Mark Weiser,“Progr
am Slicing,”IEEE Transact
ions on Software Engineer
ing,Vol.SE−10,No4,July 19
84,pp.352〜357に記載のStatic S
lice(以下、スタティックスライスと記載)技術
と、 B.Korel and J.Laski,“D
ynamic Program Slicing,”
Information Processing Le
tters,Vol.29,No.10,Oct.19
88,pp.155〜163に記載のDynamic
Slice(以下、ダイナミックスライスと記載)技術
がある。
【0004】文(S)に関するスタティックスライス
は、次に示すデータ依存関係(Data Depend
ence)と制御依存関係(Control Depe
ndence)の二つの依存関係を辿って、文Sに到達
する全ての文の集合である。 データ依存関係:文(S1)から文(S2)へのデータ
依存関係があるとは、文(S1)における、ある変数v
の定義が、変数vを使用している文(S2)に到達する
場合、すなわち、文(S1)で変数vの値が設定され、
文(S1)から文(S2)へのパスで変数vの値を再設
定しないものがあり、文(S2)で、変数vの値を参照
する場合である。 制御依存関係:文(S1)から文(S2)への制御依存
関係があるとは、文(S1)は分岐文、もしくは、ルー
プ文であり、文(S2)の実行の有無が、文(S1)の
実行結果に直接依存する場合である。
は、次に示すデータ依存関係(Data Depend
ence)と制御依存関係(Control Depe
ndence)の二つの依存関係を辿って、文Sに到達
する全ての文の集合である。 データ依存関係:文(S1)から文(S2)へのデータ
依存関係があるとは、文(S1)における、ある変数v
の定義が、変数vを使用している文(S2)に到達する
場合、すなわち、文(S1)で変数vの値が設定され、
文(S1)から文(S2)へのパスで変数vの値を再設
定しないものがあり、文(S2)で、変数vの値を参照
する場合である。 制御依存関係:文(S1)から文(S2)への制御依存
関係があるとは、文(S1)は分岐文、もしくは、ルー
プ文であり、文(S2)の実行の有無が、文(S1)の
実行結果に直接依存する場合である。
【0005】一方、ダイナミックスライスは、ある入力
データを与えて、プログラムを実行した時、変数が使用
されたある実行時点において、その変数の値に実際に影
響を与えた、実行された文の集合である。実行された文
を「繰返し」も含めて、順に並べたものを実行系列と呼
び、この実行系列の中で、上述のデータ依存関係と制御
依存関係の二つの依存関係を辿っていくことにより求め
られる。
データを与えて、プログラムを実行した時、変数が使用
されたある実行時点において、その変数の値に実際に影
響を与えた、実行された文の集合である。実行された文
を「繰返し」も含めて、順に並べたものを実行系列と呼
び、この実行系列の中で、上述のデータ依存関係と制御
依存関係の二つの依存関係を辿っていくことにより求め
られる。
【0006】図4は、従来のダイナミックスライス技術
を利用したプログラムデバッグシステムの構成を示すブ
ロック図である。このダイナミックスライス技術を利用
したシステムは、文の間の依存関係を記録するためのコ
ードをソースプログラム41に埋め込むインストルメン
ト部42と、コードをインストルメントされたインスト
ルメントソースプログラム43のコンパイルとリンクを
行なうコンパイル・リンク部44と、コンパイルとリン
クされた実行可能プログラム45の実行を制御するプロ
グラム実行制御部46と、実行された文の間のデータ依
存関係を、プログラム実行依存関係情報47として記録
するデータ依存関係記録部46aと、同じくプログラム
実行依存関係情報47として、実行された文の間の制御
依存関係を記録する制御依存関係記録部46bと、発見
されたデータエラーを基に、文の間のデータ依存関係と
制御依存関係を解析して、バグの存在箇所であるダイナ
ミックスライス情報49を抽出するダイナミックスライ
ス獲得部48とにより構成されている。
を利用したプログラムデバッグシステムの構成を示すブ
ロック図である。このダイナミックスライス技術を利用
したシステムは、文の間の依存関係を記録するためのコ
ードをソースプログラム41に埋め込むインストルメン
ト部42と、コードをインストルメントされたインスト
ルメントソースプログラム43のコンパイルとリンクを
行なうコンパイル・リンク部44と、コンパイルとリン
クされた実行可能プログラム45の実行を制御するプロ
グラム実行制御部46と、実行された文の間のデータ依
存関係を、プログラム実行依存関係情報47として記録
するデータ依存関係記録部46aと、同じくプログラム
実行依存関係情報47として、実行された文の間の制御
依存関係を記録する制御依存関係記録部46bと、発見
されたデータエラーを基に、文の間のデータ依存関係と
制御依存関係を解析して、バグの存在箇所であるダイナ
ミックスライス情報49を抽出するダイナミックスライ
ス獲得部48とにより構成されている。
【0007】この様な構成による、従来のプログラムデ
バッグシステムの動作を以下のサンプルプログラムPを
用いて説明する。 サンプルプログラムP: 「 1 get(n,a); 2 s:=a[1]; 3 i:=2; 4 while i≦nloop 5 s:=s+a[i]; 6 i:=i+1; end loop; 7 if s>10 then 8 if s mod2≠0 then 9 s:=s+1; end if; end if; 10 put(s); 」 このプログラムPは、配列aから要素の値をn個入力
し、変数sの値を出力するものであり、変数sの値は、
以下の式で定義される。 s=sum+1 (sum>10、かつ、sumが奇数
の時) s=sum (それ以外の時)
バッグシステムの動作を以下のサンプルプログラムPを
用いて説明する。 サンプルプログラムP: 「 1 get(n,a); 2 s:=a[1]; 3 i:=2; 4 while i≦nloop 5 s:=s+a[i]; 6 i:=i+1; end loop; 7 if s>10 then 8 if s mod2≠0 then 9 s:=s+1; end if; end if; 10 put(s); 」 このプログラムPは、配列aから要素の値をn個入力
し、変数sの値を出力するものであり、変数sの値は、
以下の式で定義される。 s=sum+1 (sum>10、かつ、sumが奇数
の時) s=sum (それ以外の時)
【0008】ここで、プログラムPに、文記述誤りバグ
を埋め込んだプログラムPbを考える。このプログラム
Pbでは、文(5)が、「s:=s+a[i];」では
なく、「s:=s−a[i];」となっているものとす
る。そして、このプログラムPbに、ある入力を与えて
実行すると、その実行系列は、以下のようになる。 実行時点 実行系列 1 get(n,a); {n=2,a=(16,2)} 2 s:=a[1]; {s=16} 3 i:=2; {i=2} 4 i≦n {2≦2} 5 s:=s−a[i]; {s=s−a[2]=16−2=14} 6 i:=i+1; {i=3} 7 i≦n {3≦2} 8 s>10 {14>10} 9 s mod2≠0 {14mod2≠0} 10 put(s); {put(14)}
を埋め込んだプログラムPbを考える。このプログラム
Pbでは、文(5)が、「s:=s+a[i];」では
なく、「s:=s−a[i];」となっているものとす
る。そして、このプログラムPbに、ある入力を与えて
実行すると、その実行系列は、以下のようになる。 実行時点 実行系列 1 get(n,a); {n=2,a=(16,2)} 2 s:=a[1]; {s=16} 3 i:=2; {i=2} 4 i≦n {2≦2} 5 s:=s−a[i]; {s=s−a[2]=16−2=14} 6 i:=i+1; {i=3} 7 i≦n {3≦2} 8 s>10 {14>10} 9 s mod2≠0 {14mod2≠0} 10 put(s); {put(14)}
【0009】この実行系列に基づき、図4のダイナミッ
クスライス獲得部48は、以下のようにして、ダイナミ
ックスライスを抽出する。まず、実行時点(10)にお
いて変数sに影響を与える文として、データ依存関係に
より、実行時点(5)の文(5)を抽出する。次に、こ
の実行時点(5)における変数s、a[i]に影響を与
える文として、データ依存関係により、実行時点(1)
〜(3)の文(1)〜(3)を、また、制御依存関係に
より、時効時点(4)の文(4)を抽出する。そして、
実行時点(4)(=(7))の変数iに影響を与える文
として、データ依存関係により、実行時点(6)の文
(6)を抽出する。
クスライス獲得部48は、以下のようにして、ダイナミ
ックスライスを抽出する。まず、実行時点(10)にお
いて変数sに影響を与える文として、データ依存関係に
より、実行時点(5)の文(5)を抽出する。次に、こ
の実行時点(5)における変数s、a[i]に影響を与
える文として、データ依存関係により、実行時点(1)
〜(3)の文(1)〜(3)を、また、制御依存関係に
より、時効時点(4)の文(4)を抽出する。そして、
実行時点(4)(=(7))の変数iに影響を与える文
として、データ依存関係により、実行時点(6)の文
(6)を抽出する。
【0010】一方、スタティックスライス技術を用いる
場合には、上述のプログラムPbに基づき、以下のよう
にして、スタティックスライスを抽出する。まず、文
(10)における変数sに影響を与える文として、デー
タ依存関係により、文(9)を抽出する。次に、この文
(9)における変数sに影響を与える文として、データ
依存関係により、文(5)を、また、制御依存関係によ
り、文(8)を抽出する。そして、文(5)の変数s、
a[i]に影響を与える文として、データ依存関係によ
り、文(1)〜(3)を、また、制御依存関係により、
文(4)を抽出する。この文(4)の変数iに影響を与
える文として、データ依存関係により、文(6)を抽出
する。さらに、文(8)における制御依存関係により、
文(7)を抽出する。
場合には、上述のプログラムPbに基づき、以下のよう
にして、スタティックスライスを抽出する。まず、文
(10)における変数sに影響を与える文として、デー
タ依存関係により、文(9)を抽出する。次に、この文
(9)における変数sに影響を与える文として、データ
依存関係により、文(5)を、また、制御依存関係によ
り、文(8)を抽出する。そして、文(5)の変数s、
a[i]に影響を与える文として、データ依存関係によ
り、文(1)〜(3)を、また、制御依存関係により、
文(4)を抽出する。この文(4)の変数iに影響を与
える文として、データ依存関係により、文(6)を抽出
する。さらに、文(8)における制御依存関係により、
文(7)を抽出する。
【0011】このようにして抽出されるダイナミックス
ライスとスタティックスライスとの相違を、図5に示
す。図5は、従来技術によるプログラムPbの出力文に
おける変数sに関するスタティックスライスとダイナミ
ックスライスを示す説明図である。本図に示すように、
文(10)の変数sに影響を与える文として、スタティ
ックスライスでは、プログラムPb内の文(1)〜
(9)が、ダイナミックスライスでは、文(1)〜
(6)が抽出される。デバッグを行なう作業者は、この
ようにして抽出された文から、文(10)の変数の誤り
の原因となった文(5)を探し出す。
ライスとスタティックスライスとの相違を、図5に示
す。図5は、従来技術によるプログラムPbの出力文に
おける変数sに関するスタティックスライスとダイナミ
ックスライスを示す説明図である。本図に示すように、
文(10)の変数sに影響を与える文として、スタティ
ックスライスでは、プログラムPb内の文(1)〜
(9)が、ダイナミックスライスでは、文(1)〜
(6)が抽出される。デバッグを行なう作業者は、この
ようにして抽出された文から、文(10)の変数の誤り
の原因となった文(5)を探し出す。
【0012】このように、スタティックスライスでは、
データエラーが発生した場合に、その変数の誤った値に
影響を与える可能性のある文の集合を限定できる。しか
し、プログラムを静的に解析するため、文(9)のよう
に、エラーに関係していない、実行されなかった文も抽
出してしまうという問題点がある。また、ダイナミック
スライスでは、誤った値に実際に影響を与えた文の集合
を限定することができる。しかし、文(8)のように、
ある分岐文の分岐結果の誤りのために、ある変数(ここ
では、変数s)に値が設定されず、それが原因で、デー
タエラーを引き起こしているような場合には、その分岐
文、および、その分岐文が依存している文の集合が、ま
るごと、検証対象となる実行系列から漏れてしまうとい
う問題点がある。
データエラーが発生した場合に、その変数の誤った値に
影響を与える可能性のある文の集合を限定できる。しか
し、プログラムを静的に解析するため、文(9)のよう
に、エラーに関係していない、実行されなかった文も抽
出してしまうという問題点がある。また、ダイナミック
スライスでは、誤った値に実際に影響を与えた文の集合
を限定することができる。しかし、文(8)のように、
ある分岐文の分岐結果の誤りのために、ある変数(ここ
では、変数s)に値が設定されず、それが原因で、デー
タエラーを引き起こしているような場合には、その分岐
文、および、その分岐文が依存している文の集合が、ま
るごと、検証対象となる実行系列から漏れてしまうとい
う問題点がある。
【0013】
【発明が解決しようとする課題】解決しようとする問題
点は、従来の技術では、エラーに関係しない文を抽出し
てしまうか、分岐文の分岐結果で設定される変数の漏れ
に起因するデータエラーを発生させる文の集合の抽出が
漏れてしまうかのいずれかの不具合が発生する可能性が
あり、デバッグ作業を、効率良く、かつ、高信頼に行な
うことができない点である。本発明の目的は、これら従
来技術の課題を解決し、エラーに関係しない文の抽出に
よるデバッグ作業者の負荷を軽減し、かつ、エラーに関
係する文の抽出漏れによるデバッグ作業の失敗を回避
し、デバッグ作業の高効率化と信頼性の向上を可能とす
るクリティカルスライス・プログラムデバッグシステム
を提供することである。
点は、従来の技術では、エラーに関係しない文を抽出し
てしまうか、分岐文の分岐結果で設定される変数の漏れ
に起因するデータエラーを発生させる文の集合の抽出が
漏れてしまうかのいずれかの不具合が発生する可能性が
あり、デバッグ作業を、効率良く、かつ、高信頼に行な
うことができない点である。本発明の目的は、これら従
来技術の課題を解決し、エラーに関係しない文の抽出に
よるデバッグ作業者の負荷を軽減し、かつ、エラーに関
係する文の抽出漏れによるデバッグ作業の失敗を回避
し、デバッグ作業の高効率化と信頼性の向上を可能とす
るクリティカルスライス・プログラムデバッグシステム
を提供することである。
【0014】
【課題を解決するための手段】上記目的を達成するた
め、本発明のクリティカルスライス・プログラムデバッ
グシステムは、(1)実行されたプログラムに予め埋め
込まれていた、このプログラムの文の間のデータ依存関
係を記録するデータ依存関係記録部と、プログラムの文
の間の制御依存関係を記録する制御依存関係記録部とを
具備し、プログラムの実行で発見された、変数に誤った
値が設定された変数値エラーを基に、データ依存関係と
制御依存関係を解析して、この変数値エラーに実際に影
響を与えた文を、ダイナミックスライス情報として抽出
し、バグの存在する文を限定するプログラムデバッグシ
ステムにおいて、データ依存関係と制御依存関係と共
に、プログラムの文と、この文の変数に設定される値に
影響を与える条件文との間の変数値依存関係を記録する
ためのコードを、プログラムに埋め込むインストルメン
ト部と、実行されたプログラムに埋め込まれていたこの
プログラムの文の間の変数値依存関係を記録する変数値
依存関係記録部と、データ依存関係と制御依存関係に基
づき抽出する文と共に、この変数値依存関係記録部で記
録した変数値依存関係を解析して、変数値エラーとして
発見された変数の値の設定に影響する条件文をクリティ
カルスライス情報として抽出するクリティカルスライス
獲得部とを具備し、このクリティカルスライス獲得部で
抽出した条件文を含み、バグの存在する文の限定を行な
うことを特徴とする。
め、本発明のクリティカルスライス・プログラムデバッ
グシステムは、(1)実行されたプログラムに予め埋め
込まれていた、このプログラムの文の間のデータ依存関
係を記録するデータ依存関係記録部と、プログラムの文
の間の制御依存関係を記録する制御依存関係記録部とを
具備し、プログラムの実行で発見された、変数に誤った
値が設定された変数値エラーを基に、データ依存関係と
制御依存関係を解析して、この変数値エラーに実際に影
響を与えた文を、ダイナミックスライス情報として抽出
し、バグの存在する文を限定するプログラムデバッグシ
ステムにおいて、データ依存関係と制御依存関係と共
に、プログラムの文と、この文の変数に設定される値に
影響を与える条件文との間の変数値依存関係を記録する
ためのコードを、プログラムに埋め込むインストルメン
ト部と、実行されたプログラムに埋め込まれていたこの
プログラムの文の間の変数値依存関係を記録する変数値
依存関係記録部と、データ依存関係と制御依存関係に基
づき抽出する文と共に、この変数値依存関係記録部で記
録した変数値依存関係を解析して、変数値エラーとして
発見された変数の値の設定に影響する条件文をクリティ
カルスライス情報として抽出するクリティカルスライス
獲得部とを具備し、このクリティカルスライス獲得部で
抽出した条件文を含み、バグの存在する文の限定を行な
うことを特徴とする。
【0015】
【作用】本発明においては、記述誤りバグがあるとデー
タエラーを引き起こす可能性のある文を含む最小の集合
であるクリティカルスライス(Critical Sl
ice)を獲得することにより、記述誤りバグの存在す
る箇所を限定する。すなわち、ダイナミックスライスと
して、誤った値に実際に影響を与えた文の抽出だけでは
なく、「分岐文Aの分岐パスが変わると、文Bで使用し
ている変数の値に影響を与える」というような、誤った
値に実際に影響を与える可能性のある文も抽出する。こ
のことにより、記述誤りバグがあり、制御の流れが変わ
ったとしても、出力する変数の値には影響を与えない
文、すなわち、値は変わらない文の抽出は行なわず、記
述誤りバグがあればデータエラーに影響を与える可能性
がある文のみを抽出することができる。
タエラーを引き起こす可能性のある文を含む最小の集合
であるクリティカルスライス(Critical Sl
ice)を獲得することにより、記述誤りバグの存在す
る箇所を限定する。すなわち、ダイナミックスライスと
して、誤った値に実際に影響を与えた文の抽出だけでは
なく、「分岐文Aの分岐パスが変わると、文Bで使用し
ている変数の値に影響を与える」というような、誤った
値に実際に影響を与える可能性のある文も抽出する。こ
のことにより、記述誤りバグがあり、制御の流れが変わ
ったとしても、出力する変数の値には影響を与えない
文、すなわち、値は変わらない文の抽出は行なわず、記
述誤りバグがあればデータエラーに影響を与える可能性
がある文のみを抽出することができる。
【0016】
【実施例】以下、本発明の実施例を、図面により詳細に
説明する。図1は、本発明のクリティカルスライス・プ
ログラムデバッグシステムの本発明に係わる構成の一実
施例を示すブロック図である。本図において、1は、一
般の手続き言語で記述されたソースプログラム、2は、
本発明に係わり、このソースプログラム1の文の間の依
存関係を記録するためのコードを、このソースプログラ
ム1に埋め込むインストルメント部、3は、このインス
トルメント部2により、コードを埋め込まれたインスト
ルメントソースプログラム、4は、ソースプログラム3
のコンパイルとリンクを行なうコンパイル・リンク部、
5は、コンパイルとリンクがなされた実行可能プログラ
ム、6は、実行可能プログラム5の実行を制御するプロ
グラム実行制御部、6aは、実行された文の間のデータ
依存関係を記録するデータ依存関係記録部、6bは、実
行された文の間の制御依存関係を記録する制御依存関係
記録部、6cは、本発明に係わり、文の変数の値の設定
に影響を与える条件文との間の依存関係を記録する変数
値依存関係記録部、7は、実行された文の間の各依存関
係をまとめたプログラム実行依存関係情報、8は、本発
明に係わり、プログラム実行依存関係情報7のデータ依
存関係と制御依存関係から、変数の値に影響を与えた文
を、また、変数値依存関係から、変数の値に影響を与え
る可能性のある条件文を、それぞれ、抽出して、クリテ
ィカルスライス情報9として出力するクリティカルスラ
イス獲得部である。
説明する。図1は、本発明のクリティカルスライス・プ
ログラムデバッグシステムの本発明に係わる構成の一実
施例を示すブロック図である。本図において、1は、一
般の手続き言語で記述されたソースプログラム、2は、
本発明に係わり、このソースプログラム1の文の間の依
存関係を記録するためのコードを、このソースプログラ
ム1に埋め込むインストルメント部、3は、このインス
トルメント部2により、コードを埋め込まれたインスト
ルメントソースプログラム、4は、ソースプログラム3
のコンパイルとリンクを行なうコンパイル・リンク部、
5は、コンパイルとリンクがなされた実行可能プログラ
ム、6は、実行可能プログラム5の実行を制御するプロ
グラム実行制御部、6aは、実行された文の間のデータ
依存関係を記録するデータ依存関係記録部、6bは、実
行された文の間の制御依存関係を記録する制御依存関係
記録部、6cは、本発明に係わり、文の変数の値の設定
に影響を与える条件文との間の依存関係を記録する変数
値依存関係記録部、7は、実行された文の間の各依存関
係をまとめたプログラム実行依存関係情報、8は、本発
明に係わり、プログラム実行依存関係情報7のデータ依
存関係と制御依存関係から、変数の値に影響を与えた文
を、また、変数値依存関係から、変数の値に影響を与え
る可能性のある条件文を、それぞれ、抽出して、クリテ
ィカルスライス情報9として出力するクリティカルスラ
イス獲得部である。
【0017】このような構成により、本実施例のクリテ
ィカルスライス・プログラムデバッグシステムは、発見
されたデータエラーを元に、それらの文の間の依存関係
を解析し、バグの存在するプログラム内の文を、漏れも
無駄もなく限定し、作業者のバグの究明作業を容易にす
ることができる。すなわち、本クリティカルスライス・
プログラムデバッグシステムでは、従来技術のダイナミ
ックスライスを拡張した新しいタイプのスライスである
クリティカルスライスを獲得することにより、記述誤り
バグの存在する箇所を限定する。このクリティカルスラ
イスは、記述誤りバグがあるとデータエラーを引き起こ
す可能性のある文を含む最小の集合であり、従来のスタ
ティックスライスによる無駄な文の抽出と、ダイナミッ
クスライスによる文の抽出漏れを回避することができ
る。
ィカルスライス・プログラムデバッグシステムは、発見
されたデータエラーを元に、それらの文の間の依存関係
を解析し、バグの存在するプログラム内の文を、漏れも
無駄もなく限定し、作業者のバグの究明作業を容易にす
ることができる。すなわち、本クリティカルスライス・
プログラムデバッグシステムでは、従来技術のダイナミ
ックスライスを拡張した新しいタイプのスライスである
クリティカルスライスを獲得することにより、記述誤り
バグの存在する箇所を限定する。このクリティカルスラ
イスは、記述誤りバグがあるとデータエラーを引き起こ
す可能性のある文を含む最小の集合であり、従来のスタ
ティックスライスによる無駄な文の抽出と、ダイナミッ
クスライスによる文の抽出漏れを回避することができ
る。
【0018】以下、本実施例のクリティカルスライス・
プログラムデバッグシステムの本発明に係わる動作を説
明する。デバッグ対象のプログラミング言語としては、
Ada、Pascal、Cなどの一般の手続き型言語を
想定しているが、ここでは、説明を簡単にするため、プ
ログラム内の文は、代入文、分岐文、ループ文、関数呼
出し文、および、入出力文からなるものとする。インス
トルメント部2において、プログラム内の各文の実行時
に、後述の(ロ)に示す「文実行時の処理」に記述した
処理を実行するために必要なコードをソースプログラム
1内に埋め込む。プログラム実行制御部6においては、
以下の情報の記録を行なう。
プログラムデバッグシステムの本発明に係わる動作を説
明する。デバッグ対象のプログラミング言語としては、
Ada、Pascal、Cなどの一般の手続き型言語を
想定しているが、ここでは、説明を簡単にするため、プ
ログラム内の文は、代入文、分岐文、ループ文、関数呼
出し文、および、入出力文からなるものとする。インス
トルメント部2において、プログラム内の各文の実行時
に、後述の(ロ)に示す「文実行時の処理」に記述した
処理を実行するために必要なコードをソースプログラム
1内に埋め込む。プログラム実行制御部6においては、
以下の情報の記録を行なう。
【0019】(イ)プログラム実行時に記録する情報。 デバッグ対象の実行可能プログラム5を実行しながら、
記録する情報を以下に示す。 CC:現実行時点cにおける制御フローC(c)。すな
わち、現在の実行時点cの実行を決定した分岐実行時点
(分岐文、ループ文、関数呼出し文の実行時点)の集
合。これは、分岐実行時点を要素とするスタック構造を
構成することにより求めることができる。そして、スタ
ックCCに要素cをプッシュダウンする操作を「pus
hCC(c);」、また、スタックCCから要素を1つ
ポップアップする操作を「popCC;」で表わす。 CDef(x):各変数xに対して、変数xを定義した
最新の実行時点pを記録する。 CDefC(x):各変数xに対して、変数xを定義し
た最新の実行時点pにおける制御フローC(p)。 UEXDefV(j):分岐文を実行した各実行時点j
に対して、実行されなかった分岐パス上で定義される可
能性のある変数の集合。 尚、この集合の求め方については、エイホ、ウルマン
著、土居訳「コンパイラ」(1986年、培風館発行)
などに記載されている。
記録する情報を以下に示す。 CC:現実行時点cにおける制御フローC(c)。すな
わち、現在の実行時点cの実行を決定した分岐実行時点
(分岐文、ループ文、関数呼出し文の実行時点)の集
合。これは、分岐実行時点を要素とするスタック構造を
構成することにより求めることができる。そして、スタ
ックCCに要素cをプッシュダウンする操作を「pus
hCC(c);」、また、スタックCCから要素を1つ
ポップアップする操作を「popCC;」で表わす。 CDef(x):各変数xに対して、変数xを定義した
最新の実行時点pを記録する。 CDefC(x):各変数xに対して、変数xを定義し
た最新の実行時点pにおける制御フローC(p)。 UEXDefV(j):分岐文を実行した各実行時点j
に対して、実行されなかった分岐パス上で定義される可
能性のある変数の集合。 尚、この集合の求め方については、エイホ、ウルマン
著、土居訳「コンパイラ」(1986年、培風館発行)
などに記載されている。
【0020】(ロ)文実行時の処理。 現在実行しようとしている実行時点をcとする。 (ロ−1)代入文、入力文を実行する場合、 代入文、入力文で定義する変数をwとすると、 CDef(w):=c; CDefC(w):=CC; (ロ−2)分岐文、ループ文、関数呼出し文を実行する
場合、 pushCC(c); スタックCCに実行時点cをプ
ッシュダウンする。 (ロ−3)分岐文、ループ文、関数呼出し文を終了する
場合、 popCC; スタックCCから実行時点を1つポップ
アップする。 但し、ループ文を終了する場合には、そのループ文本体
部の繰返し回数だけ、「popCC;」を実行する。
場合、 pushCC(c); スタックCCに実行時点cをプ
ッシュダウンする。 (ロ−3)分岐文、ループ文、関数呼出し文を終了する
場合、 popCC; スタックCCから実行時点を1つポップ
アップする。 但し、ループ文を終了する場合には、そのループ文本体
部の繰返し回数だけ、「popCC;」を実行する。
【0021】(ロ−4)文の実行時に、変数wの値を使
用する場合、 (ロ−4−1)データ依存関係記録部 D(c,w):=CDef(w); (ロ−4−2)制御依存関係記録部 i:=CDef(w); C(i):=CDefC(w); C(c):=CC; CSC(C,w):=C(i)−C(c); (ロ−4−3)変数値依存関係記録部 i:=CDef(w) OV:={j|i<j<c、かつ、w∈UEXDefV
(j)} C(c):=CC; CSO(c,w):=OV−C(c);
用する場合、 (ロ−4−1)データ依存関係記録部 D(c,w):=CDef(w); (ロ−4−2)制御依存関係記録部 i:=CDef(w); C(i):=CDefC(w); C(c):=CC; CSC(C,w):=C(i)−C(c); (ロ−4−3)変数値依存関係記録部 i:=CDef(w) OV:={j|i<j<c、かつ、w∈UEXDefV
(j)} C(c):=CC; CSO(c,w):=OV−C(c);
【0022】クリティカルスライス獲得部8において
は、以下のようにして、プログラム実行依存関係情報7
に基づき、クリティカルスライスを獲得する。全ての実
行時点c、および、その実行時点cにおいて使用してい
る変数wに対して、データ依存関係記録部D(c,
w)、制御依存関係CSC(c,w)、変数値依存関係
記録部CSO(c,w)が求められているものとする。
以下に示す手順により、実行時点tにおける変数vに関
するクリティカルスライス、CS=CS(t,v)を求
める。尚、ここで、「get(S)」は、実行時点の集
合Sから、最後に実行された実行時点を1つ取り出し、
それを返す関数であり、「Use(t)」は、実行時点
tにおいて実行された文で使用された変数の集合であ
る。また、{ }は空集合を表わす。 「 CS:={ }; NCS:=D(t,v)∪CSO(t,v)∪CSC(t,v)∪C(t); while NCS≠{ }loop i:=get(NCS); CS:=CS ∪ {i} NCS:=NCS ∪ D(i,Use(i)) ∪ CSO(i,Use(i)) ∪ CSC(i,Use(i)); end loop; 」
は、以下のようにして、プログラム実行依存関係情報7
に基づき、クリティカルスライスを獲得する。全ての実
行時点c、および、その実行時点cにおいて使用してい
る変数wに対して、データ依存関係記録部D(c,
w)、制御依存関係CSC(c,w)、変数値依存関係
記録部CSO(c,w)が求められているものとする。
以下に示す手順により、実行時点tにおける変数vに関
するクリティカルスライス、CS=CS(t,v)を求
める。尚、ここで、「get(S)」は、実行時点の集
合Sから、最後に実行された実行時点を1つ取り出し、
それを返す関数であり、「Use(t)」は、実行時点
tにおいて実行された文で使用された変数の集合であ
る。また、{ }は空集合を表わす。 「 CS:={ }; NCS:=D(t,v)∪CSO(t,v)∪CSC(t,v)∪C(t); while NCS≠{ }loop i:=get(NCS); CS:=CS ∪ {i} NCS:=NCS ∪ D(i,Use(i)) ∪ CSO(i,Use(i)) ∪ CSC(i,Use(i)); end loop; 」
【0023】すなわち、まず、「CS:={ };」で
初期化し、次に、実行時点tにおける変数vに関するデ
ータ依存関係D(t,v)、制御依存関係CSC(t,
v)、変数値依存関係CSO(t,v)、制御フローC
(t)の和集合NCSを取る。和集合NCSが空であれ
ば、それで処理は終了するが、空でなければ、その和集
合NCSから、最後に実行された実行時点iを取り出し
て記録する。そして、次に、この最後に実行された実行
時点iにおいて実行された文で使用された変数の集合U
se(i)に対して求められる、各依存関係の和集合を
取る。以下、順次にこの動作を繰返し、クリティカルス
ライスCSを獲得する。
初期化し、次に、実行時点tにおける変数vに関するデ
ータ依存関係D(t,v)、制御依存関係CSC(t,
v)、変数値依存関係CSO(t,v)、制御フローC
(t)の和集合NCSを取る。和集合NCSが空であれ
ば、それで処理は終了するが、空でなければ、その和集
合NCSから、最後に実行された実行時点iを取り出し
て記録する。そして、次に、この最後に実行された実行
時点iにおいて実行された文で使用された変数の集合U
se(i)に対して求められる、各依存関係の和集合を
取る。以下、順次にこの動作を繰返し、クリティカルス
ライスCSを獲得する。
【0024】次に、従来技術で記載したプログラムPb
の実行系列での、出力文(10)における変数sに関す
るクリティカルスライスの抽出動作を、図2を用いて説
明する。図2は、プログラムPbの実行系列の一実施例
を示す説明図である。本実施例の実行系列は、従来技術
で説明したものと同様の入力を、プログラムPbに入力
を与えて実行した場合のものである。まず、実行時点
(10)の出力文(10)の変数sに影響を与える文と
して、データ依存関係(図中、D:実線で記載)によ
り、実行時点(5)の文(5)を、また、制御依存関係
(図中、CSC:一点鎖線で記載)により、実行時点
(4)の文(4)を、そして、変数値依存関係(図中、
CSO:破線で記載)により、実行時点(9)の文
(8)、および、実行時点(7)の文(4)を、和集合
NCSとして抽出する。次に、和集合NCSから、最後
に実行された実行時点(9)を取り出し、この実行時点
(9)の文(8)をクリティカルスライスとして獲得
し、この実行時点(9)の文(8)の変数sに関するク
リティカルスライスの抽出動作を行なう。以下、和集合
NCSが空になるまで、順次にこの動作を繰返し、クリ
ティカルスライスCSを獲得する。
の実行系列での、出力文(10)における変数sに関す
るクリティカルスライスの抽出動作を、図2を用いて説
明する。図2は、プログラムPbの実行系列の一実施例
を示す説明図である。本実施例の実行系列は、従来技術
で説明したものと同様の入力を、プログラムPbに入力
を与えて実行した場合のものである。まず、実行時点
(10)の出力文(10)の変数sに影響を与える文と
して、データ依存関係(図中、D:実線で記載)によ
り、実行時点(5)の文(5)を、また、制御依存関係
(図中、CSC:一点鎖線で記載)により、実行時点
(4)の文(4)を、そして、変数値依存関係(図中、
CSO:破線で記載)により、実行時点(9)の文
(8)、および、実行時点(7)の文(4)を、和集合
NCSとして抽出する。次に、和集合NCSから、最後
に実行された実行時点(9)を取り出し、この実行時点
(9)の文(8)をクリティカルスライスとして獲得
し、この実行時点(9)の文(8)の変数sに関するク
リティカルスライスの抽出動作を行なう。以下、和集合
NCSが空になるまで、順次にこの動作を繰返し、クリ
ティカルスライスCSを獲得する。
【0025】このようにして、本実施例のクリティカル
スライス・プログラムデバッグシステムでは、従来のダ
イナミックスライスでは漏れていた実行時点(9)の文
(8)も抽出することができる。
スライス・プログラムデバッグシステムでは、従来のダ
イナミックスライスでは漏れていた実行時点(9)の文
(8)も抽出することができる。
【0026】図3は、図1におけるクリティカルスライ
ス・プログラムデバッグシステムによるプログラムPb
の出力文における変数sに関するクリティカルスライス
と従来技術によるスタティックスライスおよびダイナミ
ックスライスを示す説明図である。本図に示すように、
文(10)の変数sに影響を与える文として、スタティ
ックスライスでは、プログラムPb内の文(1)〜
(9)が、ダイナミックスライスでは、文(1)〜
(6)が、そして、本発明に係わるクリティカルスライ
スでは、文(1)〜(6)、および、(8)が抽出され
る。
ス・プログラムデバッグシステムによるプログラムPb
の出力文における変数sに関するクリティカルスライス
と従来技術によるスタティックスライスおよびダイナミ
ックスライスを示す説明図である。本図に示すように、
文(10)の変数sに影響を与える文として、スタティ
ックスライスでは、プログラムPb内の文(1)〜
(9)が、ダイナミックスライスでは、文(1)〜
(6)が、そして、本発明に係わるクリティカルスライ
スでは、文(1)〜(6)、および、(8)が抽出され
る。
【0027】すなわち、従来技術であるスタティックス
ライスやダイナミックスライスと、本発明で獲得方法を
提供したクリティカルスライスとの間には、ダイナミッ
クスライス ⊆ クリティカルスライス⊆ スタティッ
クスライスという関係がある。ダイナミックスライス
は、最小の集合であるが、誤っている値に影響している
一部の文(8)を見逃してしまう。しかし、クリティカ
ルスライスは、記述誤りバグがあるとデータエラーを引
き起こす可能性のある文を含む最小の集合であり、この
クリティカルスライスを獲得することにより、記述誤り
バグの存在する箇所を限定することができる。このこと
により、デバッグを行なう作業者は、従来技術に比べ
て、バグの究明作業を、より確実に、そして、効率良く
行なうことができる。
ライスやダイナミックスライスと、本発明で獲得方法を
提供したクリティカルスライスとの間には、ダイナミッ
クスライス ⊆ クリティカルスライス⊆ スタティッ
クスライスという関係がある。ダイナミックスライス
は、最小の集合であるが、誤っている値に影響している
一部の文(8)を見逃してしまう。しかし、クリティカ
ルスライスは、記述誤りバグがあるとデータエラーを引
き起こす可能性のある文を含む最小の集合であり、この
クリティカルスライスを獲得することにより、記述誤り
バグの存在する箇所を限定することができる。このこと
により、デバッグを行なう作業者は、従来技術に比べ
て、バグの究明作業を、より確実に、そして、効率良く
行なうことができる。
【0028】このように、クリティカルスライスは、も
し、クリティカルスライス内の文に、記述誤りバグがあ
れば、データエラーに影響を与える可能性があり、ま
た、クリティカルスライス以外の文に、記述誤りバグが
あっても、データエラーに影響を与えないという性質を
持つ。例えば、本図3において、クリティカルスライス
内の文(1)〜(6)、(8)に、記述誤りバグがあれ
ば、データエラーに影響を与える可能性があり、実際、
文記述誤りバグが文(5)に存在する。反対に、クリテ
ィカルスライス以外の文に記述誤りバグがあっても、デ
ータエラーに影響を与えない。実際、文(7)、(9)
に誤りがあり、制御の流れが変わったとしても、出力文
(10)における変数sの値には影響を与えない、すな
わち、値は変わらない。
し、クリティカルスライス内の文に、記述誤りバグがあ
れば、データエラーに影響を与える可能性があり、ま
た、クリティカルスライス以外の文に、記述誤りバグが
あっても、データエラーに影響を与えないという性質を
持つ。例えば、本図3において、クリティカルスライス
内の文(1)〜(6)、(8)に、記述誤りバグがあれ
ば、データエラーに影響を与える可能性があり、実際、
文記述誤りバグが文(5)に存在する。反対に、クリテ
ィカルスライス以外の文に記述誤りバグがあっても、デ
ータエラーに影響を与えない。実際、文(7)、(9)
に誤りがあり、制御の流れが変わったとしても、出力文
(10)における変数sの値には影響を与えない、すな
わち、値は変わらない。
【0029】以上、図1〜図3を用いて説明したよう
に、本実施例のクリティカルスライス・プログラムデバ
ッグシステムでは、記述誤りバグがあるとデータエラー
を引き起こす可能性のある文を含む最小の集合であるク
リティカルスライスを獲得することにより、記述誤りバ
グの存在するプログラム内の文を限定することができ、
バグの究明作業を容易にすることができる。尚、本発明
は、図1〜図3を用いて説明した実施例に限定されるも
のではない。例えば、本実施例では、結果的には、ダイ
ナミックスライスの方が、効率良く、データエラーに影
響を与えた文字記述誤りバグを有する文(5)を絞りだ
すものとなっているが、より大規模なプログラムに適用
することにより、従来のスタティックスライスによる無
駄な文の抽出と、ダイナミックスライスによる対象文の
抽出漏れに対する優位性が得られる。
に、本実施例のクリティカルスライス・プログラムデバ
ッグシステムでは、記述誤りバグがあるとデータエラー
を引き起こす可能性のある文を含む最小の集合であるク
リティカルスライスを獲得することにより、記述誤りバ
グの存在するプログラム内の文を限定することができ、
バグの究明作業を容易にすることができる。尚、本発明
は、図1〜図3を用いて説明した実施例に限定されるも
のではない。例えば、本実施例では、結果的には、ダイ
ナミックスライスの方が、効率良く、データエラーに影
響を与えた文字記述誤りバグを有する文(5)を絞りだ
すものとなっているが、より大規模なプログラムに適用
することにより、従来のスタティックスライスによる無
駄な文の抽出と、ダイナミックスライスによる対象文の
抽出漏れに対する優位性が得られる。
【0030】
【発明の効果】本発明によれば、スタティックスライス
のように、エラーに関係していない、実行されなかった
文の抽出を回避でき、また、ダイナミックスライスのよ
うに、ある分岐文の分岐結果の誤りのためにある変数に
値が設定されず、それが原因で、データエラーを引き起
こしているような場合に発生する文の実行系列からの漏
れてを回避でき、デバッグ作業者の負荷を軽減して、デ
バッグ作業の高効率化と信頼性の向上が可能となる。
のように、エラーに関係していない、実行されなかった
文の抽出を回避でき、また、ダイナミックスライスのよ
うに、ある分岐文の分岐結果の誤りのためにある変数に
値が設定されず、それが原因で、データエラーを引き起
こしているような場合に発生する文の実行系列からの漏
れてを回避でき、デバッグ作業者の負荷を軽減して、デ
バッグ作業の高効率化と信頼性の向上が可能となる。
【0031】
【図1】本発明のクリティカルスライス・プログラムデ
バッグシステムの本発明に係わる構成の一実施例を示す
ブロック図である。
バッグシステムの本発明に係わる構成の一実施例を示す
ブロック図である。
【図2】プログラムPbの実行系列の一実施例を示す説
明図である。
明図である。
【図3】図1におけるクリティカルスライス・プログラ
ムデバッグシステムによるプログラムPbの出力文にお
ける変数sに関するクリティカルスライスと従来技術に
よるスタティックスライスおよびダイナミックスライス
を示す説明図である。
ムデバッグシステムによるプログラムPbの出力文にお
ける変数sに関するクリティカルスライスと従来技術に
よるスタティックスライスおよびダイナミックスライス
を示す説明図である。
【図4】従来のダイナミックスライス技術を利用したプ
ログラムデバッグシステムの構成を示すブロック図であ
る。
ログラムデバッグシステムの構成を示すブロック図であ
る。
【図5】従来技術によるプログラムPbの出力文におけ
る変数sに関するスタティックスライスとダイナミック
スライスを示す説明図である。
る変数sに関するスタティックスライスとダイナミック
スライスを示す説明図である。
1 ソースプログラム 2 インストルメント部 3 インストルメントソースプログラム 4 コンパイル・リンク部 5 実効可能プログラム 6 プログラム実行制御部 6a データ依存関係記録部 6b 制御依存関係記録部 6c 変数値依存関係記録部 7 プログラム実行依存関係情報 8 クリティカルスライス獲得部 9 クリティカルスライス情報 41 ソースプログラム 42 インストルメント部 43 インストルメントソースプログラム 44 コンパイル・リンク部 45 実行可能プログラム 46 プログラム実行制御部 46a データ依存関係記録部 46b 制御依存関係記録部 47 プログラム実行依存関係情報 48 ダイナミックスライス獲得部 49 ダイナミックスライス情報
Claims (1)
- 【請求項1】 実行されたプログラムに予め埋め込まれ
ていた該プログラムの文の間のデータ依存関係を記録す
るデータ依存関係記録手段と、上記プログラムの文の間
の制御依存関係を記録する制御依存関係記録手段とを具
備し、上記プログラムの実行で発見された、変数に誤っ
た値が設定された変数値エラーを基に、上記データ依存
関係と制御依存関係を解析して、該変数値エラーに実際
に影響を与えた文を、ダイナミックスライス情報として
抽出し、バグの存在する文を限定するプログラムデバッ
グシステムにおいて、上記データ依存関係と制御依存関
係と共に、上記プログラムの文と、該文の変数に設定さ
れる値に影響を与える条件文との間の変数値依存関係を
記録するためのコードを、上記プログラムに埋め込むイ
ンストルメント手段と、実行された上記プログラムに予
め埋め込まれていた該プログラムの文の間の変数値依存
関係を記録する変数値依存関係記録手段と、上記データ
依存関係と制御依存関係に基づき抽出する文と共に、該
変数値依存関係記録手段で記録した変数値依存関係を解
析して、上記変数値エラーとして発見された変数の値の
設定に影響する条件文をクリティカルスライス情報とし
て抽出するクリティカルスライス獲得手段とを具備し、
該クリティカルスライス獲得手段で抽出した条件文を含
み、上記バグの存在する文の限定を行なうことを特徴と
するクリティカルスライス・プログラムデバッグシステ
ム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4157823A JPH06202905A (ja) | 1992-06-17 | 1992-06-17 | クリティカルスライス・プログラムデバッグシステム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4157823A JPH06202905A (ja) | 1992-06-17 | 1992-06-17 | クリティカルスライス・プログラムデバッグシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06202905A true JPH06202905A (ja) | 1994-07-22 |
Family
ID=15658095
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4157823A Pending JPH06202905A (ja) | 1992-06-17 | 1992-06-17 | クリティカルスライス・プログラムデバッグシステム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH06202905A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH1195996A (ja) * | 1997-09-24 | 1999-04-09 | Nippon Steel Corp | 冗長コード検査装置 |
| US6757639B2 (en) | 2001-07-26 | 2004-06-29 | Kabushiki Kaisha Toshiba | Modification risk degree measurement system, modification risk degree measurement method and modification risk degree measurement program |
| JP2013506895A (ja) * | 2009-10-05 | 2013-02-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ランタイム挙動に基づくアプリケーションの自動修正 |
| US9280406B2 (en) | 2009-10-05 | 2016-03-08 | International Business Machines Corporation | Automatic correction of application based on runtime behavior |
| WO2017168560A1 (ja) * | 2016-03-29 | 2017-10-05 | 三菱電機株式会社 | 開発支援装置及び開発支援方法 |
-
1992
- 1992-06-17 JP JP4157823A patent/JPH06202905A/ja active Pending
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH1195996A (ja) * | 1997-09-24 | 1999-04-09 | Nippon Steel Corp | 冗長コード検査装置 |
| US6757639B2 (en) | 2001-07-26 | 2004-06-29 | Kabushiki Kaisha Toshiba | Modification risk degree measurement system, modification risk degree measurement method and modification risk degree measurement program |
| US7072796B2 (en) | 2001-07-26 | 2006-07-04 | Kabushiki Kaisha Toshiba | Modification risk degree measurement system, modification risk degree measurement method and modification risk degree measurement program |
| JP2013506895A (ja) * | 2009-10-05 | 2013-02-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ランタイム挙動に基づくアプリケーションの自動修正 |
| US9280406B2 (en) | 2009-10-05 | 2016-03-08 | International Business Machines Corporation | Automatic correction of application based on runtime behavior |
| US9886372B2 (en) | 2009-10-05 | 2018-02-06 | International Business Machines Corporation | Automatic correction of application based on runtime behavior |
| WO2017168560A1 (ja) * | 2016-03-29 | 2017-10-05 | 三菱電機株式会社 | 開発支援装置及び開発支援方法 |
| JP6289783B1 (ja) * | 2016-03-29 | 2018-03-07 | 三菱電機株式会社 | 開発支援装置及び開発支援方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Cifuentes et al. | Intraprocedural static slicing of binary executables | |
| Korel et al. | Application of Dynamic Slicing in Program Debugging. | |
| CN101739339B (zh) | 一种基于程序动态依赖关系的软件故障定位方法 | |
| US8266608B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
| US8826244B2 (en) | Providing programming support to debuggers | |
| US20040054991A1 (en) | Debugging tool and method for tracking code execution paths | |
| Wang et al. | Automated path generation for software fault localization | |
| CN112286789B (zh) | 用于对系统进行测试的方法 | |
| Barbar et al. | Object versioning for flow-sensitive pointer analysis | |
| CN102207902B (zh) | 用于分析包含校准值的软件的方法和设备 | |
| US9454347B2 (en) | Analyzing incomplete software | |
| KR20010078692A (ko) | 하이브리드 컴퓨터 프로그래밍 환경 | |
| Wu et al. | Techniques of maintaining evolving component-based software | |
| JPH06202905A (ja) | クリティカルスライス・プログラムデバッグシステム | |
| GB2539961A (en) | Code hotspot encapsulation | |
| US20080127118A1 (en) | Method and system for dynamic patching of software | |
| Huang et al. | Robustifying Debug Information Updates in LLVM via Control-Flow Conformance Analysis | |
| Weber et al. | Enhancing software safety by fault trees: experiences from an application to flight critical software | |
| Doyle et al. | IBIS: an Interactive Bytecode Inspection System, using symbolic execution and constraint logic programming | |
| Császár et al. | Building fast and reliable reverse engineering tools with Frida and Rust | |
| JPH06214825A (ja) | プログラム・バグ潜在域抽出装置 | |
| Obster et al. | A live static code analysis architecture for PLC software | |
| Brunner et al. | Bug path reduction strategies for symbolic execution | |
| JP7827159B2 (ja) | インパクト解析装置、インパクト解析方法及びプログラム | |
| JPH07134664A (ja) | プログラムバグ潜在域抽出方法 |