[go: up one dir, main page]

JPH06202905A - Critical slice program debug system - Google Patents

Critical slice program debug system

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
Application number
JP4157823A
Other languages
Japanese (ja)
Inventor
Takao Shimomura
隆夫 下村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Inc
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP4157823A priority Critical patent/JPH06202905A/en
Publication of JPH06202905A publication Critical patent/JPH06202905A/en
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 データエラーの原因となる文の抽出を、無駄
なく、漏れなく行ない、デバッグ作業の高効率化と信頼
性の向上を図る。 【構成】 ダイナミックスライスを拡張したプログラム
デバッグシステムで、データと制御の依存関係と共に、
ある文の変数に設定される値に影響を与える条件文との
間の変数値依存関係を記録するためのコードをプログラ
ムに埋め込むインストルメント部、実行されたプログラ
ムに埋め込まれていた変数値依存関係を記録する変数値
依存関係記録部、データ依存関係と制御依存関係に基づ
き抽出する文と共に、変数値依存関係を解析して変数値
エラーとして発見された変数の値の設定に影響する条件
文を抽出するクリティカルスライス獲得部を設ける。
(57) [Summary] [Purpose] To extract the statements that cause data errors without waste and without omission, to improve the efficiency and reliability of debugging work. [Structure] A program debug system with extended dynamic slices, along with data and control dependencies.
Instrument part that embeds the code for recording the variable value dependency relationship with the conditional statement that affects the value set for the variable of a certain statement into the program, the variable value dependency relationship embedded in the executed program The variable value dependency recording section that records the data value and the statement that is extracted based on the data dependency relationship and the control dependency relationship, as well as the conditional statement that analyzes the variable value dependency relationship and affects the setting of the value of the variable found as a variable value error. A critical slice acquisition unit for extracting is provided.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、一般の手続き型言語で
記述されたプログラムのデバッグ技術に係わり、特に、
発見されたデータエラーを基に、バグの存在するプログ
ラム内の文を効率良く限定するのに好適なクリティカル
スライス・プログラムデバッグシステムに関するもので
ある。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a technique for debugging a program written in a general procedural language, and more particularly,
The present invention relates to a critical slice program debug system suitable for efficiently limiting a statement in a program having a bug based on a found data error.

【0002】[0002]

【従来の技術】コンピュータ用のプログラムが仕様に合
わない場合には、ソーステキスト内で、その原因となっ
ている部分を見つけ、修正する必要がある。この原因を
バグと呼ぶ。プログラムのバグは、文の記述が漏れてい
る場合(文記述漏れバグ)や、余分な文の記述がある場
合(文記述過多バグ)、および、文の記述に誤りがある
場合に分類できる。さらに、文の記述に誤りがある場合
は、別の変数に値を設定するという誤りを引き起こす場
合(名前記述誤りバグ)と、それ以外の場合(文記述誤
りバグ)に分類できる。例えば、代入文において、左辺
の変数の名前を誤った場合には、名前記述誤りバグであ
る。尚、文記述誤りバグと文記述過多バグを総称して、
記述誤りバグということとする。
2. Description of the Related Art When a program for a computer does not meet the specifications, it is necessary to find and correct the cause of the problem in the source text. This cause is called a bug. A program bug can be classified into a case where a statement description is leaked (sentence description bug), an extra statement description (sentence excess bug), and a statement description error. Furthermore, when there is an error in the statement description, it can be classified into a case where an error of setting a value to another variable is caused (name description error bug) and a case other than that (sentence description error bug). For example, if the name of the variable on the left side is wrong in the assignment statement, it is a name description error bug. It should be noted that the sentence description error bug and the sentence description excess bug are collectively referred to as
It is a description error bug.

【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(以下、ダイナミックスライスと記載)技術
がある。
If there is a bug in the program, an incorrect value may be set in the variable or the control flow may change. As described above, as a conventional technique for limiting the location of a bug in a program related to a data error in which a value of a certain variable is incorrect at a certain execution point, for example, Mark Weiser, “Progr.
am Slicing, "IEEE Transact
ions on Software Engineer
ing, Vol. SE-10, No4, July 19
84, pp. Static S described in 352 to 357.
Lice (hereinafter, referred to as static slice) technology, and B. Korel and J. Laski, "D
dynamic Program Slicing, ”
Information Processing Le
tters, Vol. 29, No. 10, Oct. 19
88, pp. Dynamic described in 155 to 163.
There is a slice (hereinafter referred to as dynamic slice) technique.

【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)の
実行結果に直接依存する場合である。
The static slice related to the sentence (S) has the following data dependency (Data Dependence).
ence) and control dependency (Control Depe
It is a set of all the sentences that reach the sentence S by tracing the two dependency relationships of (ndence). Data dependency: There is a data dependency from the sentence (S1) to the sentence (S2) means that a certain variable v in the sentence (S1).
Definition reaches the sentence (S2) using the variable v, that is, the value of the variable v is set in the sentence (S1),
This is a case where the value of the variable v is not reset in the path from the statement (S1) to the statement (S2) and the value of the variable v is referred to in the statement (S2). Control dependency: There is a control dependency from the statement (S1) to the statement (S2), the statement (S1) is a branch statement or a loop statement, and whether the statement (S2) is executed is This is a case where it directly depends on the execution result of S1).

【0005】一方、ダイナミックスライスは、ある入力
データを与えて、プログラムを実行した時、変数が使用
されたある実行時点において、その変数の値に実際に影
響を与えた、実行された文の集合である。実行された文
を「繰返し」も含めて、順に並べたものを実行系列と呼
び、この実行系列の中で、上述のデータ依存関係と制御
依存関係の二つの依存関係を辿っていくことにより求め
られる。
On the other hand, the dynamic slice is a set of executed statements that actually affect the value of a variable at a certain execution time when the program is executed by giving certain input data. Is. A sequence of executed statements including "repetition" is called an execution sequence. In this execution sequence, it is found by tracing the above two dependency relationships of the data dependency relationship and the control dependency relationship. To be

【0006】図4は、従来のダイナミックスライス技術
を利用したプログラムデバッグシステムの構成を示すブ
ロック図である。このダイナミックスライス技術を利用
したシステムは、文の間の依存関係を記録するためのコ
ードをソースプログラム41に埋め込むインストルメン
ト部42と、コードをインストルメントされたインスト
ルメントソースプログラム43のコンパイルとリンクを
行なうコンパイル・リンク部44と、コンパイルとリン
クされた実行可能プログラム45の実行を制御するプロ
グラム実行制御部46と、実行された文の間のデータ依
存関係を、プログラム実行依存関係情報47として記録
するデータ依存関係記録部46aと、同じくプログラム
実行依存関係情報47として、実行された文の間の制御
依存関係を記録する制御依存関係記録部46bと、発見
されたデータエラーを基に、文の間のデータ依存関係と
制御依存関係を解析して、バグの存在箇所であるダイナ
ミックスライス情報49を抽出するダイナミックスライ
ス獲得部48とにより構成されている。
FIG. 4 is a block diagram showing the structure of a conventional program debug system using the dynamic slice technique. A system using this dynamic slicing technique is to compile and link an instrument section 42 in which a code for recording a dependency between sentences is embedded in a source program 41 and an instrument source program 43 in which the code is instrumented. The data dependency relation between the executed compile / link unit 44, the program execution control unit 46 for controlling the execution of the executable program 45 linked with the compile, and the executed statement is recorded as the program execution dependency relation information 47. The data dependency recording unit 46a, the control dependency recording unit 46b which records the control dependency between the executed statements as the program execution dependency information 47, and the statement dependency based on the found data error. Analysis of the data and control dependencies of the Is constituted by a dynamic slice acquisition unit 48 for extracting dynamic slice information 49 is place.

【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 (それ以外の時)
The operation of the conventional program debug system having such a configuration will be described with reference to the following sample program P. Sample program 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); ”This program P inputs n element values from the array a, The value of the variable s is output, and the value of the variable s is
It is defined by the following formula. s = sum + 1 (when sum> 10 and sum is an odd number) s = sum (at other times)

【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)}
Now, consider a program Pb in which a sentence description error bug is embedded in the program P. In this program Pb, it is assumed that the sentence (5) is "s: = s-a [i];" instead of "s: = s + a [i];". When this program Pb is given an input and executed, the execution sequence is as follows. Execution time point Execution sequence 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 {14 mod2 ≠ 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)を抽出する。
Based on this execution sequence, the dynamic slice acquisition unit 48 of FIG. 4 extracts dynamic slices as follows. First, the sentence (5) at the execution time point (5) is extracted by the data dependency as the statement that affects the variable s at the execution time point (10). Next, as a statement that affects the variables s and a [i] at the execution time point (5), the data dependence relationship causes the execution time point (1).
The sentences (1) to (3) of (3) to (3) and the sentence (4) of the aging time (4) are extracted by the control dependency. And
As the statement that affects the variable i at the execution time point (4) (= (7)), the statement (6) at the execution time point (6) is extracted by the data dependency.

【0010】一方、スタティックスライス技術を用いる
場合には、上述のプログラムPbに基づき、以下のよう
にして、スタティックスライスを抽出する。まず、文
(10)における変数sに影響を与える文として、デー
タ依存関係により、文(9)を抽出する。次に、この文
(9)における変数sに影響を与える文として、データ
依存関係により、文(5)を、また、制御依存関係によ
り、文(8)を抽出する。そして、文(5)の変数s、
a[i]に影響を与える文として、データ依存関係によ
り、文(1)〜(3)を、また、制御依存関係により、
文(4)を抽出する。この文(4)の変数iに影響を与
える文として、データ依存関係により、文(6)を抽出
する。さらに、文(8)における制御依存関係により、
文(7)を抽出する。
On the other hand, when the static slice technique is used, the static slice is extracted based on the above-mentioned program Pb as follows. First, the sentence (9) is extracted as a sentence that affects the variable s in the sentence (10) by the data dependency. Next, as the statement that affects the variable s in this statement (9), the statement (5) is extracted by the data dependency and the statement (8) is extracted by the control dependency. And the variable s of sentence (5),
As the statement that influences a [i], the statements (1) to (3) are given by the data dependency, and the statements are given by the control dependency.
Extract sentence (4). The sentence (6) is extracted as a sentence that affects the variable i of the sentence (4) based on the data dependency. Furthermore, due to the control dependency in sentence (8),
Extract sentence (7).

【0011】このようにして抽出されるダイナミックス
ライスとスタティックスライスとの相違を、図5に示
す。図5は、従来技術によるプログラムPbの出力文に
おける変数sに関するスタティックスライスとダイナミ
ックスライスを示す説明図である。本図に示すように、
文(10)の変数sに影響を与える文として、スタティ
ックスライスでは、プログラムPb内の文(1)〜
(9)が、ダイナミックスライスでは、文(1)〜
(6)が抽出される。デバッグを行なう作業者は、この
ようにして抽出された文から、文(10)の変数の誤り
の原因となった文(5)を探し出す。
FIG. 5 shows the difference between the dynamic slice and the static slice thus extracted. FIG. 5 is an explanatory diagram showing static slices and dynamic slices relating to the variable s in the output statement of the program Pb according to the conventional technique. As shown in this figure,
In the static slice, the statements (1) through (1) in the program Pb affect the variable s of the statement (10).
(9), in dynamic slice, sentences (1)-
(6) is extracted. The operator who performs the debugging searches for the sentence (5) that causes the error of the variable of the sentence (10) from the thus extracted sentences.

【0012】このように、スタティックスライスでは、
データエラーが発生した場合に、その変数の誤った値に
影響を与える可能性のある文の集合を限定できる。しか
し、プログラムを静的に解析するため、文(9)のよう
に、エラーに関係していない、実行されなかった文も抽
出してしまうという問題点がある。また、ダイナミック
スライスでは、誤った値に実際に影響を与えた文の集合
を限定することができる。しかし、文(8)のように、
ある分岐文の分岐結果の誤りのために、ある変数(ここ
では、変数s)に値が設定されず、それが原因で、デー
タエラーを引き起こしているような場合には、その分岐
文、および、その分岐文が依存している文の集合が、ま
るごと、検証対象となる実行系列から漏れてしまうとい
う問題点がある。
As described above, in the static slice,
If a data error occurs, you can limit the set of statements that can affect the incorrect value of that variable. However, since the program is statically analyzed, there is a problem that a statement that is not related to an error and is not executed, such as the statement (9), is also extracted. Also, with dynamic slices, it is possible to limit the set of sentences that actually affected the wrong value. However, like sentence (8),
When the value of a variable (here, variable s) is not set due to an error in the branching result of a branching statement, which causes a data error, the branching statement, and However, there is a problem that the whole set of statements on which the branch statement depends leaks from the execution sequence to be verified.

【0013】[0013]

【発明が解決しようとする課題】解決しようとする問題
点は、従来の技術では、エラーに関係しない文を抽出し
てしまうか、分岐文の分岐結果で設定される変数の漏れ
に起因するデータエラーを発生させる文の集合の抽出が
漏れてしまうかのいずれかの不具合が発生する可能性が
あり、デバッグ作業を、効率良く、かつ、高信頼に行な
うことができない点である。本発明の目的は、これら従
来技術の課題を解決し、エラーに関係しない文の抽出に
よるデバッグ作業者の負荷を軽減し、かつ、エラーに関
係する文の抽出漏れによるデバッグ作業の失敗を回避
し、デバッグ作業の高効率化と信頼性の向上を可能とす
るクリティカルスライス・プログラムデバッグシステム
を提供することである。
The problem to be solved by the present invention is that, in the conventional technology, data that is not related to an error is extracted or data that is set in the branch result of a branch statement is leaked. One of the problems may occur that the extraction of a set of statements that cause an error may be omitted, and debugging work cannot be performed efficiently and with high reliability. An object of the present invention is to solve these problems of the prior art, reduce the load on a debugging worker by extracting a sentence not related to an error, and avoid failure of the debugging work due to omission of extraction of a sentence related to an error. It is to provide a critical slice program debug system that enables highly efficient debugging and improved reliability.

【0014】[0014]

【課題を解決するための手段】上記目的を達成するた
め、本発明のクリティカルスライス・プログラムデバッ
グシステムは、(1)実行されたプログラムに予め埋め
込まれていた、このプログラムの文の間のデータ依存関
係を記録するデータ依存関係記録部と、プログラムの文
の間の制御依存関係を記録する制御依存関係記録部とを
具備し、プログラムの実行で発見された、変数に誤った
値が設定された変数値エラーを基に、データ依存関係と
制御依存関係を解析して、この変数値エラーに実際に影
響を与えた文を、ダイナミックスライス情報として抽出
し、バグの存在する文を限定するプログラムデバッグシ
ステムにおいて、データ依存関係と制御依存関係と共
に、プログラムの文と、この文の変数に設定される値に
影響を与える条件文との間の変数値依存関係を記録する
ためのコードを、プログラムに埋め込むインストルメン
ト部と、実行されたプログラムに埋め込まれていたこの
プログラムの文の間の変数値依存関係を記録する変数値
依存関係記録部と、データ依存関係と制御依存関係に基
づき抽出する文と共に、この変数値依存関係記録部で記
録した変数値依存関係を解析して、変数値エラーとして
発見された変数の値の設定に影響する条件文をクリティ
カルスライス情報として抽出するクリティカルスライス
獲得部とを具備し、このクリティカルスライス獲得部で
抽出した条件文を含み、バグの存在する文の限定を行な
うことを特徴とする。
In order to achieve the above object, the critical slice program debugging system of the present invention comprises (1) data dependence between statements of a program which is embedded in the executed program in advance. Equipped with a data dependency recording unit that records a relationship and a control dependency recording unit that records a control dependency between program statements, an incorrect value was set for a variable found during program execution. Program debug to analyze the data dependency and control dependency based on the variable value error, extract the statement that actually affected the variable value error as dynamic slice information, and limit the statement with the bug In the system, together with the data dependency and control dependency, the statement of the program and the conditional statement that affects the value set in the variable of this statement A variable value dependency record that records the variable value dependency between the instrument part that is embedded in the program and the statement of this program that is embedded in the executed program Section and the statement to extract based on the data dependency and control dependency, analyze the variable value dependency recorded in this variable value dependency recording section and affect the setting of the value of the variable found as a variable value error. And a critical slice acquisition unit that extracts a conditional statement as critical slice information, the conditional statement extracted by the critical slice acquisition unit is included, and a sentence having a bug is limited.

【0015】[0015]

【作用】本発明においては、記述誤りバグがあるとデー
タエラーを引き起こす可能性のある文を含む最小の集合
であるクリティカルスライス(Critical Sl
ice)を獲得することにより、記述誤りバグの存在す
る箇所を限定する。すなわち、ダイナミックスライスと
して、誤った値に実際に影響を与えた文の抽出だけでは
なく、「分岐文Aの分岐パスが変わると、文Bで使用し
ている変数の値に影響を与える」というような、誤った
値に実際に影響を与える可能性のある文も抽出する。こ
のことにより、記述誤りバグがあり、制御の流れが変わ
ったとしても、出力する変数の値には影響を与えない
文、すなわち、値は変わらない文の抽出は行なわず、記
述誤りバグがあればデータエラーに影響を与える可能性
がある文のみを抽出することができる。
According to the present invention, a critical slice (Critical Sl) that is a minimum set including a sentence that may cause a data error if there is a description error bug.
By acquiring "ice", the location where the description error bug exists is limited. That is, not only the extraction of the statement that actually affected the incorrect value as the dynamic slice, but also that "if the branch path of the branch statement A changes, the value of the variable used in the statement B is affected". It also extracts sentences that may actually affect the wrong values. As a result, even if there is a description error bug and the flow of control changes, the statement that does not affect the value of the output variable, that is, the statement whose value does not change is not extracted, and the description error bug occurs. For example, it is possible to extract only the sentences that may affect the data error.

【0016】[0016]

【実施例】以下、本発明の実施例を、図面により詳細に
説明する。図1は、本発明のクリティカルスライス・プ
ログラムデバッグシステムの本発明に係わる構成の一実
施例を示すブロック図である。本図において、1は、一
般の手続き言語で記述されたソースプログラム、2は、
本発明に係わり、このソースプログラム1の文の間の依
存関係を記録するためのコードを、このソースプログラ
ム1に埋め込むインストルメント部、3は、このインス
トルメント部2により、コードを埋め込まれたインスト
ルメントソースプログラム、4は、ソースプログラム3
のコンパイルとリンクを行なうコンパイル・リンク部、
5は、コンパイルとリンクがなされた実行可能プログラ
ム、6は、実行可能プログラム5の実行を制御するプロ
グラム実行制御部、6aは、実行された文の間のデータ
依存関係を記録するデータ依存関係記録部、6bは、実
行された文の間の制御依存関係を記録する制御依存関係
記録部、6cは、本発明に係わり、文の変数の値の設定
に影響を与える条件文との間の依存関係を記録する変数
値依存関係記録部、7は、実行された文の間の各依存関
係をまとめたプログラム実行依存関係情報、8は、本発
明に係わり、プログラム実行依存関係情報7のデータ依
存関係と制御依存関係から、変数の値に影響を与えた文
を、また、変数値依存関係から、変数の値に影響を与え
る可能性のある条件文を、それぞれ、抽出して、クリテ
ィカルスライス情報9として出力するクリティカルスラ
イス獲得部である。
Embodiments of the present invention will now be described in detail with reference to the drawings. FIG. 1 is a block diagram showing an embodiment of a configuration relating to the present invention of a critical slice program debug system of the present invention. In this figure, 1 is a source program written in a general procedural language, and 2 is a source program.
According to the present invention, the instrument unit 3 for embedding the code for recording the dependency relation between the statements of the source program 1 in the source program 1 is an instrument unit in which the code is embedded by the instrument unit 2. Ment source program, 4 is source program 3
Compile and link part that compiles and links
5 is an executable program that has been compiled and linked, 6 is a program execution control unit that controls the execution of the executable program 5, and 6a is a data dependency record that records data dependencies between executed statements. Part, 6b is a control dependency relationship recording part for recording control dependency relationships between executed statements, and 6c is related to the present invention, and is a dependency with a conditional statement that influences setting of the value of a variable of the statement. A variable value dependency relationship recording unit that records the relationship, 7 is program execution dependency relationship information that summarizes each dependency relationship between executed statements, and 8 is data dependency of the program execution dependency relationship information 7 according to the present invention. The critical slice information is extracted by extracting the statement that affected the value of the variable from the relationship and control dependency relationship, and the conditional statement that may affect the value of the variable from the variable value dependency relationship. It is a critical slice acquisition unit for outputting as 9.

【0017】このような構成により、本実施例のクリテ
ィカルスライス・プログラムデバッグシステムは、発見
されたデータエラーを元に、それらの文の間の依存関係
を解析し、バグの存在するプログラム内の文を、漏れも
無駄もなく限定し、作業者のバグの究明作業を容易にす
ることができる。すなわち、本クリティカルスライス・
プログラムデバッグシステムでは、従来技術のダイナミ
ックスライスを拡張した新しいタイプのスライスである
クリティカルスライスを獲得することにより、記述誤り
バグの存在する箇所を限定する。このクリティカルスラ
イスは、記述誤りバグがあるとデータエラーを引き起こ
す可能性のある文を含む最小の集合であり、従来のスタ
ティックスライスによる無駄な文の抽出と、ダイナミッ
クスライスによる文の抽出漏れを回避することができ
る。
With such a configuration, the critical slice program debug system of the present embodiment analyzes the dependency relation between these statements based on the found data error, and detects the statement in the program in which the bug exists. Can be limited without omission and waste, and the work of investigating bugs by the worker can be facilitated. That is, this critical slice
In the program debug system, a critical slice, which is a new type of slice that is an extension of the conventional dynamic slice, is acquired to limit the location of the description error bug. This critical slice is a minimum set that includes statements that may cause a data error if there is a description error bug, and avoids unnecessary statement extraction by static slice and statement extraction omission by dynamic slice. be able to.

【0018】以下、本実施例のクリティカルスライス・
プログラムデバッグシステムの本発明に係わる動作を説
明する。デバッグ対象のプログラミング言語としては、
Ada、Pascal、Cなどの一般の手続き型言語を
想定しているが、ここでは、説明を簡単にするため、プ
ログラム内の文は、代入文、分岐文、ループ文、関数呼
出し文、および、入出力文からなるものとする。インス
トルメント部2において、プログラム内の各文の実行時
に、後述の(ロ)に示す「文実行時の処理」に記述した
処理を実行するために必要なコードをソースプログラム
1内に埋め込む。プログラム実行制御部6においては、
以下の情報の記録を行なう。
The critical slice of this embodiment will be described below.
The operation of the program debug system according to the present invention will be described. As a programming language to be debugged,
Although general procedural languages such as Ada, Pascal, and C are assumed, here, in order to simplify the description, the statements in the program are assignment statements, branch statements, loop statements, function call statements, and It shall consist of input / output statements. In the instrument unit 2, when executing each statement in the program, the source program 1 is embedded with the code necessary to execute the processing described in "processing at the time of statement execution" shown in (b) below. In the program execution control unit 6,
Record the following information.

【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年、培風館発行)
などに記載されている。
(B) Information recorded when the program is executed. While executing the executable program 5 to be debugged,
The information to be recorded is shown below. CC: Control flow C (c) at the current execution time point c. That is, a set of branch execution points (execution points of branch statements, loop statements, and function call statements) that determine execution at the current execution point c. This can be obtained by constructing a stack structure whose elements are branch execution points. Then, the operation of pushing down the element c to the stack CC is performed by "pus
hCC (c); ”, and an operation of popping up one element from the stack CC is represented by“ popCC; ”. CDef (x): For each variable x, record the latest execution time point p that defines the variable x. CDefC (x): For each variable x, the control flow C (p) at the latest execution point p in which the variable x is defined. UEXDefV (j): j at each execution time when the branch statement is executed
For, the set of variables that may be defined on the branch path that was not executed. Regarding how to obtain this set, Aiho, Ullman, "Compiler" translated by Doi (1986, published by Baifukan)
Etc.

【0020】(ロ)文実行時の処理。 現在実行しようとしている実行時点をcとする。 (ロ−1)代入文、入力文を実行する場合、 代入文、入力文で定義する変数をwとすると、 CDef(w):=c; CDefC(w):=CC; (ロ−2)分岐文、ループ文、関数呼出し文を実行する
場合、 pushCC(c); スタックCCに実行時点cをプ
ッシュダウンする。 (ロ−3)分岐文、ループ文、関数呼出し文を終了する
場合、 popCC; スタックCCから実行時点を1つポップ
アップする。 但し、ループ文を終了する場合には、そのループ文本体
部の繰返し回数だけ、「popCC;」を実行する。
(B) Processing during statement execution. Let c be the execution point currently being executed. (B-1) When executing the assignment statement and the input statement: If the variable defined in the assignment statement and the input statement is w, CDef (w): = c; CDefC (w): = CC; (b-2) When executing a branch statement, a loop statement, or a function call statement, pushCC (c); The execution time point c is pushed down to the stack CC. (B-3) When ending a branch statement, a loop statement, or a function call statement, popCC; one execution time point is popped up from the stack CC. However, when the loop statement is ended, “popCC;” is executed for the number of times of repetition of the loop statement body.

【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);
(B-4) When the value of the variable w is used at the time of executing the sentence, (b-4-1) data dependency recording section D (c, w): = CDef (w); 4-2) Control dependence recording part i: = CDef (w); C (i): = CDefC (w); C (c): = CC; CSC (C, w): = C (i) -C (C); (b-4-3) Variable value dependency relationship recording part i: = CDef (w) OV: = {j | i <j <c, and 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; 」
In the critical slice acquisition section 8, the program execution dependency information 7 is set as follows.
Based on, obtain a critical slice. For all execution time points c and the variable w used at the execution time point c, the data dependency recording unit D (c,
w), the control dependency CSC (c, w), and the variable value dependency recording unit CSO (c, w).
The critical slice, CS = CS (t, v), relating to the variable v at the execution time point t is obtained by the procedure described below. Here, “get (S)” means that one execution time point last executed is taken out from the set S of execution time points.
A function that returns it, “Use (t)” is a set of variables used in the statement executed at the execution time point t. Also, {} represents an empty set. “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を獲得する。
That is, first, initialization is performed by "CS: = {};", and then, data dependency D (t, v) and control dependency CSC (t, v) regarding the variable v at the execution time t.
v), variable value dependency CSO (t, v), control flow C
Take the union NCS of (t). If the union NCS is empty, the process ends. If it is not empty, the last executed execution time point i is extracted from the union NCS and recorded. Then, next, a set U of variables used in the statement executed at the last execution time point i
Take the union of each dependency found for se (i). Thereafter, this operation is sequentially repeated to acquire the critical slice 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を獲得する。
Next, the program Pb described in the prior art is used.
The extraction operation of the critical slice regarding the variable s in the output statement (10) in the execution sequence of 1 will be described with reference to FIG. FIG. 2 is an explanatory diagram showing an example of the execution sequence of the program Pb. The execution sequence of the present embodiment is a case where the same inputs as those described in the prior art are given to the program Pb and executed. First, as a statement that affects the variable s of the output statement (10) at the execution time point (10), the statement (5) at the execution time point (5) is changed by the data dependency (D: solid line in the figure). In addition, the statement (4) at the execution time point (4) and the variable value dependency (in the figure, CSC: indicated by a chain line in the figure)
The statement (8) at the execution time point (9) and the statement (4) at the execution time point (7) are extracted as a union NCS by CSO: described by a broken line. Next, the last executed execution time point (9) is extracted from the union NCS, the statement (8) at this execution time point (9) is acquired as a critical slice, and the statement (8) at this execution time point (9) is acquired. The extraction operation of the critical slice for the variable s is performed. Thereafter, this operation is sequentially repeated until the union NCS becomes empty, and the critical slice CS is acquired.

【0025】このようにして、本実施例のクリティカル
スライス・プログラムデバッグシステムでは、従来のダ
イナミックスライスでは漏れていた実行時点(9)の文
(8)も抽出することができる。
In this way, the critical slice program debug system of this embodiment can also extract the statement (8) at the execution time point (9), which was omitted in the conventional dynamic slice.

【0026】図3は、図1におけるクリティカルスライ
ス・プログラムデバッグシステムによるプログラムPb
の出力文における変数sに関するクリティカルスライス
と従来技術によるスタティックスライスおよびダイナミ
ックスライスを示す説明図である。本図に示すように、
文(10)の変数sに影響を与える文として、スタティ
ックスライスでは、プログラムPb内の文(1)〜
(9)が、ダイナミックスライスでは、文(1)〜
(6)が、そして、本発明に係わるクリティカルスライ
スでは、文(1)〜(6)、および、(8)が抽出され
る。
FIG. 3 shows a program Pb by the critical slice program debug system in FIG.
FIG. 7 is an explanatory diagram showing a critical slice related to a variable s in the output sentence of FIG. As shown in this figure,
In the static slice, the statements (1) through (1) in the program Pb affect the variable s of the statement (10).
(9), in dynamic slice, sentences (1)-
(6), and in the critical slice according to the present invention, sentences (1) to (6) and (8) are extracted.

【0027】すなわち、従来技術であるスタティックス
ライスやダイナミックスライスと、本発明で獲得方法を
提供したクリティカルスライスとの間には、ダイナミッ
クスライス ⊆ クリティカルスライス⊆ スタティッ
クスライスという関係がある。ダイナミックスライス
は、最小の集合であるが、誤っている値に影響している
一部の文(8)を見逃してしまう。しかし、クリティカ
ルスライスは、記述誤りバグがあるとデータエラーを引
き起こす可能性のある文を含む最小の集合であり、この
クリティカルスライスを獲得することにより、記述誤り
バグの存在する箇所を限定することができる。このこと
により、デバッグを行なう作業者は、従来技術に比べ
て、バグの究明作業を、より確実に、そして、効率良く
行なうことができる。
That is, there is a relation of dynamic slice⊆critical slice⊆static slice between the static slice or dynamic slice which is a conventional technique and the critical slice provided with the acquisition method of the present invention. The dynamic slice is the smallest set, but misses some sentences (8) affecting the wrong values. However, the critical slice is a minimum set that includes statements that may cause a data error if there is a description error bug, and by acquiring this critical slice, the location where the description error bug exists can be limited. it can. As a result, the operator who debugs can more reliably and efficiently carry out the work of investigating the bug, as compared with the conventional technique.

【0028】このように、クリティカルスライスは、も
し、クリティカルスライス内の文に、記述誤りバグがあ
れば、データエラーに影響を与える可能性があり、ま
た、クリティカルスライス以外の文に、記述誤りバグが
あっても、データエラーに影響を与えないという性質を
持つ。例えば、本図3において、クリティカルスライス
内の文(1)〜(6)、(8)に、記述誤りバグがあれ
ば、データエラーに影響を与える可能性があり、実際、
文記述誤りバグが文(5)に存在する。反対に、クリテ
ィカルスライス以外の文に記述誤りバグがあっても、デ
ータエラーに影響を与えない。実際、文(7)、(9)
に誤りがあり、制御の流れが変わったとしても、出力文
(10)における変数sの値には影響を与えない、すな
わち、値は変わらない。
As described above, in the critical slice, if a statement in the critical slice has a description error bug, it may affect a data error, and a statement other than the critical slice may be described in the description error bug. Even if there is, it has the property of not affecting the data error. For example, in FIG. 3, if there is a description error bug in the statements (1) to (6) and (8) in the critical slice, it may affect the data error.
A sentence description error bug exists in sentence (5). On the contrary, even if there is a description error bug in the statement other than the critical slice, it does not affect the data error. In fact, sentences (7), (9)
Even if there is an error in the value and the control flow changes, the value of the variable s in the output sentence (10) is not affected, that is, the value does not change.

【0029】以上、図1〜図3を用いて説明したよう
に、本実施例のクリティカルスライス・プログラムデバ
ッグシステムでは、記述誤りバグがあるとデータエラー
を引き起こす可能性のある文を含む最小の集合であるク
リティカルスライスを獲得することにより、記述誤りバ
グの存在するプログラム内の文を限定することができ、
バグの究明作業を容易にすることができる。尚、本発明
は、図1〜図3を用いて説明した実施例に限定されるも
のではない。例えば、本実施例では、結果的には、ダイ
ナミックスライスの方が、効率良く、データエラーに影
響を与えた文字記述誤りバグを有する文(5)を絞りだ
すものとなっているが、より大規模なプログラムに適用
することにより、従来のスタティックスライスによる無
駄な文の抽出と、ダイナミックスライスによる対象文の
抽出漏れに対する優位性が得られる。
As described above with reference to FIGS. 1 to 3, in the critical slice program debugging system of the present embodiment, the minimum set including statements that may cause a data error if there is a description error bug. By acquiring the critical slice that is, it is possible to limit the statement in the program where the description error bug exists,
This makes it easier to find bugs. The present invention is not limited to the embodiment described with reference to FIGS. For example, in the present embodiment, as a result, the dynamic slice is more efficient in narrowing down the sentence (5) having the character description error bug that has affected the data error. By applying it to a large-scale program, it is possible to obtain advantages over conventional wasteful sentence extraction by static slice and omission of target sentence extraction by dynamic slice.

【0030】[0030]

【発明の効果】本発明によれば、スタティックスライス
のように、エラーに関係していない、実行されなかった
文の抽出を回避でき、また、ダイナミックスライスのよ
うに、ある分岐文の分岐結果の誤りのためにある変数に
値が設定されず、それが原因で、データエラーを引き起
こしているような場合に発生する文の実行系列からの漏
れてを回避でき、デバッグ作業者の負荷を軽減して、デ
バッグ作業の高効率化と信頼性の向上が可能となる。
As described above, according to the present invention, it is possible to avoid extraction of unexecuted statements that are not related to an error, such as static slices. Also, like dynamic slices, branching results of a branching statement of a branch statement can be avoided. It is possible to avoid leaking from the execution sequence of statements that occurs when a value is not set for a variable due to an error, which causes a data error, and reduce the load on the debug worker. Therefore, it is possible to improve the efficiency and reliability of the debugging work.

【0031】[0031]

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明のクリティカルスライス・プログラムデ
バッグシステムの本発明に係わる構成の一実施例を示す
ブロック図である。
FIG. 1 is a block diagram showing an embodiment of a configuration according to the present invention of a critical slice program debug system of the present invention.

【図2】プログラムPbの実行系列の一実施例を示す説
明図である。
FIG. 2 is an explanatory diagram showing an example of an execution sequence of a program Pb.

【図3】図1におけるクリティカルスライス・プログラ
ムデバッグシステムによるプログラムPbの出力文にお
ける変数sに関するクリティカルスライスと従来技術に
よるスタティックスライスおよびダイナミックスライス
を示す説明図である。
3 is an explanatory diagram showing a critical slice related to a variable s in an output statement of a program Pb by the critical slice program debug system in FIG. 1 and a static slice and a dynamic slice according to a conventional technique.

【図4】従来のダイナミックスライス技術を利用したプ
ログラムデバッグシステムの構成を示すブロック図であ
る。
FIG. 4 is a block diagram showing a configuration of a program debug system using a conventional dynamic slice technique.

【図5】従来技術によるプログラムPbの出力文におけ
る変数sに関するスタティックスライスとダイナミック
スライスを示す説明図である。
FIG. 5 is an explanatory diagram showing static slices and dynamic slices regarding a variable s in an output statement of a program Pb according to a conventional technique.

【符号の説明】[Explanation of symbols]

1 ソースプログラム 2 インストルメント部 3 インストルメントソースプログラム 4 コンパイル・リンク部 5 実効可能プログラム 6 プログラム実行制御部 6a データ依存関係記録部 6b 制御依存関係記録部 6c 変数値依存関係記録部 7 プログラム実行依存関係情報 8 クリティカルスライス獲得部 9 クリティカルスライス情報 41 ソースプログラム 42 インストルメント部 43 インストルメントソースプログラム 44 コンパイル・リンク部 45 実行可能プログラム 46 プログラム実行制御部 46a データ依存関係記録部 46b 制御依存関係記録部 47 プログラム実行依存関係情報 48 ダイナミックスライス獲得部 49 ダイナミックスライス情報 1 Source Program 2 Instrument Part 3 Instrument Source Program 4 Compile and Link Part 5 Executable Program 6 Program Execution Control Part 6a Data Dependency Record Part 6b Control Dependency Record Part 6c Variable Value Dependency Record Part 7 Program Execution Dependency Part Information 8 Critical slice acquisition section 9 Critical slice information 41 Source program 42 Instrument section 43 Instrument source program 44 Compile link section 45 Executable program 46 Program execution control section 46a Data dependency recording section 46b Control dependency recording section 47 Program Execution dependency information 48 Dynamic slice acquisition unit 49 Dynamic slice information

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】 実行されたプログラムに予め埋め込まれ
ていた該プログラムの文の間のデータ依存関係を記録す
るデータ依存関係記録手段と、上記プログラムの文の間
の制御依存関係を記録する制御依存関係記録手段とを具
備し、上記プログラムの実行で発見された、変数に誤っ
た値が設定された変数値エラーを基に、上記データ依存
関係と制御依存関係を解析して、該変数値エラーに実際
に影響を与えた文を、ダイナミックスライス情報として
抽出し、バグの存在する文を限定するプログラムデバッ
グシステムにおいて、上記データ依存関係と制御依存関
係と共に、上記プログラムの文と、該文の変数に設定さ
れる値に影響を与える条件文との間の変数値依存関係を
記録するためのコードを、上記プログラムに埋め込むイ
ンストルメント手段と、実行された上記プログラムに予
め埋め込まれていた該プログラムの文の間の変数値依存
関係を記録する変数値依存関係記録手段と、上記データ
依存関係と制御依存関係に基づき抽出する文と共に、該
変数値依存関係記録手段で記録した変数値依存関係を解
析して、上記変数値エラーとして発見された変数の値の
設定に影響する条件文をクリティカルスライス情報とし
て抽出するクリティカルスライス獲得手段とを具備し、
該クリティカルスライス獲得手段で抽出した条件文を含
み、上記バグの存在する文の限定を行なうことを特徴と
するクリティカルスライス・プログラムデバッグシステ
ム。
1. A data dependency relationship recording means for recording data dependency relationships between statements of the program, which is embedded in an executed program in advance, and a control dependency for recording control dependency relationships between statements of the program. A relationship recording means, and based on a variable value error in which an incorrect value is set in a variable, which is found by executing the program, analyzes the data dependency and the control dependency, and outputs the variable value error. In a program debug system that extracts the statement that actually affected the statement as dynamic slice information and limits the statement in which a bug exists, the statement of the program and the variable of the statement together with the data dependency and the control dependency Instrument means for embedding a code for recording a variable value dependency between a conditional statement that affects the value set in A variable value dependency relationship recording means for recording variable value dependency relationships between statements of the program that are embedded in the executed program in advance, and a statement to be extracted based on the data dependency relationship and the control dependency relationship, A critical slice acquisition means for analyzing the variable value dependency recorded by the variable value dependency recording means and extracting, as critical slice information, a conditional statement affecting setting of the value of the variable found as the variable value error. Be equipped with
A critical slice program debug system including a conditional statement extracted by the critical slice acquisition means and limiting the statement in which the bug exists.
JP4157823A 1992-06-17 1992-06-17 Critical slice program debug system Pending JPH06202905A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4157823A JPH06202905A (en) 1992-06-17 1992-06-17 Critical slice program debug system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4157823A JPH06202905A (en) 1992-06-17 1992-06-17 Critical slice program debug system

Publications (1)

Publication Number Publication Date
JPH06202905A true JPH06202905A (en) 1994-07-22

Family

ID=15658095

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4157823A Pending JPH06202905A (en) 1992-06-17 1992-06-17 Critical slice program debug system

Country Status (1)

Country Link
JP (1) JPH06202905A (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1195996A (en) * 1997-09-24 1999-04-09 Nippon Steel Corp Redundant code inspection device
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 (en) * 2009-10-05 2013-02-28 インターナショナル・ビジネス・マシーンズ・コーポレーション Automatic modification of applications based on runtime behavior
US9280406B2 (en) 2009-10-05 2016-03-08 International Business Machines Corporation Automatic correction of application based on runtime behavior
WO2017168560A1 (en) * 2016-03-29 2017-10-05 三菱電機株式会社 Development support device and development support method

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1195996A (en) * 1997-09-24 1999-04-09 Nippon Steel Corp Redundant code inspection device
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 (en) * 2009-10-05 2013-02-28 インターナショナル・ビジネス・マシーンズ・コーポレーション Automatic modification of applications based on runtime behavior
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 (en) * 2016-03-29 2017-10-05 三菱電機株式会社 Development support device and development support method
JP6289783B1 (en) * 2016-03-29 2018-03-07 三菱電機株式会社 Development support apparatus and development support method

Similar Documents

Publication Publication Date Title
Cifuentes et al. Intraprocedural static slicing of binary executables
CN101739339B (en) Program dynamic dependency relation-based software fault positioning method
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
JPH05257709A (en) Parallelism discriminating method and parallelism supporting method using the same
Barbar et al. Object versioning for flow-sensitive pointer analysis
JPH0748182B2 (en) Program error detection method
US9454347B2 (en) Analyzing incomplete software
Wu et al. Techniques of maintaining evolving component-based software
JPH06202905A (en) Critical slice program debug system
GB2539961A (en) Code hotspot encapsulation
US20080127118A1 (en) Method and system for dynamic patching of software
Vipindeep et al. Efficient static analysis with path pruning using coverage data
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 (en) Program bug latent area extraction device
Huang et al. Robustifying Debug Information Updates in LLVM via Control-Flow Conformance Analysis
Obster et al. A live static code analysis architecture for PLC software
JPH07134664A (en) Program bug latent area extraction method
Brunner et al. Bug path reduction strategies for symbolic execution
Sakurai et al. The omission finder for debugging what-should-have-happened bugs in object-oriented programs
Abadi et al. Improving slice accuracy by compression of data and control flow paths