(57)【要約】【課題】  デバッグにかかる時間を短縮しつつ、プログラムの不具合箇所を早期に検出するデバッガ装置を提供する。【解決手段】  デバッグ対象のプログラムに含まれる分岐命令の前にブレークポイントを自動的に挿入する自動ブレークポイント設定部（４１）と、前記ブレークポイントからの分岐経路に、ユーザ設定ブレークポイントが存在するか否かを確認するブレークポイント判定部（３９）とを具備するデバッガ装置を構成する。そのデバッガ装置において、前記自動ブレークポイント設定部（４１）は、前記プログラムに含まれる命令が現在実行されている位置を命令実行位置とし、前記命令実行位置からのプログラム実行経路に含まれる前記分岐命令に前記ブレークポイントを自動的に挿入する。【選択図】        図２
2007080118.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ対象のプログラムに含まれる分岐命令の前にブレークポイントを自動的に挿入する自動ブレークポイント設定部と、
前記ブレークポイントからの分岐経路に、ユーザ設定ブレークポイントが存在するか否かを確認するブレークポイント判定部と
を具備する
デバッガ装置。
【請求項２】
請求項１に記載のデバッガ装置において、
前記自動ブレークポイント設定部は、
前記プログラムに含まれる命令が現在実行されている位置を命令実行位置とし、前記命令実行位置からのプログラム実行経路に含まれる前記分岐命令に前記ブレークポイントを自動的に挿入する
デバッガ装置。
【請求項３】
請求項２に記載のデバッガ装置において、さらに、
前記プログラムのソースコードに含まれる分岐文の位置を示す分岐情報を保持する分岐情報保持部を具備し、
前記自動ブレークポイント設定部は、
前記分岐情報に基づいて前記分岐命令の位置を抽出する
デバッガ装置。
【請求項４】
請求項３に記載のデバッガ装置において、
前記ブレークポイント判定部は、
前記命令実行位置が前記ブレークポイントに一致するかどうかを判定し、
前記命令実行位置が前記ブレークポイントに一致するときに、前記ブレークポイントからの前記分岐経路に、前記ユーザ設定ブレークポイントが存在するか否かを検索し、前記ユーザ設定ブレークポイントが存在する前記分岐経路に対応する処理範囲が実行されるかどうかを確認する
デバッガ装置。
【請求項５】
請求項４に記載のデバッガ装置において、
前記ブレークポイント判定部は、
前記ユーザ設定ブレークポイントが存在する前記分岐経路に対応する処理範囲が実行されないと判断したときに、警告情報を生成する
デバッガ装置。
【請求項６】
請求項５に記載のデバッガ装置において、さらに、
前記ソースコードが表示画面に表示されるときの表示色を管理するソース色変更部を具備し、
前記ブレークポイント判定部は、
前記命令実行位置から前記ブレークポイントまでの処理範囲を示す走行ルート情報を生成し、
前記ソース色変更部は、前記走行ルート情報に対応するソースコードを表示色変更対象コードとして特定し、前記表示色変更対象コードを前記ソースコードの表示色と異なる色で表示させるデバッガ装置。
【請求項７】
請求項６に記載のデバッガ装置において、
前記ソース色変更部は、
前記表示色変更対象コードに含まれる真条件の範囲を第１範囲とし、
前記表示色変更対象コードに含まれる偽条件の範囲を第２範囲とし、
前記第１範囲と前記第２範囲とを異なる表示色で表示させる
デバッガ装置。
【請求項８】
請求項７に記載のデバッガ装置において、
前記ソース色変更部は、
前記命令実行位置が、前記分岐命令の位置と一致するときに前記走行ルート情報に対応するソースコードを表示色変更対象コードとして特定し、前記表示色変更対象コードを前記ソースコードの表示色と異なる色で表示させる
デバッガ装置。
【請求項９】
請求項８に記載のデバッガ装置において、
前記分岐命令は、複数の異なる条件文を含み、
前記自動ブレークポイント設定部は、
前記複数の異なる条件文から選択される少なくとも一つの条件文を特定したときに、前記選択された条件文の位置への前記ブレークポイントの挿入を保留する
デバッガ装置。
【請求項１０】
請求９に記載のデバッガ装置において、
前記自動ブレークポイント設定部は、
ブレークポイント解除命令と、ブレークポイント解除命令に対応して供給されるブレークポイント解除情報とを受け取り、ブレークポイント解除情報は、前記ブレークポイントの挿入を禁止する前記ソースコードの範囲を有し、
前記自動ブレークポイント設定部は、
前記ブレークポイント解除命令に応答して、設定された前記ブレークポイントを解除する
デバッガ装置。
【請求項１１】
請求項１０に記載のデバッガ装置において、
前記ブレークポイント判定部は、
前記プログラムがブレークする毎に、前記プログラムが実行された範囲に含まれる前記命令実行位置に基づいて実行履歴情報を生成し、
前記ソース色変更部は、
実行履歴情報に対応する前記ソースコードを、前記表示色変更対象コードと異なる表示色で表示させる
デバッガ装置。
【請求項１２】
請求項１１に記載のデバッガ装置において、
前記分岐情報は、前記ソースコードの行番号、前記分岐命令の種類、前記真条件の飛び先、前記偽条件の飛び先およびどの条件文の処理の中に入っているのかを示す情報とで構成される
デバッガ装置。
【請求項１３】
請求項１から１２の何れか一項に記載のデバッガ装置において、
前記命令実行位置は、前記プログラムに含まれる命令の位置を示すプログラムカウンタ値に基づいて決定される
デバッガ装置。
【請求項１４】
請求項１から１３の何れか一項に記載のデバッガ装置において、
前記分岐命令が、ｉｆ文、ｓｗｉｔｃｈ文、ｃａｌｌ分の少なくとも一つである
デバッガ装置。
【請求項１５】
（ａ）デバッグ対象のプログラムに含まれる分岐命令の前にブレークポイントを自動的に挿入するステップと、
（ｂ）前記ブレークポイントからの分岐経路に、ユーザ設定ブレークポイントが存在するか否かを確認するステップを具備する
デバッグ方法。
【請求項１６】
請求項１５に記載のデバッグ方法において、
前記（ａ）ステップは、
前記プログラムに含まれる命令が現在実行されている位置を命令実行位置とし、前記命令実行位置からのプログラム実行経路に含まれる前記分岐命令に前記ブレークポイントを自動的に挿入するステップを含む
デバッグ方法。
【請求項１７】
請求項１６に記載のデバッグ方法において、さらに、
（ｃ）前記プログラムのソースコードに含まれる分岐文の位置を示す分岐情報を読み出すステップ
を具備し、
前記（ａ）ステップは、
前記分岐情報に基づいて前記分岐命令の位置を抽出するステップを含む
デバッグ方法。
【請求項１８】
請求項１７に記載のデバッグ方法において、
前記（ｂ）ステップは、
前記命令実行位置が前記ブレークポイントに一致するかどうかを判定するステップと、
前記命令実行位置が前記ブレークポイントに一致するときに、前記ブレークポイントからの前記分岐経路に、前記ユーザ設定ブレークポイントが存在するか否かを検索し、前記ユーザ設定ブレークポイントが存在する前記分岐経路に対応する処理範囲が実行されるかどうかを確認するするステップを含む
デバッグ方法。
【請求項１９】
請求項１８に記載のデバッグ方法において、さらに、
（ｄ）前記ユーザ設定ブレークポイントが存在する前記分岐経路に対応する処理範囲が実行されないと判断したときに、警告情報を生成するステップ
を具備する
デバッグ方法。
【請求項２０】
請求項１９に記載のデバッグ方法において、さらに、
（ｅ）前記ソースコードが表示画面に表示されるときの表示色を管理するステップ
を具備し、
前記（ｃ）ステップは、
前記命令実行位置から前記ブレークポイントまでの処理範囲を示す走行ルート情報を生成するステップを含み、
前記（ｅ）ステップは、
前記走行ルート情報に対応するソースコードを表示色変更対象コードとして特定し、前記表示色変更対象コードを前記ソースコードの表示色と異なる色で表示させるステップ
を含む
デバッグ方法。
【請求項２１】
請求項２０に記載のデバッグ方法において、
前記（ｅ）ステップは、
前記表示色変更対象コードに含まれる真条件の範囲を第１範囲とするステップと、
前記表示色変更対象コードに含まれる偽条件の範囲を第２範囲とするステップと、
前記第１範囲と前記第２範囲とを異なる表示色で表示させるステップ
を含む
デバッグ方法。
【請求項２２】
請求項２１に記載のデバッグ方法において、
前記（ｅ）ステップは、
前記命令実行位置が、前記分岐命令の位置と一致するときに前記走行ルート情報に対応するソースコードを表示色変更対象コードとして特定し、前記表示色変更対象コードを前記ソースコードの表示色と異なる色で表示させるステップを含む
デバッグ方法。
【請求項２３】
請求項２２に記載のデバッグ方法において、
前記分岐命令は、複数の異なる条件文を含み、
前記（ｂ）ステップは、
前記複数の異なる条件文から選択される少なくとも一つの条件文を特定したときに、前記選択された条件文の位置への前記ブレークポイントの挿入を保留するステップ
を含む
デバッグ方法。
【請求項２４】
請求２３に記載のデバッグ方法において、
前記（ｂ）ステップは、
ブレークポイント解除命令と、ブレークポイント解除命令に対応して供給されるブレークポイント解除情報とを受け取るステップを含み、ここで、ブレークポイント解除情報は、前記ブレークポイントの挿入を禁止する前記ソースコードの範囲を有し、
前記（ａ）ステップは、
前記ブレークポイント解除命令に応答して、設定された前記ブレークポイントを解除するステップを含む
デバッグ方法。
【請求項２５】
請求項２４に記載のデバッグ方法において、
前記（ｂ）ステップは、
前記プログラムがブレークする毎に、前記プログラムが実行された範囲に含まれる前記命令実行位置に基づいて実行履歴情報を生成するステップを含み、
前記（ｅ）ステップは、
実行履歴情報に対応する前記ソースコードを、前記表示色変更対象コードと異なる表示色で表示させるステップを含む
デバッグ方法。
【請求項２６】
請求項２５に記載のデバッグ方法において、
前記分岐情報は、前記ソースコードの行番号、前記分岐命令の種類、前記真条件の飛び先、前記偽条件の飛び先およびどの条件文の処理の中に入っているのかを示す情報とで構成される
デバッグ方法。
【請求項２７】
請求項１５から２６の何れか一項に記載のデバッグ方法において、
前記命令実行位置は、前記プログラムに含まれる命令の位置を示すプログラムカウンタ値に基づいて決定される
デバッグ方法。
【請求項２８】
請求項１５から２７の何れか一項に記載のデバッグ方法において、
前記分岐命令が、ｉｆ文、ｓｗｉｔｃｈ文、ｃａｌｌ分の少なくとも一つである
デバッグ方法。
【請求項２９】
請求項１５から２８に記載のデバッグ方法を
コンピュータにより実行可能な
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッガ装置及びそのデバッガ装置を使用したデバッグ方法に関する。
【背景技術】
【０００２】
人間が作成するプログラムにはどうしても誤りが発生してしまう。そのため、開発者（以下、ユーザと呼ぶ）は、プログラム上の誤りを探し、誤りを発見したときは、そのプログラムを修正する必要がある。一般的に、プログラム上の誤りを探す作業(以下、デバッグと呼ぶ)は、動作確認用ソフトウェアツール（以下、デバッガと呼ぶ）を用いて行なわれる（例えば、特許文献１参照）。
【０００３】
デバッガを用いてプログラムをデバッグする方法には、大きく分けて二つの方法がある。その一つは、ユーザが動作を確認したいところにブレークポイント（プログラムの動作状態を確認するための強制実行停止コード）を設定してからデバッガを動作させる方法である。ユーザは、ブレーク（実行停止）した時点で得られたデータを参照して、正しくプログラムが動作しているかどうかを確認している。この方法でデバッグを行なうためには、ユーザは、プログラム全体の動作を正確に把握してからブレークポイントを設定しなければならない。もしユーザが間違ってブレークポイントを設定してしまった場合には、そのプログラムがブレークせずに最後まで実行されてしまうか、または、そのプログラムが暴走（プログラムの異常動作などによって、コンピュータが制御できない状態に陥ること）してしまう危険性がある。したがって、正しく動作するかどうかが不明なプログラムをデバッグする場合には、ユーザは、予め暴走を防ぐことを考慮に入れてブレークポイントを細かく且つ適正に設定しなければならない。そのため、デバッグにおけるブレークポイントの設定には多くの時間が費やされていた。
【０００４】
もう一つのデバッグ方法は、プログラムを一旦全て実行して、その実行結果をトレース情報として収集し、そのトレース情報によりプログラムの動作を確認する方法である。この方法でデバッグを行なうには、膨大なトレース情報を解析しなければならない。そのため、ブレークポイントの設定時間が短縮できるものの、トレース情報の解析に多くの時間が必要になってしまっていた。
【０００５】
図１は、特許文献１（特開２００２−２７８７９４号公報）に記載のプログラム走行ルート解析装置１０１の構成を示すブロック図である。特許文献１に開示されているプログラム走行ルート解析装置１０１は、試験項目抽出作業において、プログラムの全ての走行ルートを網羅的に抽出することで試験項目抽出漏れを皆無とし、試験品質の向上を目的としている。
【０００６】
図１を参照すると、プログラム走行ルート解析装置１０１は、はじめに走行ルート解析プログラムを起動し、ソースファイル１０２からキーワード(if文、switch文、return等)を抽出して、項目番号を付与している。次に、先のif文、switch文が発見された場合は、その判定部分の条件数を抽出する(条件数抽出部１０１２）。そして、分岐条件の数相当文だけプログラムを実行し、return等の分岐処理終了を示すキーワード、もしくは解析対象となるソースファイル１０２の最終を検出すると、それまでのルート情報を設定し(ルート情報設定部１０１３）、走行ルート表作成部１０１４を介して起動元の解析プログラムに復帰している。特許文献１に記載のプログラム走行ルート解析装置１０１は、このルート情報を記された走行ルート表１０１６を解析することで、試験項目の抽出漏れや不具合箇所の発見を支援している。
【０００７】
【特許文献１】特開２００２−２７８７９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載の技術では、ソースプログラムを解析するために、if文、switch文、return等にブレークポイントを設定して、実行結果のトレース情報を集めている。特許文献１に記載の技術では、トレース情報を解析しないとユーザが確認したいところが実行されたかどうかがわからない。また、ユーザが確認したいところが実行されていたとしても、正しく実行されたかどうかも分からない。さらには、ソースプログラムを修正する度にプログラム走行ルート解析装置１０１を実行し、情報を解析し直さなくてはならないという問題がある。
【０００９】
また、ブレークポイントを使用して、ブレークした時点で得られたデータを参照して正しくプログラムが動作しているかどうかを確認するデバッグ作業では、ユーザが確認したいところを実行するかどうか、早期に判断出来た方が、再実行と情報解析の手間をかけずにデバッグ出来る。そのためには、条件文、多分岐文、call文などにブレークポイントを設定して実行するが、多分岐文の場合には、全ての分岐が予想されるところにブレークポイントを設定しなければならない為、設定には多くの時間を要する。
【００１０】
ブレークポイントの設定時間を短縮する為に、設定する数を少なくすることも可能である。しかしながら、ブレークポイントが設定されていない箇所に不具合があった場合には暴走が起こってしまう可能性がある。暴走が起こってしまった場合、再度、最初からプログラムを実行しなければならないこともあり、デバッグ作業に多大な時間を必要としてしまう。
【００１１】
本発明が解決しようとする課題は、デバッグにかかる時間を短縮しつつ、プログラムの不具合箇所を早期に検出するデバッガ装置を提供することにある。
【課題を解決するための手段】
【００１２】
以下に、［発明を実施するための最良の形態］で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１３】
上記課題を解決するために、デバッグ対象のプログラムに含まれる分岐命令の前にブレークポイントを自動的に挿入する自動ブレークポイント設定部（４１）と、前記ブレークポイントからの分岐経路に、ユーザ設定ブレークポイントが存在するか否かを確認するブレークポイント判定部（３９）とを具備するデバッガ装置を構成する。そのデバッガ装置において、前記自動ブレークポイント設定部（４１）は、前記プログラムに含まれる命令が現在実行されている位置を命令実行位置とし、前記命令実行位置からのプログラム実行経路に含まれる前記分岐命令に前記ブレークポイントを自動的に挿入する。
前記ブレークポイント判定部（３９）は、前記命令実行位置が前記ブレークポイントに一致するかどうかを判定し、前記命令実行位置が前記ブレークポイントに一致するときに、前記ブレークポイントからの前記分岐経路に、前記ユーザ設定ブレークポイントが存在するか否かを検索し、前記ユーザ設定ブレークポイントが存在する前記分岐経路に対応する処理範囲が実行されるかどうかを確認する。
【発明の効果】
【００１４】
本発明によると、デバッグ作業中に、プログラムの実行位置であるＰＣ位置情報と分岐情報を元に、プログラム暴走を抑えるためのブレークポイントを分岐点ごと設定し、ＰＣ位置情報が移動するたびに変更されるので、ユーザがプログラム構造を把握していなくても、プログラムの暴走を抑えることが出来る。
【００１５】
また、ＰＣ位置情報が条件文と重ならなかった場合、分岐情報を元に、ＰＣ位置情報から最も近いブレークポイントまでの範囲のソース部分を第一の色で表示して、視覚的にどこまで条件分岐なしで処理できるのかを容易に判断することが可能になる。
【００１６】
また、ＰＣ位置情報が条件文と重なったとき、その条件パラメータをチェックし、分岐情報を元に、プログラムが走行する真条件と走行しない偽条件の処理の範囲を判断して、真条件の処理ソース部分を第一の色、偽条件の処理ソース部分を第二の色で表示して、視覚的にどのソース部分を実行するのかを容易に判断することが可能になる。
【００１７】
またこのとき、偽条件の処理の範囲内に、ユーザが確認したいポイントがあった場合、プログラムはその箇所を通過しないと判断し、警告メッセージを表示する。この機能により、ユーザはプログラム実行前に判断することが出来る。
【発明を実施するための最良の形態】
【００１８】
以下に、図面を参照して本発明のデバッグシステムの実施形態について説明を行なう。ここで、本発明のデバッグシステムの概要を説明する。本発明のデバッグシステムでは、動作確認対象のソースプログラムに基づいて、条件文、多分岐文、call文などがどの行で記述されているのかを示す分岐情報ファイルを予め作成し、所定の記憶領域に保持しておく。
【００１９】
デバッガは、デバッグ作業中において（リアルタイムで）、その分岐情報ファイルを参照して、現在のプログラム実行位置であるプログラムカウンタ位置を始点とする。デバッガは、その始点から処理の分岐が行われる条件の位置までを検索し、分岐が行なわれる位置にブレークポイントを自動的に設定する。また、このときのプログラムの走行ルートを示す情報（走行ルート情報）を生成しておく。これによって、ブレークポイントの設定もれによるプログラムの暴走を防ぐことが出来る。
【００２０】
また、デバッガは、プログラムカウンタ位置が条件分岐位置と一致したとき、条件式のパラメータをチェックし、上記の動作と同様に、走行ルート情報を生成する。デバッガは、この走行ルート情報で示される処理経路にそってプログラムを実行したときに、ユーザが設定したブレークポイント（ユーザ設定ブレークポイント）に到達するか否かをチェックする。デバッガは、到達しないユーザ設定ブレークポイントを検出した場合には警告を出す。それによって、ユーザは実行結果を解析しなくても、早期にプログラムの不具合箇所を認識することができる。
【００２１】
さらに、デバッガは、現在のプログラムカウンタ位置から、最も近い分岐命令までのソース行に対して、色を変更して表示させる。それよってユーザは、プログラムがどこからどこまで実行されるのかを容易に確認することが出来るようになる。
【００２２】
［第１の実施形態の構成］
以下からは、本発明の具体的な実施形態について説明を行なう。図２は、第１の実施形態のデバッガ３を有するデバッグシステムを概念的に示す概念図である。以下の実施形態において、そのデバッガ３が、インサーキットエミュレータ（登録商標）に例示されるようなデバッガ機能を備えているものとする。なお、これは、本発明のデバッガがインサーキットエミュレータに限定されることを意味するものではない。
【００２３】
図２に示されているように、本実施の形態のデバッグシステムには、動作の確認対象であるソースプログラム２３と、ソースプログラム２３のコンパイルを実行するコンパイラ２４とが備えられている。コンパイラ２４はソースプログラム２３に基づいて、オブジェクトコード２０、デバッグ情報２１および分岐情報２２を生成し、それらはデバッグシステムの所定の記憶領域に予め保持されている。
【００２４】
デバッガ３に備えられたデバッグ制御部３０は、デバッガ３の全体の制御を行っている。デバッグ情報表示部３１の、表示用データ処理部３７とソース色変更部３８が備えられている。デバッグ情報表示部３１は、表示用データ処理部３７やソース色変更部３８から供給されるソースコードや消費メモリ、ブレークポイントに関連する情報を、表示装置６の表示画面にデバッグ結果として表示する。デバッグ実行状況格納部３３は、デバッグの実行状況をデバッグ作業用のデバッグ情報として保持している。ブレークポイント処理部３５は、ユーザ設定ポイント処理部４０と自動ブレークポイント設定部４１を使ってブレークポイントを設定し、プログラム実行部３４は、ブレークポイント判定部３９を使って、ブレークした位置の判定を行っている。
【００２５】
図３は、第１の実施形態におけるデバッガ３を備えるデバッグシステムの構成を具体的に例示するブロック図である。図３を参照すると、第１の実施形態におけるデバッグシステムは、デバッガ３を有する情報処理装置１と、プログラム実行装置２とを含んで構成されている。また図３に示されているように、情報処理装置１は、入力装置５と、表示装置６とに接続されている。
【００２６】
情報処理装置１は、パーソナルコンピュータに代表されるような電子計算機である。情報処理装置１は、入力、記憶、演算、制御および出力の機能を有し、所定のコンピュータプログラムを実行することで、情報処理を高速に行うことが可能である。なお、情報処理装置１の詳細な構成は後述する。情報処理装置１に接続される入力装置５は、キーボードやマウスに代表されるような、情報処理装置１へデータを入力するマンマシンインターフェースである。また、情報処理装置１に接続される表示装置６は、液晶表示装置６やＣＲＴに代表されるような、情報処理装置１の処理結果を外部に出力するマンマシンインターフェースである。
【００２７】
プログラム実行装置２は、実際にＣＰＵを動作させて、プログラムを実行する装置である。デバッガ３とプログラム実行装置２とは、デバッガ側インターフェース３６を介して、相互に情報通信を実行している。図３を参照すると、プログラム実行装置２は、実行装置側インターフェース１１と、ＭＰＵ（Microprocessor  Unit）１２とを含んで構成されている。実行装置側インターフェース１１は、情報処理装置１とプログラム実行装置２とで行われるデータ通信の仲立ちをするデータ通信インターフェースである。ＭＰＵ１２は、デバッグ対象のプログラムを実行する演算処理装置である。第１の実施形態のプログラム実行装置２は、プログラムの実行結果をリアルタイムで情報処理装置１に送信している。情報処理装置１は、その実行結果に基づいて、プログラムのデバッグを実行している。
【００２８】
以下に、情報処理装置１の詳細な構成について説明を行なう。図３に示されているように、情報処理装置１は、ＣＰＵ７と、メモリ８と、大容量記憶装置９とを備え、それらはバス１０を介して互いに接続されている。ＣＰＵ７は、情報処理装置１に備えられた中央演算処理装置である。ＣＰＵ７は、バス１０を介して接続される各種装置の制御や、バス１０を介して供給されるデータの処理を行っている。データを受け取ったＣＰＵ７は、そのデータを解釈して演算し、その演算結果を所定の出力装置に出力している。メモリ８は、データを記憶する記憶媒体である。以下の実施形態においては、メモリ８は半導体メモリで構成され、ソフトウェアを実行する場合に使用されるメインメモリであるものとして説明を行なう。大容量記憶装置９は、不揮発性の記憶装置である。本実施形態の大容量記憶装置９は、長期的にデータを保持することが可能な構成であることが好ましい。したがって、以下の実施形態においては、大容量記憶装置９が、磁性体を用いてデータを記憶するＨＤＤ（ハードディスクドライブ）であるものとして説明を行なう。
【００２９】
図３に示されているように、大容量記憶装置９は、デバッガ３と、ソースプログラム２３と、コンパイラ２４と、コンパイラ２４の実行結果であるオブジェクトコード２０、デバッグ情報２１および分岐情報２２を備えている。ソースプログラム２３は、本実施形態におけるデバッグ対象のソースコードが記述されているファイルである。コンパイラ２４は、ソースプログラム２３をオブジェクトコード２０に変換するソフトウェアである。
【００３０】
オブジェクトコード２０は、コンピュータに理解できる言語(マシン語)で記述されたプログラムである。本実施形態におけるオブジェクトコード２０は、コンパイラ２４が、ソースプログラム２３をコンパイルすることによって生成されるバイナリプログラムである。デバッグ情報２１は、オブジェクトコード２０を実行した場合に、どのパラメータがどの場所で実行されるかなどを示す初期情報である。分岐情報２２は、ソースプログラム２３に含まれる条件文ごとに、その条件文の種別やソース行番号、真条件だった場合の飛び先などの情報を保持するファイルである。なお、分岐情報２２の詳細な構成は後述する。
【００３１】
デバッガ３は、デバッグ制御部３０と、デバッグ情報表示部３１と、プログラム入出力部３２と、デバッグ実行状況格納部３３と、ブレークポイント処理部３５と、デバッガ側インターフェース３６とを含んで構成されている。デバッグ制御部３０は、デバッガ３の全体の動作を制御する機能を有する情報処理機能ブロックである。デバッグ情報表示部３１は、入力装置５を介して入力されるデバッガコマンドに応答して、ソースプログラム２３を更新する情報処理機能ブロックである。図３に示されているように、デバッグ情報表示部３１は、表示用データ処理部３７と、ソース色変更部３８と含んで構成されている。表示用データ処理部３７は、オブジェクトコード２０のソフトウェアブレークのコードを設定する機能を有する情報処理機能ブロックである。ソース色変更部３８は、ソースコードの中から、ユーザに注意を喚起したい部分の色を変更して表示装置６の画面に表示させる機能を有する情報処理機能ブロックである。
【００３２】
プログラム入出力部３２は、デバッガ３と、情報処理装置１に備えられている各種機能との間で実行される情報通信を管理するインターフェースである。デバッグ実行状況格納部３３は、デバッガ３がデバッグを実行しているときに、その実行状況をリアルタイムで保持する情報記憶機能ブロックである。プログラム実行部３４は、デバッグ対象のプログラムを実行する機能を有する情報処理機能ブロックである。図３に示されているように、プログラム実行部３４は、ブレークポイント判定部３９を含んで構成されている。ブレークポイント判定部３９は、プログラムの走行ルートを抽出する機能を有する情報処理機能ブロックである。
【００３３】
ブレークポイント処理部３５は、プログラムに設定されているブレークポイントに関連する処理を実行する情報処理機能ブロックである。図３に示されているように、ブレークポイント処理部３５は、ユーザ設定ポイント処理部４０と自動ブレークポイント設定部４１とを含んで構成されている。ユーザ設定ポイント処理部４０は、ユーザによって指定された位置に設定されるブレークポイントに対応してブレーク処理を実行する情報処理機能ブロックである。自動ブレークポイント設定部４１は、プログラムが暴走する可能性を有する場合に、自動的に暴走を防止するためのブレークポイントを設定する機能を有する情報処理機能ブロックである。デバッガ側インターフェース３６は、プログラム実行装置２とデバッガ３との間で実行されるデータの送受信を管理するインターフェースである。
【００３４】
本実施形態におけるデバッガ３は、プログラムが実行される順番を示す走行ルート情報を生成し、その走行ルート情報に基づいて、デバッグを実行している。以下に、図面を参照して、走行ルート情報および分岐情報２２に関しての説明を行なう。図４は、走行ルート情報の構成を例示する図である。図４の（ａ）は、プログラムカウンタ位置情報が条件文の位置と一致したときに作成される走行ルート情報（以下、第１走行ルート情報と呼ぶ。）を示している。また、図４の（ｂ）は、プログラムカウンタ位置情報が条件文の位置と一致しなかったときに作成される走行ルート情報（以下、第２走行ルート情報と呼ぶ。）を示している。
【００３５】
図４の（ａ）を参照すると、第１走行ルート情報には、真条件の偽条件の処理範囲のルート情報であることを示す種別の1と、真条件の処理範囲、偽条件の処理範囲が記述されている。また、図４の（ｂ）を参照すると、第２走行ルート情報には、プログラムカウンタ位置情報から最も近いブレークポイントの処理範囲のルート情報であることを示す種別の２と、プログラムカウンタ位置情報およびそのプログラムカウンタ位置情報から最も近いブレークポイントの位置が記述されている。
【００３６】
図５は、本実施形態における分岐情報の構成を例示する図である。また、図６は、デバッグ対象のソースプログラムの一部を例示するリストである。
【００３７】
図５を参照すると、分岐情報２２は、ソースプログラム２３に含まれる条件文ごとに、その条件文の種別とソース行番号、真条件だった場合の飛び先、偽条件だった場合の飛び先、条件式の内容、更に飛び先の条件文の情報を保持している。
【００３８】
例えば、ソースプログラム２３が、図６に示されているようなリストを含んでいる場合、ソース行番号の１４と、種別のifと、真条件の飛び先のソース行番号の１５と、偽条件の飛び先ソース行番号の２９と、条件式の内容であるLogout & DISP_INPUTとが分岐情報２２に記述される。
【００３９】
そして、ソース行番号１４の真条件の飛び先を示す情報として、
ソース行番号１５と種別のswitch、
CASE値のEX_COMB_ONとラベル先頭の１７、
CASE値のEX_COMB_OFFとラベル先頭の２０、
CASE値のdefaultとラベル先頭の２３
が分岐情報２２に記述される。
【００４０】
また、ソース行番号１４の偽条件の飛び先を示す情報として、
ソース行番号の２９と種別のif、
真条件の飛び先３０、
偽条件の飛び先３２、
真条件の条件式の内容addr_sabun == ０、
偽条件の条件式の内容addr_sabun > ０
が分岐情報２２に記述される。
【００４１】
［第１の実施形態の動作］
以下に、上記の構成を備えるデバッグシステムの動作に関して、図面を参照して説明を行なう。図７は、本実施形態のデバッグシステムの動作を例示するフローチャートである。ここで、本実施形態のデバッグシステムにおいては、その動作が開始する前に、オブジェクトコード２０、デバッグ情報２１および分岐情報２２を予め生成しておくことが好ましい。したがって、以下の説明においては、デバッグ対象であるソースプログラム２３が、コンパイラ２４によってコンパイルされ、上記の３つのファイル（オブジェクトコード２０、デバッグ情報２１および分岐情報２２）が予め生成されているものとする。
【００４２】
図７を参照すると、ステップＳ０１において、ユーザは、入力装置５を介してデバッグ開始命令を情報処理装置１に入力する。情報処理装置１は、そのデバッグ開始命令に応答して、ソースプログラム２３をデバッグ情報表示部３１に供給する。また、情報処理装置１は、オブジェクトコード２０とデバッグ情報２１をプログラム入出力部３２に供給し、分岐情報２２を自動ブレークポイント設定部４１とブレークポイント判定部３９に供給する。
【００４３】
ステップＳ０２において、デバッガ３は、プログラムカウンタ位置情報やブレークポイントの最大数、ソースプログラムに記述されているパラメータなどの初期情報を、表示用データ処理部３７に設定する。またこのとき、デバッガ３は、その初期情報をデバッグ実行状況格納部３３にも設定する。さらに、デバッガ３は、初期情報の設定に対応して、表示装置６にソースプログラム２３を表示させる。
【００４４】
ステップＳ０３において、自動ブレークポイント設定部４１は、デバッグ実行状況格納部３３から初期情報のプログラムカウンタ位置情報を受け取る。初期情報のプログラムカウンタ位置情報を受け取った自動ブレークポイント設定部４１は、分岐情報２２に基づいて、そのプログラムカウンタ位置から最も近い条件分岐命令の行番号を割り出す。自動ブレークポイント設定部４１は、割り出した行番号に示される位置にプログラムの暴走を防ぐためのブレークポイント（以下、自動設定ブレークポイントと呼ぶ。）を自動的に設定する。自動ブレークポイント設定部４１は、自動設定ブレークポイントの設定完了に応答して、その情報をデバッグ実行状況格納部３３に反映させる。さらに、デバッガ３の表示用データ処理部３７は、オブジェクトコード２０にソフトウェアブレークのコードを入力する。デバッガ３は、ソフトウェアブレークのコードの入力が完了したときに、表示装置６を介して、自動設定ブレークポイントが入力されたソースを表示させる。このとき、表示用データ処理部３７は、プログラムカウンタ位置から最初に到達する条件文の位置にソフトウェアブレークを設定する。
【００４５】
ステップＳ０４において、ブレークポイント判定部３９は、初期情報のプログラムカウンタ位置情報からプログラムの走行ルートを予測する。ブレークポイント判定部３９は、プログラムカウンタ位置情報と分岐情報２２とに基づいて、プログラムカウンタ位置が条件文の位置にあるかどうかを判断する。プログラムカウンタ位置が条件文の位置にあった場合は、デバッグ実行状況格納部３３から、その条件文のパラメータを受け取り、プログラムが走行する処理ソース部分と、プログラムが走行しない処理ソース部分を判断する。ブレークポイント判定部３９は、プログラムが走行しない処理ソース部分にユーザ指定のブレークポイント（以下、ユーザ設定ブレークポイントと呼ぶ。）が設定されているため、ユーザ設定ブレークポイントを通過しないのであれば、警告メッセージを表示装置６に表示させる。
【００４６】
また、プログラムカウンタ位置が条件文の位置ではなかった場合には、ブレークポイント判定部３９は、そのプログラムカウンタ位置から最も近いブレークポイントを判断する。ブレークポイント判定部３９は、プログラムカウンタ位置と条件文との対応に基づいて、そのプログラムの走行ルート情報（第１走行ルート情報または第２走行ルート情報）を生成し、ソース色変更部３８に渡す。
【００４７】
ステップＳ０５において、ソース色変更部３８は、走行ルート情報を元に、プログラムが走行する処理ソース部分もしくは真条件の処理ソース部分を、現在のソースプログラムの表示に使用されている色（以下、基本色と呼ぶ。）と異なる色である第一の色で表示装置６に表示させる。また、ソース色変更部３８は、プログラムが走行しない偽条件の処理ソース部分を、基本色および第一の色とは異なる色である第二の色で、表示装置６に表示させる。
【００４８】
ステップＳ０６において、デバッガ３は、一旦、デバッガ３全体を制御するデバッグ制御部３０に処理を戻す。デバッガ３は、ユーザからのデバッガコマンドの入力待ちになり、処理はステップＳ０７に進む。
【００４９】
ステップＳ０７において、デバッガ３は、ユーザから入力されたデバッガコマンドの判別を実行する。デバッガ３は、判別されたデバッガコマンドに応じて処理の振り分けを行う。
【００５０】
ステップＳ０７において、入力装置５からデバッガの終了コマンドが入力された場合、処理はステップＳ０８に進む。ステップＳ０８において、デバッガ３はデバッグの終了処理を行い、デバッガ動作を終了させる。
【００５１】
ステップＳ０７において、レジスタ、メモリ、パラメータの値を変更するコマンドが入力された場合、処理はステップＳ０９に進む。ステップＳ０９において、デバッガ３は入力装置５を用いてユーザが入力した値を受け取り、レジスタ、メモリ、パラメータの値を入力された値に変更して、処理をステップＳ０３に戻す。
【００５２】
ステップＳ０７において、プログラムの実行コマンドが入力された場合、処理はステップＳ１０に進む。ステップＳ１０において、プログラム実行装置２は、プログラムの実行コマンドに応答してプログラムを実行する。プログラム実行装置２は、プログラムの実行に応答してデバッグ制御部３０に制御を戻し、処理はステップＳ１１に進む。ステップＳ１１において、プログラム実行装置２は、プログラムがソフトウェアブレークしたら、そのことをデバッガ側インターフェース３６を介してデバッガ３に伝える。デバッガ３は、プログラム実行装置２から伝えられた情報に基づいて、表示用データ処理部３７とデバッグ実行状況格納部３３に値を反映させて、表示装置６に表示し、処理をステップＳ０３に戻す。
【００５３】
ステップＳ０７において、ユーザ設定ブレークポイントを設定するためのコマンドが入力された場合、処理はステップＳ１２に進む。ステップＳ１２において、ユーザは、入力装置５を用いて、ソースプログラム２３の確認したい場所を指定してユーザ設定ブレークポイントの設定を要求する。ユーザ設定ポイント処理部４０は、指定されたユーザ設定ブレークポイントをソースプログラム２３に設定する。またユーザ設定ポイント処理部４０は、そのユーザ設定ブレークポイントをデバッグ実行状況格納部３３に反映させる。さらに、表示用データ処理部３７は、オブジェクトコード２０にソフトウェアブレークのコードを入力する。表示装置６は、入力されたソフトウェアブレークのコードに基づいて、新たなユーザ設定ブレークポイントを含むソースプログラム２３を画面に表示し、処理はステップＳ０６に戻る。
【００５４】
ステップＳ０７において、その他のデバッガコマンドが入力された場合、処理は、ステップＳ０１３に進む。ステップＳ１３において、デバッガ３は通常のデバッグ処理を行い、処理をステップＳ０６に戻す。なお、通常のデバッグ処理は、従来の実行されているデバッグ処理と同様の処理であるため、詳細な説明は省略する。
【００５５】
ステップＳ０９、または、ステップＳ１１からステップＳ０３に処理が戻った場合は、デバッガ３は、デバッグ実行状況格納部３３から、新しいプログラムカウンタ位置情報と新たなユーザ設定ブレークポイント位置の情報を受け取り、ステップＳ０３、ステップＳ０４、ステップＳ０５の処理を継続する。
【００５６】
以下に、図面を参照してステップＳ０３における自動ブレークポイント設定部４１の動作に関する詳細な説明を行なう。図８は、自動ブレークポイント設定部４１の動作を例示するフローチャートである。図８を参照すると、ステップＳ２０において、自動ブレークポイント設定部４１は、分岐情報２２を読み込む。ステップ２１において、自動ブレークポイント設定部４１は、デバッグ実行状況格納部３３からプログラムカウンタ位置情報を受け取り、処理はステップＳ２２に進む。
【００５７】
ステップＳ２２において、自動ブレークポイント設定部４１は、読み込んだ分岐情報２２に基づいて、現在のプログラムカウンタ位置に対応する行番号よりも大きい行番号に記載の文字列を順番に検索する。自動ブレークポイント設定部４１はその検索により、現在のプログラムカウンタ位置から最も近い位置にある条件文を抽出し、その行番号と、その条件文の真条件と偽条件の飛び先、更にそのプログラムカウンタ位置に最も近い条件文の処理範囲の中に入っている、別の条件文の行番号を特定する。なお、上述したように、これらの情報は、分岐情報２２に保持されている（図５参照）。そして、ステップＳ２３において、その行番号で示される行に自動設定ブレークポイントを設定する。
【００５８】
以下に、図面を参照して図７のステップＳ０４におけるブレークポイント判定部３９の動作に関する詳細な説明を行なう。図９は、ブレークポイント判定部３９の動作を例示するフローチャートである。図９を参照すると、ブレークポイント判定部３９は、ステップＳ３０において、分岐情報２２を読み込む。ブレークポイント判定部３９が分岐情報２２を読み込んだ後、処理はステップＳ３１に進む。ステップＳ３１において、ブレークポイント判定部３９は、デバッグ実行状況格納部３３からプログラムカウンタ位置情報を受け取り、処理はステップＳ３２に進む。ステップＳ３２において、ブレークポイント判定部３９は、デバッグ実行状況格納部３３から全てのブレークポイントの位置情報を受け取る。
【００５９】
ステップＳ３３において、ブレークポイント判定部３９は、読み込んだ分岐情報２２に基づいて、プログラムカウンタ位置が条件文の位置にあるかどうかを判断する。その判断の結果、プログラムカウンタ位置が、分岐情報２２に記された条件文の行番号のどれかと一致した場合、処理はステップＳ３４に進む。その判断の結果、プログラムカウンタ位置が、分岐情報２２に記された条件文の行番号のどれかと一致しなかった場合、処理はステップＳ３７に進む。
【００６０】
ステップＳ３４において、ブレークポイント判定部３９は、一致した行番号の条件文のパラメータを、デバッグ実行状況格納部３３から受け取る。ステップＳ３５において、ブレークポイント判定部３９は、受け取った条件文のパラメータの内容を確認する。そして、ステップＳ３６において、ブレークポイント判定部３９は、第１走行ルート情報を生成するために、ソースプログラム２３（テキストファイル）を読み込む。ソースプログラム２３を読み込んだブレークポイント判定部３９は、分岐情報２２に基づいて、真条件の飛び先とその処理の終りの行番号と、偽条件の飛び先とその処理の終りの行番号を示す第１走行ルート情報を生成する。ブレークポイント判定部３９は生成した第１走行ルート情報をソース色変更部３８に入力し、処理はステップＳ３８に進む。
【００６１】
ステップＳ３８において、ブレークポイント判定部３９は、偽条件の処理範囲内に、ユーザ指定のブレークポイントがあるかどうか判断する。その判断の結果、偽条件の処理範囲内に、ユーザ指定のブレークポイントがあった場合には、処理はステップＳ３９に進む。ステップＳ３９において、ブレークポイント判定部３９は警告メッセージを表示装置６に表示させ、処理は終了する。
【００６２】
ステップＳ３３の判断の結果、プログラムカウンタ位置と条件文の位置が一致しない場合には、ブレークポイント判定部３９は、ステップＳ３７において、プログラムカウンタ位置から最も近いブレークポイントまでの範囲を示す第２走行ルート情報を生成する。ブレークポイント判定部３９は、生成した第２走行ルート情報をソース色変更部３８に入力して処理は終了する。
【００６３】
以下に、図面を参照して図７のステップＳ０５におけるソース色変更部３８の動作に関する詳細な説明を行なう。図１０は、ソース色変更部３８の動作を例示するフローチャートである。図１０を参照すると、ステップＳ５０において、ソース色変更部３８には、ブレークポイント判定部３９から走行ルート情報（第１走行ルート情報または第２走行ルート情報）が供給される。
【００６４】
ステップＳ５1において、ソース色変更部３８は、供給された走行ルート情報に真偽条件の範囲が示されているかどうかを判断する。その判断の結果、真偽条件の範囲が示されている場合、処理はステップＳ５２に進む。また、その判断の結果、真偽条件の範囲が示されていない場合、処理はステップＳ５４に進む。
【００６５】
ステップＳ５２において、供給された走行ルート情報が第１走行ルート情報であり、真条件の偽条件の処理範囲のルート情報が示されていた場合、ソース色変更部３８は、真条件のソースプログラムの範囲を基本色とは異なる第一の色で表示するように設定し、処理はステップＳ５３に進む。ステップＳ５３において、ソース色変更部３８は、偽条件のソースプログラムの範囲を第二の色で表示するように設定する。ソース色変更部３８は、表示色の変更が完了したソースプログラム２３を表示装置６の画面に表示させて処理は終了する。
【００６６】
ステップＳ５４において、供給された走行ルート情報が第２走行ルート情報であり、プログラムカウンタ位置から最も近いブレークポイントまでの範囲のルート情報が示されていた場合、ソース色変更部３８は、そのプログラムの範囲を基本色とは異なる第一の色に変更する。ソース色変更部３８は、表示色の変更が完了したソースプログラム２３を表示装置６の画面に表示させて処理は終了する。
【００６７】
上述してきたように、本実施形態のデバッグシステムでは、プログラムの実行位置であるプログラムカウンタ位置情報と分岐情報を元に、自動設定ブレークポイント（プログラム暴走を抑えるためのブレークポイント）をデバッグ作業中に分岐点ごと設定している。この自動設定ブレークポイントは、プログラムカウンタ位置が移動するたびに変更されるので、ユーザがプログラム構造を把握していなくても、プログラムの暴走を抑えることが可能となる。
【００６８】
また、プログラムカウンタ位置が条件文と重なるかどうかで場合わけを行ない、プログラムカウンタ位置が条件文と重ならなかった場合、分岐情報を元に、プログラムカウンタ位置から最も近いブレークポイントまでの範囲のソース部分を元のソースプログラムの表示に使用されている色とは異なる色で表示している。そのため、ユーザは視覚的にどこまで条件分岐なしで処理できるのかを容易に判断することが可能となる。
【００６９】
また、プログラムカウンタ位置が条件文と重なったときには、その条件パラメータをチェックし、分岐情報を元に、プログラムが走行する真条件と走行しない偽条件の処理の範囲を判断して、真条件の処理ソース部分を第一の色、偽条件の処理ソース部分を第二の色で表示している。そのため、ユーザは視覚的にどのソース部分を実行するのかを容易に判断することが可能となる。
【００７０】
また、偽条件の処理の範囲内に、ユーザが確認したいポイントがあった場合、デバッガ３は、プログラムがその箇所を通過しないと判断し、警告メッセージを表示する。この機能により、ユーザはプログラム実行前に不具合が存在しそうな箇所を判断することが出来る。
【００７１】
したがって、本願発明は、プログラムが自動チェックされているのと同等のデバッグ環境を提供することが可能である。具体的には、これらの機能により、例えば、１０００ステップのソースで、その中に５０個の分岐点があった場合、従来技術で生成した走行ルート情報を解析するのに５分程度の時間を必要とし、更に、パラメータチェックを手動で行う必要がある。しかしながら、上述のデバッガを構成することで、プログラムの暴走を抑えつつ、ステップ実行しながら走行ルートを視覚的に判別し、条件文のパラメータをチェックすることが出来るため、ほとんど時間をかけることなく走行ルート解析を実施することができる。
【００７２】
［第２の実施形態］
以下に、図面を参照して本発明の第２の実施形態について説明を行なう。図１１は、第２の実施形態における自動ブレークポイント設定部４１の動作を例示するフローチャートである。第２の実施形態における自動ブレークポイント設定部４１は、条件選択情報に対応して自動的にブレークポイントを設定する構成を備えている。条件選択情報は、if文、switch文、call文など、どの条件文にブレークポイントを設定するかを決定するための、ＯｎまたはＯｆｆの情報が入っている。第２の実施形態における自動ブレークポイント設定部４１は、その条件選択情報でＯｎに決定された条件文のみに、自動設定ブレークポイントを設定する。
【００７３】
なお、図１１に示されるフローチャートにおいて、図８で例示したフローチャートと同じ符号が付されているステップは、第１の実施形態における自動ブレークポイント設定部４１の動作と同様であるので、その詳細な説明は省略する。
【００７４】
図１１を参照すると、第２の実施形態における自動ブレークポイント設定部４１は、ステップＳ２４において、自動ブレークポイント設定部４１は、プログラムが実行停止しているときに、条件選択情報読み込む。そして、ステップＳ２５において、条件選択情報で選択された条件文の位置を特定する。ステップＳ２３において、自動ブレークポイント設定部４１は、特定した位置にブレークポイントを設定する。第１の実施形態では、プログラムの暴走を止めるため、プログラムカウンタ位置よりも後段にある、if文、switch文、call文の全てにブレークポイントを設定するようにしている。第２の実施形態の自動ブレークポイント設定部４１は、この機能により、既に暴走の原因とならないと分かっている条件文に、数に制限のあるブレークポイントを余分に設定することがなくなり、資源を有効に使用することが出来る。
【００７５】
［第３の実施形態］
以下に、図面を参照して本発明の第３の実施形態について説明を行なう。図１２は、第３の実施形態における自動ブレークポイント設定部４１の動作を例示するフローチャートである。第２の実施形態における自動ブレークポイント設定部４１は、ブレークポイント解除情報に対応して自動的にブレークポイントを設定する構成を備えている。このブレークポイント解除情報には、ブレークポイント設定を解除する範囲の開始行番号と終了行番号が設定されている。
【００７６】
なお、図１２に示されるフローチャートにおいて、図８で例示したフローチャートと同じ符号が付されているステップは、第１の実施形態における自動ブレークポイント設定部４１の動作と同様であるので、その詳細な説明は省略する。
【００７７】
図１１を参照すると、第３の実施形態における自動ブレークポイント設定部４１は、ステップＳ２６において、プログラムが実行ブレークしているときに、ブレークポイント解除情報を読み込む。そして、ステップＳ２７において、ブレークポイント解除情報で指定された範囲外で、プログラムカウンタ位置から最も近い位置の条件文を特定するようにする。
【００７８】
第１の実施形態の自動ブレークポイント設定部４１では、プログラムの暴走を止めるため、分岐情報２２に基づき、プログラムカウンタ位置以下にある、全ての条件文にブレークポイントを設定するようにしている。しかし、既に暴走しないと分かっている処理部分についても、ブレークポイントを設定していたのでは、デバッグ作業の手間になる。第３の実施形態の自動ブレークポイント設定部４１は、そのブレークポイント解除情報で設定された行番号の範囲の条件文には、ブレークポイントを設定しない機能を備えている。この機能により、プログラム実行を不用意にブレークすることが無くなり、より効率的にデバッグ作業を進めることが出来る。
【００７９】
［第４の実施形態］
以下に、図面を参照して本発明の第４の実施形態について説明を行なう。図１３は、第４の実施形態におけるブレークポイント判定部３９の動作を例示するフローチャートである。第４の実施形態のブレークポイント判定部３９は、プログラム実行がブレークする度に、これまでプログラムが走行したプログラムカウンタ位置の履歴情報を有する走行ルート情報を生成するための構成を備えている。プログラムカウンタ位置の履歴情報は、ブレークポイント判定部３９がデバッグ実行状況格納部３３から受け取るデータであり、プログラムが走行した行番号情報が記されている。
【００８０】
なお、図１３に示されているフローチャートにおいて、図９で例示したフローチャートと同じ符号が付されているステップは、第１の実施形態におけるブレークポイント判定部３９の動作と同様であるので、その詳細な説明は省略する。
【００８１】
図１３を参照すると、ステップＳ４０において、ブレークポイント判定部３９は、デバッグ実行状況格納部３３からプログラムカウンタ位置履歴情報を受け取る。ステップＳ４１において、ブレークポイント判定部３９は、受け取ったプログラムカウンタ位置履歴情報を有する初期走行ルート情報を生成する。そして、ステップＳ３３において、ブレークポイント判定部３９は、生成した初期走行ルート情報に基づいてプログラムカウンタ位置が条件文の位置にあるかどうかを判断し、その判断に基づいて、第１走行ルート情報または第２走行ルート情報を生成する。
【００８２】
図１４は、第４の実施形態における第１走行ルート情報および第２走行ルート情報の構成を例示する図である。図１４の（ａ）は、第４の実施形態における第１走行ルート情報を示し、図１４の（ｂ）は、第４の実施形態における第２走行ルート情報を示している。図１４に示されているように、第４の実施形態における走行ルート情報は、プログラムが走行した行番号情報をプログラムカウンタ位置履歴情報として保持している。
【００８３】
図１５は、第４の実施形態におけるソース色変更部３８の動作を例示するフローチャートである。第４の実施形態のソース色変更部３８は、プログラム通過地点のソースプログラムを、を第三の色で表示する構成を備えている。なお、図１５に例示されるフローチャートにおいて、図１０で例示したフローチャートと同じ符号が付されているステップの動作は、第１の実施形態におけるソース色変更部３８の動作と同様であるので、その詳細な説明は省略する。
【００８４】
図１５を参照すると、第４の実施形態におけるソース色変更部３８は、ステップＳ５０において、ブレークポイント判定部３９から、プログラムカウンタ位置履歴情報を有する第１走行ルート情報または第２走行ルート情報を受け取る。ソース色変更部３８は、第１の実施形態と同様に、ステップＳ５１からステップＳ５３の処理を実行する。ステップＳ５４において、ソース色変更部３８は、プログラムカウンタ位置履歴の行番号に対応するソース第三の色を設定し、表示装置６の画面に表示させる。
【００８５】
第１（または、第２、第３）の実施形態におけるブレークポイント判定部３９では、プログラムの実行範囲を予測し、色表示機能にソースの表示色を変える走行ルート情報を渡していたが、実際に走行したルートは分からなかった。第４の実施形態では、プログラム実行がブレークする度に、これまでプログラムが走行したプログラムカウンタ位置の履歴情報を走行ルート情報に記述してソース色変更部３８に入力し、その行番号のソースを第三の色で表示させるようにしている。この機能により、プログラムが条件分岐後、どのように実行されていったのかを視覚的に判断することができ、より効率的にデバッグ作業を進めることが出来る。
【００８６】
［第５の実施形態］
以下に、図面を参照して本発明の第５の実施形態について説明を行なう。図１６は、第５の実施形態におけるデバッグシステムの構成を例示するブロックである。図１６を参照すると、第５の実施形態のデバッガ３は、上述してきた複数の実施形態におけるデバッガ３に、さらにプログラム格納部５１を備えて構成されている。プログラム格納部５１は、プログラム実行装置２に対応する機能を有する情報処理機能ブロックである。第５の実施形態におけるデバッグシステムは、デバッガ３内部にプログラム格納部５１を備えることによって、プログラム実行装置２を備えることなくソースプログラム２３のデバッグを実行することが可能である。
【００８７】
図１７は、第５の実施形態のデバッグシステムの構成を図２に対応して示す概念図である。図１７に示されているように、第５の実施形態におけるデバッガ３は、デバッガ内部でプログラムを実行するプログラム格納部５１を備えている。第５の実施形態におけるデバッガ３は、プログラム格納部５１に、実行するプログラムを格納している。格納されたプログラムは、プログラム実行部３４で実行される。第５の実施形態におけるデバッガ３は、プログラム格納部５１を備えることで、プログラムを実行する装置は用意することなく、デバッガ単体でデバッグ作業を進めることが可能になる。
【００８８】
［第６の実施形態］
以下に、図面を参照して本発明の第６の実施形態について説明を行なう。図１８は、第６の実施形態におけるデバッグシステムの構成を例示するブロックである。図１８を参照すると、第６の実施形態のデバッガ３は、上述してきた複数の実施形態におけるデバッガ３に、さらに分岐情報生成部５２を備えて構成されている。分岐情報生成部５２は、オブジェクトコード２０に基づいて分岐情報２２を生成する情報処理機能ブロックである。第６の実施形態のデバッグシステムは、デバッガ３内部に分岐情報生成部５２を備えることによって、汎用的な分岐情報２２を採用することが可能となる。
【００８９】
図１９は、第６の実施形態のデバッグシステムの構成を図２に対応して示す概念図である。図１９に示されているように、第６の実施形態のデバッガ３は、デバッガ内部に分岐情報生成部５２を備え、分岐情報２２をコンパイル２４からではなく、分岐情報生成部５２から生成することができるように構成されている。分岐情報生成部５２は、オブジェクトコード２０を受け取り、それに逆アセンブルをかけることにより、そこから分岐情報２２を生成する機能を備えている。これにより、コンパイラ２に分岐情報２２を生成する機能がなくても、分岐情報２２を生成することが可能となり、汎用的なコンパイラを用いてシステムを構築することが可能となる。
【図面の簡単な説明】
【００９０】
【図１】図１は、従来のデバッガの構成を例示するブロック図である。
【図２】図２は、第１の実施形態のデバッガを概念的に示す概念図である
【図３】図３は、第１の実施形態のデバッガの構成を例示するブロック図である。
【図４】図４は、走行ルート情報の構成を例示する図である。
【図５】図５は、分岐情報の構成を例示する図である。
【図６】図６は、ソースプログラムの一部を例示するリストである。
【図７】図７は、第１の実施形態の動作を例示するフローチャートである。
【図８】図８は、自動ブレークポイント設定部４１の動作を例示するフローチャートである。
【図９】図９は、ブレークポイント判定部３９の動作を例示するフローチャートである。
【図１０】図１０は、ソース色変更部３８の動作を例示するフローチャートである。
【図１１】図１１は、第２の実施形態における自動ブレークポイント設定部４１の動作を例示するフローチャートである。
【図１２】図１２は、第３の実施形態における自動ブレークポイント設定部４１の動作を例示するフローチャートである。
【図１３】図１３は、第４の実施形態におけるブレークポイント判定部３９の動作を例示するフローチャートである。
【図１４】図１４は、第４の実施形態における走行ルート情報の構成を例示する図である。
【図１５】図１５は、第４の実施形態におけるソース色変更部３８の動作を例示するフローチャートである。
【図１６】図１６は、第５の実施形態のデバッガの構成を例示するブロック図である。
【図１７】図１７は、第５の実施形態のデバッガを概念的に示す概念図である
【図１８】図１８は、第６の実施形態のデバッガの構成を例示するブロック図である。
【図１９】図１９は、第６の実施形態のデバッガを概念的に示す概念図である
【符号の説明】
【００９１】
１…情報処理装置
２…プログラム実行装置
３…デバッガ
５…入力装置
６…表示装置
７…ＣＰＵ
８…メモリ
９…大容量記憶装置
１０…バス
１１…実行装置側インターフェース
１２…ＭＰＵ
２０…オブジェクトコード
２１…デバッグ情報
２２…分岐情報
２３…ソースプログラム
２４…コンパイラ
３０…デバッグ制御部
３１…デバッグ情報表示部
３２…プログラム入出力部
３３…デバッグ実行状況格納部
３４…プログラム実行部
３５…ブレークポイント処理部
３６…デバッガ側インターフェース
３７…表示用データ処理部
３８…ソース色変更部
３９…ブレークポイント判定部
４０…ユーザ設定ポイント処理部
４１…自動ブレークポイント設定部
５１…プログラム格納部
５２…分岐情報生成部
１０１…プログラム走行ルート解析装置
１０２…ソースファイル
１０１２…条件数抽出部
１０１３…ルート情報設定部
１０１４…走行ルート表作成部
１０１６…走行ルート表
【図１】
2007080118.tif 000003
【図２】
2007080118.tif 000004
【図３】
2007080118.tif 000005
【図４】
2007080118.tif 000006
【図５】
2007080118.tif 000007
【図６】
2007080118.tif 000008
【図７】
2007080118.tif 000009
【図８】
2007080118.tif 000010
【図９】
2007080118.tif 000011
【図１０】
2007080118.tif 000012
【図１１】
2007080118.tif 000013
【図１２】
2007080118.tif 000014
【図１３】
2007080118.tif 000015
【図１４】
2007080118.tif 000016
【図１５】
2007080118.tif 000017
【図１６】
2007080118.tif 000018
【図１７】
2007080118.tif 000019
【図１８】
2007080118.tif 000020
【図１９】
2007080118.tif 000021