(57)【要約】【課題】従来のデバッグ方法ではプログラムが異常終了した場合、原因の特定を行なう為に、異常終了時データを使用しての調査や、プログラムの実行時に出力していた実行履歴情報での調査を行っていた。しかし、これらの情報はそれぞれ独立しており、関連付けて調査する為の方法が存在していなかった。【解決手段】実行履歴情報を取得するのと同時に、デバッグ情報も取得し、２つの情報を関連付けてデバッガにて解析し、実行履歴情報による処理の流れや、各実行履歴情報出力時の情報の表示、任意の実行履歴情報取得時点からのプログラムの再実行と言った機能をサポートしたデバッグシステムを構成する事によって、異常終了原因の特定を容易にする。【選択図】  図１
2004252684.tif 000002
【特許請求の範囲】
【請求項１】
プログラム実行時に実行履歴情報を出力する機能と、後からプログラムの実行を行なう為に必要とするデバッグ情報を取得する機能と、実行履歴情報とデバッグ情報を関連付ける為の情報を出力する機能を有する情報取得機能を有し、この情報取得機能で取得した情報を使用して、任意の実行履歴情報出力時データの表示を行なう機能と、任意の実行履歴情報出力時の状態を再現し、プログラムを再実行する機能を有するデバッグ方法。
【請求項２】
プログラム実行時に実行履歴情報を出力する手段と、後からプログラムの実行を行なう為に必要とするデバッグ情報を取得する手段と、実行履歴情報とデバッグ情報を関連付ける為の情報を出力する機能を有する情報取得手段と、前記情報取得手段で取得した情報を使用して任意の実行履歴情報出力時データの表示を行なう手段と、任意の実行履歴情報出力時の状態を再現してプログラムを再実行する手段とを備えたことを特徴とするデバッグシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータシステムにおいてプログラム実行を行っている際に発生した異常終了原因の特定を行なう事を目的としたデバッグ技術に関する。
【０００２】
【従来の技術】
プログラムが異常終了した場合、異常終了時におけるデータを使用し、デバッガを使用して異常終了時におけるレジスタの内容・メモリの内容・関数遷移等の情報を用いて原因の調査を行っていた。このような技術は特開平５−２４１８８８号に開示されている。また、プログラム実行時に実行履歴情報を取得しておき、異常終了後に参照・解析を行なう事によって、そのプログラムの実行状況と言った情報を把握していた。このような技術は、ロギングツールとして存在しているものがあることが知られている。
【０００３】
【特許文献１】
特開平５−２４１８８８号
【０００４】
【発明が解決しようとする課題】
従来の異常終了時点のデータを使用しての調査では、異常終了した時点でのデータは解るものの、そこに行き付くまでの情報については解析を行なう者が考察しなければならなかった。また、実行履歴情報を使用した調査では、処理遷移はある程度特定できるものの、メモリの内容と言った情報が取得できない為、異常な遷移になった場合、原因の特定を行なう事は難しかった。またこれら二つの情報を結びつける為の手段は存在しておらず、有効な調査を行なう事は難しかった。
【０００５】
【課題を解決するための手段】
実行履歴情報を取得するのと同時にその時点におけるプログラムのデバッグ情報を取得し、２つの情報を関連付けて解析し、実行履歴情報による処理の流れや、各実行履歴情報出力時における情報の表示、任意の実行履歴情報取得時点からのプログラムの再実行と言った機能を有したデバッグシステムを構成する事によって、異常終了原因の特定を容易にする。
【０００６】
【発明の実施の形態】
図１は本発明の概念図を表すものである。
プログラム１０１を動作させることによって、そのプログラム実行中に埋め込まれた実行履歴情報出力関数によって、実行履歴情報及びデバッグ情報１０２を出力する。プログラムが異常終了した場合、出力される異常終了時情報１０３と実行履歴情報及びデバッグ情報１０２をデバッガ１０４にて解析し、各実行履歴情報時点での情報の表示を行なう機能１０５と、同様に情報を解析し、過去状態の再現表示、再実行を行なう機能１０６を有する。
【０００７】
図２は本発明の構成図である。
プログラム２０１で実行履歴情報を出力しようとすると、情報取得部２０２が呼び出され、その中のトレースデータ取得部２０３で実行履歴情報２０５が、デバッグ情報取得部２０４でデバッグ情報２０６が出力される。
【０００８】
また、異常終了時には異常終了時情報２０７が出力される。
デバッガ部２０８ではこれらの情報を入力として、情報解析部２０９で情報の解析・編集を行い、情報表示部２１０を介して出力を行なう。
【０００９】
図３は図２における情報取得部の処理手順である。
最初に実行履歴情報を出力する（３０１）。
次にデバッグ情報を出力する（３０２）。
その後、デバッグ情報の出力が初めてかどうかの判定を行なう（３０３）。
【００１０】
その結果、出力がはじめてでない場合、以下の処理を行なう。
・一つ前のデバッグ情報と、現状のデバッグ情報の差分情報を作成する（３０４）。
・一つ前のデバッグ情報を削除する（３０５）。
デバッグ情報の出力が初めての場合や、初めてでない場合でも上記処理が終了した場合、実行履歴情報をデバッグ情報の関連付け情報を出力（３０６）し、処理を終了する。
【００１１】
なお、デバッグ情報取得時に、前回とのデバッグ情報との差分データを取得して、前回のデバッグデータを削除するのは、データの保存領域を少なく抑える為で有る。データの保存領域に付いて気にしなくても良い場合は、全てデバッグ情報のまま保存しておく方法も考えられる。
【００１２】
図４は実行履歴情報、デバッグ情報の関連図である。
実行履歴情報ファイル（４０１）内の各トレースに与えられた通し番号（４０２）と各トレース出力時に出力されたデバッグ情報（４０３）または、差分情報（４０４）のファイル名を関連付け情報ファイル（４０５）で対応付けて管理する。
なお、ここで示した方法は関連付けを行なう為の一例で有り、情報と情報の関連付けを行なう事が可能であれば、本発明はその方法に依存しない。
また、デバッグ情報やトレース情報についても同様であり、これらの情報の形式に本発明は依存しない。
【００１３】
図５は図２における情報解析部の機能の内、特定実行履歴情報出力時の状態の再現手順である。
まず、情報解析部では、再現しようとしている状態が異常終了時の状態かどうか判定する（５０１）。
判定結果が真の場合、異常終了時情報を使用して状態の再現を行なう（５０２）。この場合、状態の再現が終了した時点で、本処理は終了する。
【００１４】
判定結果が偽だった場合、異常終了一つ前の状態データを使用して状態の再現を行なう（５０３）。
その後、現状再現されているデータで状態の再現を終了して良いか判定する（５０４）。
【００１５】
判定結果が真だった場合、本処理は終了する。
判定結果が偽だった場合、更に一つ前の状態との差分データを現状の状態に反映（５０５）し、以下５０４の判定を繰り返す。
【００１６】
図６は図２における情報解析部の機能の内、トレース内の指定されたレジスタの内容一覧を取得する手順。
まず、異常終了時情報から指定されたレジスタの情報を取得し、データ保存領域（一覧データ）の先頭に保存する（６０１）。
次に、異常終了一つ前の状態データから、指定されたレジスタの情報を取得し、一覧データの２番目に保存する。また、現状データ領域にも保存する（６０２）。
現状要素数（ｎ）に２を代入する（６０３）。
現在、操作を行っているデータが最初に取得されたデータか判定する（６０４）。
判定結果が真ならば、処理を終了する。
判定結果が偽ならば、一つ前の差分データ内に指定されたレジス一つ前の差分データ内に指定されたレジスタの情報が存在しているか判定する（６０５）。
判定結果が真ならば、差分データから指定されたレジスタの情報を取得し、一覧データのｎ番目に保存する。また同時に現状データにも同じ内容を保存する（６０６）。
判定結果が偽ならば、現状データを一覧データのｎ番目に保存する（６０７）。
どちらの場合でも、現状要素数を更新（６０８）し、終了判定処理に戻り、処理を繰り返す。
【００１７】
図７は図２における情報解析部の機能の内、指定されたレジスタの内容が異常終了時の内容に変わった時点を検索する手順。
まず、異常終了時情報から指定されたレジスタの情報を取得し、被比較データとする（７０１）。
異常終了一つ前の状態データからし呈されたレジスタの情報を取得し、比較データとする（７０２）。
被比較データと比較データが同じ値か判定する（７０３）。
判定結果が真であれば、そこで処理は終了。
判定結果が偽であれば、一つ前の差分データ内に、指定されたレジスタの情報が存在するか判定する（７０４）。
判定結果が真であれば、差分データから指定されたレジスタの情報を取得し、比較データに保存（７０５）し、被比較データと比較データの比較（７０３）に戻り処理を繰り返す。
判定結果が偽であれば、一つ前の差分データ内に指定されたレジスタの情報が有るかの判定（７０４）に戻り、処理を繰り返す。
【００１８】
図８は各実行履歴情報における指定レジスタの一覧表示機能のイメージ図であり、図９は指定されたレジスタの内容が異常終了時の内容に変わった時点を検索する機能のイメージ図である。また  図１０は特定実行履歴情報を指定して、その時点での情報を表示させる機能のイメージ図である。
【００１９】
【発明の効果】
本発明によって、実行履歴情報から大まかな処理の遷移状況が確認でき、デバッグ情報から実行履歴情報取得時点でのレジスタ等の情報が確認出来る。また、実行履歴情報出力時点での状態を再現し、そこから再実行を行なわせる事によって、より詳細なデータを取得することが出来る。また、「どこまで遡るのか？」と言う指定に実行履歴情報の出力タイミングを使用する事により、指定の簡易化を計ることが出来る。これらの事によって、不良調査にかかる時間の短縮が図れると考える。
【図面の簡単な説明】
【図１】本発明の概念図を表すものである。
【図２】本発明の構成図である。
【図３】情報の取得手順。
【図４】データ関連図
【図５】特定実行履歴情報出力時の状態の再現手順。
【図６】トレース内の指定されたレジスタの内容一覧を取得手順。
【図７】異常終了時の内容に変わった時点を検索する手順。
【図８】特定レジスタ一覧表示機能イメージ図。
【図９】異常終了時内容検索機能イメージ図
【図１０】特定実行履歴情報時データ表示機能イメージ図
【符号の説明】
１０１    プログラム
１０２    デバッグ情報
１０３    異常終了時情報
１０４    デバッガ
【図１】
2004252684.tif 000003
【図２】
2004252684.tif 000004
【図３】
2004252684.tif 000005
【図４】
2004252684.tif 000006
【図５】
2004252684.tif 000007
【図６】
2004252684.tif 000008
【図７】
2004252684.tif 000009
【図８】
2004252684.tif 000010
【図９】
2004252684.tif 000011
【図１０】
2004252684.tif 000012