JP2003108404A - デバッグ装置、デバッグ方法およびデバッグプログラム - Google Patents
デバッグ装置、デバッグ方法およびデバッグプログラムInfo
- Publication number
- JP2003108404A JP2003108404A JP2001298519A JP2001298519A JP2003108404A JP 2003108404 A JP2003108404 A JP 2003108404A JP 2001298519 A JP2001298519 A JP 2001298519A JP 2001298519 A JP2001298519 A JP 2001298519A JP 2003108404 A JP2003108404 A JP 2003108404A
- Authority
- JP
- Japan
- Prior art keywords
- dependency
- variable
- address
- instruction
- variables
- 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
によって、デバッグ効率を高める。 【解決手段】 (イ)ソフトウェア101を読み込み、
実行トレース103を出力するソフトウェア実行装置1
02と、(ロ)実行トレース103を読み込み、変数間
の依存関係を解析して、依存関係情報104を出力する
依存関係解析装置105と、(ハ)ソフトウェア101
または実行トレース103のいずれか一方および依存関
係情報105を読み込み、依存関係情報105中に存在
するアドレスとそのアドレスに対応する命令、ターゲッ
トおよびオペランドをハイライト表示し、一方、依存関
係情報105中に存在しないアドレスとそのアドレスに
対応する命令、ターゲットおよびオペランドをハイライ
ト表示しないソースコード表示装置107とを備える。
Description
イクロコントローラなどのシステム上で稼動するソフト
ウェアの不具合の修正を支援するデバッグ装置、デバッ
グ方法およびデバッグプログラムに関する。
グラマがバグを発見する個所と、そのバグの原因となる
個所は同じであるとは限らない。このため、プログラマ
は、バグを発見すると、デバッガやプリント文などによ
ってバグを発見した付近における変数の値を調べておか
しな値を見つけ出し、そこからさかのぼって、その変数
の値を算出する命令を調べていく。
さかのぼるにつれてバグに影響する変数の数は増加する
ため、全ての変数を調べることが困難になっていく。こ
のため、関係の有りそうな変数を場当たり的に調べると
いったデバッグになる場合が往々にして見うけられる。
決するためになされたものであり、その第1の特徴は、
(イ)ソフトウェアを読み込み、実行トレースを出力す
るソフトウェア実行装置と、(ロ)前記実行トレースを
読み込み、変数間の依存関係を解析して、依存関係情報
を出力する依存関係解析装置と、(ハ)前記ソフトウェ
アまたは前記実行トレースのいずれか一方および前記依
存関係情報を読み込み、前記依存関係情報中に存在する
アドレスとそのアドレスに対応する命令、ターゲットお
よびオペランドの一部または全部をハイライト表示し、
一方、前記依存関係情報中に存在しないアドレスとその
アドレスに対応する命令、ターゲットおよびオペランド
の一部または全部をハイライト表示しないソースコード
表示装置とを備えることにある。
トウェアを読み込み、実行トレースを出力するソフトウ
ェア実行装置と、(ロ)前記実行トレースを読み込み、
変数間の依存関係を解析して、依存関係情報を出力する
依存関係解析装置と、(ハ)前記依存関係情報を読み込
み、前記変数間の依存関係をグラフィカルに表示する依
存関係表示装置とを備えることにある。
の実施の形態を説明する。図1は、本発明の実施の形態
に係るデバッグ装置の全体構成を示す。図1に示すよう
に、本発明の実施の形態に係るデバッグ装置は、ソフト
ウェア実行装置102と、依存関係解析装置104と、
依存関係表示装置106と、ソースコード表示装置10
7とから構成される。
ェア101を実行して、その実行順の命令情報である実
行トレース103を生成する。ここで、実行トレースと
は、ソースコードを実行順に並べたコード列をいう。つ
まり、条件分岐命令または無条件ジャンプ命令等によっ
て飛ばされたソースコードは、除かれる。
103から変数の依存関係を解析して依存関係情報10
5を生成する。ここで、変数r3を算出するために、変
数r1およびr2が使用されている場合などに、変数r
3と変数r1およびr2との間に依存関係が存在すると
いう。つまり、add,sub,mult,divなど
の算術演算命令、and,or,sll(shift
left logical),srl(shift r
ight logical)などの論理演算命令におい
て、変数r1およびr2がオペランド、変数r3がター
ゲットという関係にある場合である。例えば、add
r3, r1, r2(r3=r1+r2という関係が
成立)のような演算命令について、r3はr1とr2に
依存しているという。また、算術演算命令、論理演算命
令に限らず、lw(load word),sw(st
ore word)などのデータ転送命令においても依
存関係は存在する。例えば、lw r3, 0(r1
9)のようなロード命令については、r3は0(r1
9)に依存しているという。
105に基づいて依存関係をグラフィカルに表示する。
グラフィカルに表示するとは、変数間の依存関係が一目
見れば理解できるように表示することを意味する。例え
ば、変数r3が変数r1とr2に依存する場合、木構造
と呼ばれるグラフ形式のように親ノードとして変数r3
を、子ノードとして変数r1とr2を表示する。
ェア101または実行トレース103のソースコードを
表示する。その表示の際、ソフトウェア101または実
行トレース103中のソースコードの内で、所定の変数
をターゲットとする命令コードおよびその変数と依存関
係を有する変数をターゲットとする命令コードをハイラ
イト表示する。
のソースコードの一例を示す。図2に示すように、ソフ
トウェア101を実行すると、0x800202ec番
地の命令および0x800202f0番地の命令から成
る命令列201が実行され、0x800202f0番地
で分岐が生じる。そして、矢印202が示すように、0
x8002030c番地から始まる命令列203が実行
される。さらに、0x80020320番地で分岐が生
じ、矢印204が示すように0x80020340番地
から始まる命令列205が実行される。
置102内における処理の流れの一例を示すフローチャ
ートである。図3に示すように、ソフトウェア実行装置
102は、ソフトウェア101の命令を1つフェッチし
(ステップS301)、フェッチした命令をデコードし
(ステップS302)、デコードした命令を実行し(ス
テップS303)、メモリにアクセスし(ステップS3
04)、レジスタにアクセスし(ステップS305)、
トレース情報を出力し(ステップS305)、フェッチ
等した命令が最後の命令かを判断し(ステップS30
7)、最後の命令でないならステップS301に戻って
新たな命令をフェッチし、最後の命令であるなら処理を
終了する。ここで「トレース情報を出力する」とは、実
行した命令のアドレス、ターゲット、ターゲット値、オ
ペランドの一部または全部を出力することを言う。
例を示す。図4に示す命令列401、402および40
3は、図2に示した命令列201、203および205
にそれぞれ対応する。
04に実行トレース103が入力されてから、依存関係
情報105が出力されるまでの処理の流れを示すフロー
チャートである。
ェアのバグを発見し、バグが発見された命令と変数を指
定する(ステップS501)。
令を実行トレース103から取りだし、指定された変数
と依存関係がある変数を取得する。ここで取得される変
数は、次に依存関係をみつけるべき変数としてリストに
登録される(ステップS502)。
の一つ前の命令を、実行トレース103から取得する
(ステップS503)。
のターゲット変数を取得し、この変数がリストに登録さ
れている変数に含まれるかどうかを調べる。変数がリス
トに含まれる場合、依存関係があることになる(ステッ
プS504)、依存関係がなければステップS503へ
戻る。依存関係があればステップS505へ進み、リス
トに登録されている変数をリストから取り除く(ステッ
プS505)。
から、ステップS505においてリストから取り除かれ
た変数までの段数(探索段数)が予め指定されている深
さ(指定深さ)より小さいかを調べる(ステップ50
6)。かかる探索段数が指定深さ以上である場合はステ
ップS508へ進む。指定深さより小さい場合はステッ
プS507へ進む。ここで「指定深さ」は、例えばステ
ップS501とステップS502との間などでデバッグ
装置の使用者(プログラマ)が入力する。
において依存関係ありと判断された変数を取得し、この
変数をリストに登録する。ステップS506において探
索段数が指定深さに達していると判断された場合は、ス
テップS507の処理を飛ばす。
調べ(ステップS508)、残っていればステップS5
03に戻り、残っていなければ処理を終了する。以上
で、依存関係解析のための一連の処理が終了する。
るデータ依存関係を示す。図6は、矢印601が指し示
す0x800202ec番地の変数r14と、矢印60
2が指し示す0x8002031c番地の変数r15
と、矢印603が指し示す0x80020348番地の
変数r16との間に依存関係が存在することを示す。図
6を用いて、図5に示した依存関係解析手順を具体的に
説明する。
に、「図6の実行トレースに示す0x8002034c
番地の分岐命令は、分岐しないのが正しい動作である
が、r16の値が0であったために分岐してしまった」
というバグがあると仮定する。この場合、デバッグ装置
の使用者は、矢印603が指し示す0x8002034
8番地のターゲット変数r16と、命令「mul」につ
いて依存関係を解析するように指定する(図5のステッ
プS501)。
もつ変数r15およびr14が取得され、変数r15と
r14がリストに登録される(ステップS502)。図
7に、変数r14、r15およびr16の依存関係を図
示する。
の命令、すなわち0x80020344番地の命令を取
得する(ステップS503)。
r27は、ステップS502でリストに登録された変数
r14またはr15のいずれとも異なるので、依存関係
がないと判断され(ステップS504)、ステップS5
03に戻る。
前の0x80020340番地の命令の変数r27を取
得する(ステップS503)。しかし、0x80020
340番地の命令の変数r27も、リストに登録されて
いる変数r14またはr15と異なるので、依存関係が
ないと判断され(ステップS504)、ステップS50
3に戻るという処理が繰り返される。
r15, r12, r13」は、変数r15を算出
する命令であり、これはリストに登録されている変数な
ので依存関係があると判断され(ステップS504)、
ステップS505に進む。
取り除く(ステップS505)。ここでは、指定段数
(調べる深さ)が10段であるとする。現在の探索段数
はまだ1段目なので、現在の探索段数はまだ指定段数内
であると判断し(ステップS506)、ステップS50
7に進む。
ランドである変数r12、r13がリストに登録される
(ステップS507)。図8に、この段階で判明してい
る依存関係を図示する。図8は、変数r15が変数r1
2とr13に依存していることを示す。
に登録されているので、登録済み変数が残っていると判
断し(ステップS508)、ステップS503に戻る。
ら0x800202f0番地までは依存関係なしと判断
され、0x800202ec番地の命令の変数r14が
リストに登録された変数に該当するので(ステップS5
04)、変数r14がリストから取り除かれる(ステッ
プS505)。探索段数は2であるから、指定段数10
の範囲内であると判断され(ステップS506)、オペ
ランドである変数r10およびr11がリストに登録さ
れる(ステップS507)。
およびr13がリストに登録されているので、登録済み
変数が残っていると判断し(ステップS508)、ステ
ップS503に戻る。図9に、この段階で判明している
依存関係を示す。図9は、変数r16は変数r14およ
びr15に依存し、変数r14は変数r10およびr1
1に依存し、変数r15は変数r12およびr13に依
存していることを示している。このようにして、各変数
について依存関係をもつ変数を順次探して行くと、最終
的には各変数が数値に依存するようになる。
て行った結果、すべての変数が数値に依存するようにな
った状態を示す。図10に示すよう状態になった時点で
は、登録済み変数は残っていないため、ステップS50
8はNOへ分岐し、依存関係の解析を終了する。
す。図11は、(イ)0x80020348番地の変数
r16の値は0であり、変数r16は0x800202
ec番地の変数r14と0x8002031c番地の変
数r15に依存すること、(ロ)0x800202ec
番地の変数r14の値は0であり、変数r14は変数r
10とr11に依存すること、(ハ)0x800203
1c番地の変数r15の値は10であり、変数r15は
変数r12とr13に依存することを示す。
106が図11で示す依存関係情報をもとに行う依存関
係表示処理の流れを示すフローチャートである。図12
に示すように、依存関係表示装置106では、まず頂点
のデータを現在のデータとする(ステップS120
1)。ここで「頂点」とは、依存関係を表示する際に開
始端となる点を意味する。「現在のデータ」とは現在着
目しているデータを意味する。
テップS1202)。さらに現在のデータに未表示の子
データがあるかを調べる(ステップS1203)。
る場合は、未表示の子データを現在のデータとして(ス
テップS1204)、ステップS1202へ戻る。現在
のデータに未表示の子データが存在しない場合は、親デ
ータが存在するかを調べる(ステップS1205)。
する。親データが存在する場合は、親データを現在デー
タとして(ステップS1206)、ステップS1203
へ戻る。
表示処理の流れを具体的に説明する。まず、頂点データ
である変数r16を現在データとする(ステップS12
01)。そして、現在データである変数r16を画面に
表示する(ステップS1202)。この段階ではまだ変
数r14およびr15は表示されていない。つまり、現
在データである変数r16には未表示の子データとして
変数r14およびr15が存在する(ステップS120
3)。未表示の子データの一つ変数r14を現在データ
とし(ステップS1204)、現在データとなった変数
r14を画面に表示する(ステップS1202)。
4には未表示の子データとして変数r10およびr11
が存在するので(ステップS1203)、未表示の子デ
ータの一つ変数r10を現在データとし(ステップS1
204)、現在データとなった変数r10を画面に表示
する(ステップS1202)。
子データが存在しないので(ステップS1203)、親
データの有無を調べる(ステップS1205)。現在デ
ータである変数r10には親データとして変数r14が
存在するので、変数r14を現在データとする(ステッ
プS1206)。再び現在データとなった変数r14に
はこの時点で未表示の子データとして変数r11が存在
するので、YESへ分岐する(ステップS1203)。
変数r11を現在データとし(ステップS1204)、
現在データである変数r11を画面に表示する(ステッ
プS1202)。
子データが存在しないので、NOへ分岐する(ステップ
S1203)。変数r11には親データとして変数r1
4が存在するので、YESへ分岐する(ステップS12
05)。親データである変数r14を現在データとする
(ステップS1206)。現在データとなった変数r1
4の子データである変数r10およびr11は既に表示
されている。つまり、現在データである変数r14には
この時点で未表示の子データが存在しないので、NOへ
分岐する(ステップS1203)。現在データである変
数r14には親データが存在するので、YESへ分岐す
る(ステップS1205)。変数r14の親データであ
る変数r16を現在データとする(ステップS120
6)。現在データである変数r16には未表示の子デー
タとして変数r15が存在するので、YESへ分岐する
(ステップS1203)。未表示の子データである変数
r15を現在データとし(ステップS1204)、現在
データである変数r15を画面に表示する(ステップS
1202)。
子データである変数r12およびr13が存在するの
で、YESへ分岐する(ステップS1203)。子デー
タである変数r12を現在データとし(ステップS12
04)、現在データである変数r12を画面に表示する
(ステップS1202)。
子データが存在しないので、NOへ分岐する(ステップ
S1203)。現在データである変数r12には親デー
タである変数r15が存在するので、YESへ分岐する
(ステップS1205)。親データである変数r15を
現在データとする(ステップS1206)。現在データ
である変数r15には未表示の子データとして変数r1
3が存在するので、YESへ分岐する(ステップS12
03)。子データである変数r13を現在データとし
(ステップS1204)、現在データである変数r13
を画面に表示する(ステップS1202)。このように
して変数r16からr10が表示される。
子データが存在しないので、NOへ分岐する(ステップ
S1203)。現在データである変数r13には親デー
タとして変数r15が存在するので、YESへ分岐する
(ステップS1205)。親データである変数r15を
現在データとする(ステップS1206)。現在データ
である変数r15には未表示の子データが存在しないの
で、NOへ分岐する(ステップS1203)。現在デー
タである変数r15には親データとして変数r16が存
在するので、YESへ分岐する(ステップS120
5)。親データである変数r16を現在データとする
(ステップS1206)。現在データである変数r16
には未表示の子データが存在しないので、NOへ分岐す
る(ステップS1203)。そして、現在データである
変数r16には親データが存在しないので、NOへ分岐
する(ステップS1204)。このようにして依存関係
表示のための一連の処理を終了する。
装置107におけるソースコード表示処理の流れを示す
フローチャートである。図13に示すように、ソースコ
ード表示装置107では、まず図11に示した依存関係
情報からアドレスを1つ取得する(ステップS130
1)。次に、図2に示したソフトウェアのソースコード
または図4もしくは図6に示した実行トレースからコー
ドを1行取得する(ステップS1302)。
スと、ソフトウェアのソースコードまたは実行トレース
から取得したアドレスが一致するかを調べる(ステップ
S1303)。2つのアドレスが一致しない場合は、画
面にコードを通常表示する(ステップS1304)。こ
こで「通常表示」とは、デフォルト設定のフォント、色
彩などで表示することを意味する。
をハイライト表示し(ステップS1305)、依存関係
情報から新たなアドレスを1つ取得する(ステップS1
306)。依存関係情報中に新たなアドレス、つまりソ
ースコード表示装置が取得していないアドレスが存在す
るかを調べる(ステップS1307)。新たなアドレス
が存在しなければ、ステップS1307はYESへ分岐
して処理を終了する。新たなアドレスが存在すれば、ス
テップS1307はNOへ分岐してステップS1302
へ戻る。
びソースコード表示画面1402の一例を示す。依存関
係表示画面部分1401は、図9に基づいて既に説明し
た一連の依存関係表示処理によって生成される。ソース
コード表示画面部分1402がどのようにして生成され
るかを、図2、図11、図13および図14を用いて説
明する。
x80020348番地を取得する(ステップS130
1)。次に、図2に示したソフトウェアのソースコード
から0x8002034c番地およびそのコードを取得
する(ステップS1302)。2つのアドレスは一致し
ないので、NOへ分岐する(ステップS1303)。0
x8002034c番地のコードを通常表示し(ステッ
プS1304)、ソースコードから0x8002034
8番地およびそのコードを取得する(ステップS130
2)。依存関係情報から取得した0x80020348
番地とソフトウェアのソースコードから取得した0x8
0020348番地とが一致するので、YESへ分岐す
る(ステップS1303)。図14に示すように、0x
80020348番地のコードをハイライト表示する
(ステップS1305)。
x8002031c番地を取得する(ステップS130
6)。依存関係情報から新たに取得するアドレスが存在
したので、NOへ分岐する(ステップS1307)。図
2に示したソフトウェアのソースコードから0x800
20344番地およびそのコードを取得する(ステップ
S1302)。依存関係情報から取得した0x8002
031c番地とソフトウェアのソースコードから取得し
た0x80020344番地とは一致しないので、NO
へ分岐する(ステップS1303)。図14に示すよう
に、0x80020344番地のコードを通常表示する
(ステップS1304)。
スコードから0x80020340番地およびそのコー
ドを取得する(ステップS1302)。依存関係情報か
ら取得した0x8002031c番地とソフトウェアの
ソースコードから取得した0x80020340番地と
は一致しないので、NOへ分岐する(ステップS130
3)。図14に示すように、0x80020340番地
のコードを通常表示する(ステップS1304)。
から順次取得される0x8002033c番地、0x8
0020338番地、0x80020334番地、0x
80020330番地、0x8002032c番地、0
x80020328番地、0x80020324番地、
0x80020320番地はいずれも、図11に示した
依存関係情報から取得された0x8002031c番地
と一致しない。よって、0x8002033c番地、0
x80020338番地、0x80020334番地、
0x80020330番地、0x8002032c番
地、0x80020328番地、0x80020324
番地、0x80020320番地はいずれも図14に示
すように通常表示される。
スコードから0x8002031c番地およびそのコー
ドが取得されると(ステップS1302)、図11に示
した依存関係情報から既に取得されている0x8002
031c番地と一致するので、YESへ分岐する(ステ
ップS1303)。図14に示すように、0x8002
031c番地のコードがハイライト表示される(ステッ
プS1305)。
情報から取得されたアドレスと一致するアドレスのみが
ハイライト表示されたソースコード表示画面1402が
生成される。
依存関係を有する変数をグラフィカル表示することがで
き、またかかる変数を算出等するソースコードのみをハ
イライト表示することができるので、バグ原因の特定が
容易になる。
に、ソースコードの代わりに、実行トレースを表示する
場合について説明する。図15は、依存関係表示画面1
501および実行トレース表示画面1502の一例を示
す。図13に示したソースコード表示のフローチャート
のステップS1302において、図2に示したソフトウ
ェアのソースコードからではなく、図4に示した実行ト
レースからコードを1行ずつ取得することによって、依
存関係を有するアドレスのみをハイライト表示させた画
面1502を生成することができる。
が飛んでしまい、コードの追跡が面倒である。これに対
し、実行トレースは実行順に命令が並んでいるため、命
令コードを下から順にたどれば良いので、バグの追跡が
さらに容易となる。
する変数の一部を非表示とする場合について説明する。
依存関係を有する変数の全てではなく、依存関係を有す
る変数の一部だけを非表示にしたいとデバッグ実施者が
希望する場合には、特定の変数のみを表示し得ることが
好ましい。
非表示とする処理の流れを示すフローチャートである。
存関係表示画面1701、および非表示とされた変数を
算出する命令が存在するアドレスが非ハイライト表示と
されたソースコード表示画面1702の一例を示す。画
面1701は、依存関係を有する全ての変数が表示され
ている画面1401から、デバッグ実施者が「選択した
変数」および「選択された変数と依存関係を有する変
数」を非表示とした依存関係表示画面である。また、画
面1702は、依存関係を有する全てのソースコードが
ハイライト表示されている画面1402から、デバッグ
実施者が「選択した変数と依存関係を有する変数を算出
する命令」が存在するアドレスを非表示としたソースコ
ード表示画面である。
およびソースコードの一部を非表示とする処理について
説明する。
面1401に表示されている変数r15をマウス等のポ
インティングデバイスを用いてクリックすることによっ
て、変数r15を非表示とすることを選択したものとす
る。
クリックされたデータである変数r15を現在のデータ
とし(ステップS1601)、現在のデータである変数
r15を画面から非表示とする(ステップS160
2)。
の子データとして変数r12とr13が存在するので、
ステップS1603はYESへ分岐する。表示中の子デ
ータである変数r12を現在のデータとし(ステップS
1604)、現在のデータである変数r12を画面から
非表示とする(ステップS1602)。
の子データがないので、ステップS1603はNOへ分
岐する。現在のデータである変数r12は、ステップS
1601でクリックされたデータである変数r15では
ないので、ステップS1605はNOへ分岐する。現在
のデータ:変数r12の親データ:変数r15を現在の
データとする(ステップS1606)。現在のデータ:
変数r15には、表示中の子データ:変数r13がある
ので、ステップS1603はYESへ分岐する。子デー
タ:変数r13を現在のデータとする(ステップS16
04)。現在のデータ:変数r13を画面から非表示と
する(ステップS1602)。
データはないので、ステップS1603はNOへ分岐す
る。現在のデータ:変数r13はクリックされたデー
タ:変数r15ではないので、ステップS1605はN
Oへ分岐する。現在のデータ:変数r13の親データ:
変数r15を現在のデータとする(ステップS160
6)。現在のデータ:変数r15には表示中の子データ
はないので、ステップS1603はNOへ分岐する。現
在のデータ:変数r15はクリックされたデータ:変数
r15であるので、ステップS1605はYESへ分岐
し、依存関係非表示処理は終了する。このようにして画
面1401の変数r15,r12およびr13が非表示
となり、画面1701となる。同様にして、画面140
2の0x8002031c番地が非ハイライト表示とな
り、画面1702となる。
び「その変数と依存関係を有する変数」を非表示とする
ことができ、その結果、「バグ原因と推測される一連の
変数」のみを表示させることが可能、つまりバグ箇所の
絞り込みが可能となるので、バグ原因の特定がさらに容
易となる。
面に表示する変数を所定段数に限定する場合について説
明する。依存関係表示画面に表示される変数が多すぎる
場合、依存関係表示画面に表示する変数を、依存関係表
示開始点から所定段数内の変数に限定することが好まし
い。
数の変数および代入値が表示され、かつソースコード表
示画面1802に多くのソースコードがハイライト表示
された画面例を示す。
01の一部(点線で囲った四角1811)が表示され、
かつソースコード表示画面1802の一部(四角181
1内の変数に対応するソースコード)がハイライト表示
された画面例である。図19の画面1811は指定段数
を「5」とした例であり、また画面1811に表示され
た変数に対応するソースコードのみがハイライト表示さ
れた例が画面1902である。
指定段数が多すぎると、図18に示すように多数の変数
および代入値が依存関係表示画面1801に表示され、
デバッグ実施者が見にくいと感じる場合がある。そのよ
うな場合は、指定段数(探索段数)を指定する値を減少
させて、画面に表示される変数の数を少なくし、各変数
の表示サイズを拡大することによって、依存関係が見や
すくなり、デバッグがより容易になる。
調べたがバグ原因を特定できなかった場合には、画面1
811内に表示された変数を開始点(起点)としてそこ
からさらに指定段数分だけ変数を表示可能とすることが
好ましい。
01の一部(点線で囲った四角1812)が表示され、
かつソースコード表示画面1802の一部(四角181
2内の変数に対応するソースコード)がハイライト表示
された画面例である。
1およびこれに対応する命令を指定すると、点1911
が依存関係表示開始点となり、かかる開始点から数えて
指定段数目までを表示することが可能となる。図20の
画面1812は、図19の点1911を開始点とし、か
かる開始点から「5」段目までを表示した例であり、ま
た図20の画面2001は画面1812に表示された変
数に対応するソースコードのみがハイライト表示された
例である。
にバグ原因が存在しないと判断した場合、さらに画面1
812を表示させることによって、依存関係が複雑な場
合であっても表示させる変数の数およびこれに対応して
ハイライト表示させるソースコードの数を、デバッグ実
施者が適当と判断する値に区切って、順次表示させるこ
とが可能となり、デバッグがさらに容易になる。
た変数と、その変数に対して依存関係を有する変数との
相互関係を表示する画面、または(2)ユーザが指定し
た変数と、その変数に対して依存関係を有する変数に対
応するソースコードまたは実行トレースをハイライト表
示する画面を得ることができる。これにより、バグ発生
原因などを効率よく発見することが可能となる。
構成を示す図である。
ドの一例を示す図である。
おける処理の流れの一例を示すフローチャートである。
す図である。
レース103が入力されてから、依存関係情報105が
出力されるまでの処理の流れを示すフローチャートであ
る。
関係を示す図である。
す図である。
す図である。
す図である。
果、すべての変数が数値に依存するようになった状態を
示す図である。
る依存関係表示処理の流れを示すフローチャートであ
る。
おけるソースコード表示処理の流れを示すフローチャー
トである。
面の一例を示す図である。
面の一例を示す図である。
処理の流れを示すフローチャートである。
面、および非表示とされた変数を算出する命令が存在す
るアドレスが非ハイライト表示とされたソースコード表
示画面の一例を示す図である。
が表示され、かつソースコード表示画面に多くのソース
コードがハイライト表示された例を示す図である。
(点線で囲った四角1811)が表示され、かつソース
コード表示画面1802の一部(四角1811内の変数
に対応するソースコード)がハイライト表示された例を
示す図である。
(点線で囲った四角1812)が表示され、かつソース
コード表示画面1802の一部(四角1812内の変数
に対応するソースコード)がハイライト表示された画面
例である。
Claims (9)
- 【請求項1】 ソフトウェアを読み込み、実行トレース
を出力するソフトウェア実行装置と、 前記実行トレースを読み込み、変数間の依存関係を解析
して、依存関係情報を出力する依存関係解析装置と、 前記ソフトウェアまたは前記実行トレースのいずれか一
方および前記依存関係情報を読み込み、前記依存関係情
報中に存在するアドレスとそのアドレスに対応する命
令、ターゲットおよびオペランドをハイライト表示し、
一方、前記依存関係情報中に存在しないアドレスとその
アドレスに対応する命令、ターゲットおよびオペランド
をハイライト表示しないソースコード表示装置とを備え
ることを特徴とするデバッグ装置。 - 【請求項2】 ソフトウェアを読み込み、実行トレース
を出力するソフトウェア実行装置と、 前記実行トレースを読み込み、変数間の依存関係を解析
して、依存関係情報を出力する依存関係解析装置と、 前記依存関係情報を読み込み、前記変数間の依存関係を
グラフィカルに表示する依存関係表示装置とを備えるこ
とを特徴とするデバッグ装置。 - 【請求項3】 ソフトウェアを読み込み、実行トレース
を出力するソフトウェア実行ステップと、 前記実行トレースを読み込み、変数間の依存関係を解析
して、依存関係情報を出力する依存関係解析ステップ
と、 前記ソフトウェアまたは前記実行トレースのいずれか一
方および前記依存関係情報を読み込み、前記依存関係情
報中に存在するアドレスとそのアドレスに対応する命
令、ターゲットおよびオペランドの一部または全部をハ
イライト表示し、一方、前記依存関係情報中に存在しな
いアドレスとそのアドレスに対応する命令、ターゲット
およびオペランドの一部または全部をハイライト表示し
ないソースコード表示ステップとを含むことを特徴とす
るデバッグ方法。 - 【請求項4】 ソフトウェアを読み込み、実行トレース
を出力するソフトウェア実行ステップと、 前記実行トレースを読み込み、変数間の依存関係を解析
して、依存関係情報を出力する依存関係解析ステップ
と、 前記依存関係情報を読み込み、前記変数間の依存関係を
グラフィカルに表示する依存関係表示ステップとを含む
ことを特徴とするデバッグ方法。 - 【請求項5】 前記ソフトウェア実行ステップは、命令
を1つフェッチし、デコードし、実行するステップと、 前記実行された命令に対応するアドレス、ターゲット、
ターゲット値、オペランドのうちの少なくとも一つを出
力するステップとを含む、請求項3または4記載のデバ
ッグ方法。 - 【請求項6】 前記依存関係解析ステップは、少なくと
も1つの命令を指定し、前記指定された命令の変数をリ
ストに登録するステップと、 前記指定された命令の1行前の命令を取得し、前記取得
命令の変数が前記リスト登録済み変数と依存関係にある
かを判断するステップと、 前記リスト登録済み変数を前記リストから取り除くステ
ップと、 前記取得命令の変数を前記リストに登録するステップと
を含む、請求項3乃至5記載のデバッグ方法。 - 【請求項7】 さらに、前記指定された命令から前記取
得命令までの段数を所定段数と比較し、その比較結果に
基づいて前記取得命令を前記リストに登録すべきか否か
を判断するステップを含む、請求項6記載のデバッグ方
法。 - 【請求項8】 コンピュータに、ソフトウェアを読み込
み、実行トレースを出力するソフトウェア実行ステップ
と、 前記実行トレースを読み込み、変数間の依存関係を解析
して、依存関係情報を出力する依存関係解析ステップ
と、 前記ソフトウェアまたは前記実行トレースのいずれか一
方および前記依存関係情報を読み込み、前記依存関係情
報中に存在するアドレスとそのアドレスに対応する命
令、ターゲットおよびオペランドの一部または全部をハ
イライト表示し、一方、前記依存関係情報中に存在しな
いアドレスとそのアドレスに対応する命令、ターゲット
およびオペランドの一部または全部をハイライト表示し
ないソースコード表示ステップとを実行させるためのデ
バッグ用プログラム。 - 【請求項9】 コンピュータに、ソフトウェアを読み込
み、実行トレースを出力するソフトウェア実行ステップ
と、 前記実行トレースを読み込み、変数間の依存関係を解析
して、依存関係情報を出力する依存関係解析ステップ
と、 前記依存関係情報を読み込み、前記変数間の依存関係を
グラフィカルに表示する依存関係表示ステップとを実行
させるためのデバッグ用プログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2001298519A JP2003108404A (ja) | 2001-09-27 | 2001-09-27 | デバッグ装置、デバッグ方法およびデバッグプログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2001298519A JP2003108404A (ja) | 2001-09-27 | 2001-09-27 | デバッグ装置、デバッグ方法およびデバッグプログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2003108404A true JP2003108404A (ja) | 2003-04-11 |
Family
ID=19119411
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2001298519A Pending JP2003108404A (ja) | 2001-09-27 | 2001-09-27 | デバッグ装置、デバッグ方法およびデバッグプログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2003108404A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006323480A (ja) * | 2005-05-17 | 2006-11-30 | Mitsubishi Electric Corp | 解析支援装置 |
| WO2013031010A1 (ja) * | 2011-09-01 | 2013-03-07 | 株式会社日立製作所 | デバッグ支援方法、計算機及びデバッグ支援プログラム |
| JPWO2014141352A1 (ja) * | 2013-03-11 | 2017-02-16 | 株式会社日立製作所 | システム制御装置 |
| WO2017168560A1 (ja) * | 2016-03-29 | 2017-10-05 | 三菱電機株式会社 | 開発支援装置及び開発支援方法 |
| WO2025186989A1 (ja) * | 2024-03-07 | 2025-09-12 | 日本電気株式会社 | プログラム、処理装置、及び方法 |
-
2001
- 2001-09-27 JP JP2001298519A patent/JP2003108404A/ja active Pending
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006323480A (ja) * | 2005-05-17 | 2006-11-30 | Mitsubishi Electric Corp | 解析支援装置 |
| WO2013031010A1 (ja) * | 2011-09-01 | 2013-03-07 | 株式会社日立製作所 | デバッグ支援方法、計算機及びデバッグ支援プログラム |
| JPWO2014141352A1 (ja) * | 2013-03-11 | 2017-02-16 | 株式会社日立製作所 | システム制御装置 |
| WO2017168560A1 (ja) * | 2016-03-29 | 2017-10-05 | 三菱電機株式会社 | 開発支援装置及び開発支援方法 |
| JP6289783B1 (ja) * | 2016-03-29 | 2018-03-07 | 三菱電機株式会社 | 開発支援装置及び開発支援方法 |
| WO2025186989A1 (ja) * | 2024-03-07 | 2025-09-12 | 日本電気株式会社 | プログラム、処理装置、及び方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7266809B2 (en) | Software debugger and software development support system for microcomputer operable to execute conditional execution instruction | |
| US8006229B2 (en) | Program maintenance support device and program for the same | |
| US9047399B2 (en) | Generating visualization from running executable code | |
| US9619211B2 (en) | Code suggestion in a software development tool | |
| US9977658B2 (en) | Code validation using content assist | |
| US7028291B2 (en) | Debugging method and debugging device | |
| US8739134B2 (en) | Valgrind suppressions file editor | |
| US7178135B2 (en) | Scope-based breakpoint selection and operation | |
| US20190369849A1 (en) | Visualizing Execution History With Shader Debuggers | |
| US20210049091A1 (en) | Software visualization apparatus, software visualization method, and computer readable medium | |
| US8701086B2 (en) | Simplifying analysis of software code used in software systems | |
| KR101767481B1 (ko) | 프로그램 분석 장치 및 프로그램 분석 제공 방법 | |
| CN111460235A (zh) | 图谱数据的处理方法、装置、设备及存储介质 | |
| CN110737573B (zh) | 用户界面ui自动化测试的方法和装置 | |
| JP2003085001A (ja) | ソース・コード・デバッガ、デバッグ方法及びデバッグプログラム | |
| JPH05158672A (ja) | メニューによるプログラム起動選択方式 | |
| US20040030963A1 (en) | Method and apparatus for debugging computer program | |
| JP2798015B2 (ja) | プログラムエラー解析支援システム | |
| JP7848937B2 (ja) | 処理フロー可視化装置、処理フロー可視化方法、および処理フロー可視化プログラム | |
| JP3011115B2 (ja) | デバッグシステム | |
| US7155709B2 (en) | Displaying user readable information during linking | |
| JP2000122895A (ja) | スタックサイズ解析方法及びスタックサイズ解析装置 | |
| JP2001067234A (ja) | コンパイラとプロセッサ | |
| JP3139393B2 (ja) | デバッグ装置 | |
| US20090228858A1 (en) | Circuit-designing support system, method of displaying in circuit- designing support system, and computer-readable recording medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050314 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080226 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080425 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081104 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090310 |