(57)【要約】【課題】    命令を段階的に実行し、かつその命令が使用するデータの値の全てを表示することにより、デバッグに要する労力を軽減することのできるデバッグ方法を提供する。【解決手段】  １命令で複数の処理を行う命令を含むソースプログラムを命令のセマンティクスに関する情報をもとに複数の処理単位に分割し、更に命令が使用するデータの格納先を命令のセマンティクスに関する情報に基づいて抽出する解析部２と、分割された命令を各処理単位毎に実行する実行部３と、前記ソースプログラム１３、処理単位毎に分割された分割命令、および命令が使用するデータを表示すると共に、前記ソースプログラム、分割命令、および命令が使用するデータのうち、実行段階のソースプログラム、実行段階の分割命令、および命令が使用するデータを強調して表示する表示部４を備えた。【選択図】  図１
2006003987.tif 000002
【特許請求の範囲】
【請求項１】
１命令で複数の処理を行う命令を含むソースプログラムを、命令のセマンティクスに関する情報に基づいて複数の処理単位に分割し、更に命令が使用するデータの格納先を命令のセマンティクスに関する情報に基づいて抽出するステップと、
分割された命令を各処理単位毎に実行するステップと、
前記ソースプログラム、処理単位毎に分割された分割命令、および命令が使用するデータを表示すると共に、前記ソースプログラム、分割命令、および命令が使用するデータのうち、実行段階のソースプログラム、実行段階の分割命令、および命令が使用するデータを強調して表示するステップを備えたことを特徴とするデバッグ方法。
【請求項２】
請求項１記載のデバッグ方法において、
分割命令は複数の判定条件を用いた条件分岐命令であり、それぞれの判定条件の成立の有無を表示画面に表示することを特徴とするデバッグ方法。
【請求項３】
請求項１記載のデバッガにおいて、
命令が使用するデータの値を変更して入力する手段を備えたことを特徴とするデバッグ方法。
【請求項４】
１命令で複数の処理を行う命令を含むソースプログラムを命令のセマンティクスに関する情報をもとに複数の処理単位に分割し、更に命令が使用するデータの格納先を命令のセマンティクスに関する情報に基づいて抽出する解析部と、
分割された命令を各処理単位毎に実行する実行部と、
前記ソースプログラム、処理単位毎に分割された分割命令、および命令が使用するデータを表示すると共に、前記ソースプログラム、分割命令、および命令が使用するデータのうち、実行段階のソースプログラム、実行段階の分割命令、および命令が使用するデータを強調して表示する表示部を備えたことを特徴とするデバッガ。
【請求項５】
コンピュータを、１命令で複数の処理を行う命令を含むソースプログラムを命令のセマンティクスに関する情報をもとに複数の処理単位に分割し、更に命令が使用するデータの格納先を命令のセマンティクスに関する情報に基づいて抽出する解析手段と、
分割された命令を各処理単位毎に実行する実行手段と、
前記ソースプログラム、処理単位毎に分割された分割命令、および命令が使用するデータを表示すると共に、前記ソースプログラム、分割命令、および命令が使用するデータのうち、実行段階のソースプログラム、実行段階の分割命令、および命令が使用するデータを強調して表示する表示手段として機能させることを特徴とするデバッグ用プログラム。
【請求項６】
請求項５記載のデバッグ用プログラムにおいて、
分割命令は複数の判定条件を用いた条件分岐命令であり、それぞれの判定条件の成立の有無を表示画面に表示することを特徴とするデバッグ用プログラム。
【請求項７】
請求項５記載のデバッグ用プログラムにおいて、
コンピュータを、命令が使用するデータの値を変更して入力する手段として機能させるためのプログラムを備えたことを特徴とするデバッグ用プログラム。
【請求項８】
複数行のソースプログラムを表示するソース表示画面と、
１命令で複数の処理を行う命令を含むソースプログラムを命令のセマンティクスに関する情報をもとに複数の処理単位に分割して生成した分割命令を処理単位毎に表示する実行段階表示画面と、
分割命令が使用するデータの値を表示するデータ情報表示画面を備え、
ソース表示画面に表示するソースプログラム、および実行段階表示画面に表示する分割命令のうち、実行段階の命令は強調表示し、データ情報表示画面に表示するデータの値は更新されたとき強調表示することを特徴とするデバッガの表示方法。
【請求項９】
請求項８記載のデバッガの表示方法において、
分割命令は処理単位の機能を表す名称で表示することを特徴とするデバッガの表示方法。
【請求項１０】
請求項８記載のデバッガの表示方法において、
データ情報表示画面は、使用するデータの名称、型、長さ、および値を表示することを特徴とするデバッガの表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ技術等にかかり、特に命令を複数の処理単位に分割して分析を行うことのできるデバッグ技術に関する。
【背景技術】
【０００２】
特許文献１には、アプリケーションプログラムにおける実行中の行番号を画面に表示することにより、実行状況を可視的に表示して、どの行が実行中かを容易に理解することのできるデバッガが示されている。このデバッガによれば、アプリケーションプログラムのどの行の命令が現在実行中で、かつその命令の実行前後でデータの値がどのように変化するかなどを容易に理解することができる。
【０００３】
また、特許文献２には、高水準プログラム言語で作成されたソースプログラムのデバッグに際して、ソースプログラムのプログラム命令に対して生成される中間言語に対する行番号情報をデバッグ情報の中に挿入しておき、端末上に中間言語を行番号情報とともに表示し、この中間言語の行番号情報に基づいて当該プログラムを指定の位置でブレイクしたりステップ実行を行うようにすることが示されている。また、中間言語に対する行番号情報と同様に、コンパイラが自動生成する内部生成変数に対してもシンボル情報をデバッグ情報の中に挿入しておき、内部生成変数を参照できるようにすることが示されている。
【特許文献１】特開平９−３１９６１４号公報
【特許文献２】特開２０００−３５３１１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１記載のデバッガは、例えばＣＯＢＯＬ言語等に見られるような、文字列操作、報告書作成、データの妥当性検査など、単独で多数の処理を行う命令をデバッグする場合、命令の実行が完結するまで処理結果の情報を更新することができない。このため、複雑な処理を行う命令に対し、その処理過程の詳細な分析を行うことはできない。
【０００５】
また、特許文献２記載のデバッガにおいては、中間言語に対する行番号情報と同様に、コンパイラが自動生成する内部生成変数も参照することができる。しかしながら、参照可能な内部変数はコンピュータが演算用に作成した変数であり、デバッグに用いる変数として適した変数であるとは限らない。
【０００６】
また、特許文献１および２に示すデバッガは、命令中に、明示的に指定されていないデータを使用する命令が存在する場合における前記データの抽出処理については何ら考慮されていない。
【０００７】
本発明はこれらの問題点に鑑みてなされたもので、命令を段階的に実行し、かつその命令が使用するデータの値を表示することにより、デバッグに要する労力を軽減することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は上記課題を解決するため、次のような手段を採用した。
【０００９】
１命令で複数の処理を行う命令を含むソースプログラムを、命令のセマンティクスに関する情報に基づいて複数の処理単位に分割し、更に命令が使用するデータの格納先を命令のセマンティクス（命令の内部構造）に関する情報に基づいて抽出するステップと、分割された命令を各処理単位毎に実行するステップと、前記ソースプログラム、処理単位毎に分割された分割命令、および命令が使用するデータを表示すると共に、前記ソースプログラム、分割命令、および命令が使用するデータのうち、実行段階のソースプログラム、実行段階の分割命令、および命令が使用するデータを強調して表示するステップを備えた。
【発明の効果】
【００１０】
本発明は、以上により、デバッグに要する労力を軽減することが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、最良の実施形態を添付図面を参照しながら説明する。図１は、本実施形態にかかるデバッガ１の構成を説明する図である。図に示すように、デバッガ１、ＯＳ（Ｏperating Ｓystem）１１、実行プログラム１２、およびデバッグ対象であるソースプログラム（原始プログラム）１３は、それぞれ主記憶装置１４上に格納される。デバッガ１はＯＳ１１をプラットフォームとし、実行プログラム１２と連携し、ソースプログラム１３を参照しながら動作する。また、ユーザは端末１５を介してデバッガ１に命令あるいは情報を与え、またデバッガ１が出力する情報を参照することができる。
【００１２】
デバッガ１は、解析部２、実行部３、および表示・設定部４を備え、これらの各部の機能はそれぞれ主記憶装置１に格納したプログラムにより実現される。すなわち、解析部２は、ユーザがデバッグ時にデバッグ対象に指定した命令の解析を行う。実行部３は、解析部２が出力した解析結果をもとに、ユーザの指示に従ってデバッグ対象（調査対象）の命令を実行する。表示・設定部４は、実行部３による命令の実行結果を画面に表示し、またユーザが画面から入力したデータの受け付けるなどの入出力インタフェースとしての機能を実現する。また、これらの各部が機能するうえで必要な情報を格納するために、デバッグ情報テーブル５を備える。
【００１３】
図２は、図１で説明したデバッガを構成する各部の詳細および各部間における情報の流れを説明する図である。
【００１４】
解析部２は、命令分割部２１およびデータ検索部２２を備える。命令分割部２１は、ユーザがデバッグ対象に指定した命令を、そのセマンティクスに関する情報に基づいて複数の処理単位に分割する。分割結果を表す情報である命令分割情報３２をデバッグ情報テーブル５に格納する。同様に、データ検索部２２は、命令のセマンティクスに関する情報に基づいて命令が使用するデータ（格納先）のすべてをプログラムから自動的に抽出する。抽出したデータ情報３３はデバッグ情報テーブル５に格納する。なお、セマンティクスに関する情報に基づいた命令の分割に際しては、各命令毎にセマンティクスに関する情報、例えば命令の内部構造に関する情報に基づいて分割規則を予め定めておき、該規則に従って各命令を処理単位毎に分割する。また、処理単位毎に分割された命令が使用するデータの検索に際しては、命令のセマンティクスに関する情報、例えば、命令の内部構造に関する情報に基づいて分割命令毎の使用するデータの格納先の情報を予め取得しておき、取得した格納先の情報にしたがってデータを抽出する。
【００１５】
実行部３は、段階実行部２３を備える。段階実行部２３は、ユーザ端末１５から命令を実行すべき旨の指示を受信すると実行プログラム１２に対して実行要求３４を送り、分割された命令を１段階ごとに実行する。
【００１６】
表示・設定部４は、実行段階表示部２４、データ表示部２５、データ設定部２６を備える。実行段階表示部２４およびデータ表示部２５は、それぞれ命令分割情報３２およびデータ情報３３をデバッグ情報テーブル５から受け取る。また、実行プログラム１２から命令実行情報３５およびデータの値３７を受け取る。表示・設定部４はこれらの情報（命令実行情報３５およびデータの値３７）をもとにデバッグ情報３６を生成して端末１５に送信して画面上に表示する。
【００１７】
またデータ設定部２６は、ユーザが端末から入力したデータの値３７を受け取り、実行プログラム１２に送信して、データの値をユーザが指定した値に再設定する。以上説明した各処理部は、プログラムやオブジェクト、プロセス、スレッドで実現可能である。各処理部をハードウエアで実現することも可能である。
【００１８】
図３は、デバッグ対象の命令を複数の処理単位に分割し、さらに分割した命令が使用するデータの全てを抽出して表示する処理を説明する図である。
【００１９】
デバッガ１は、命令の分割及び分割した命令が使用するデータ（格納先）の抽出のため、命令のセマンティクスに関する情報を保持している。したがって、ユーザがデバッグすべき命令を指定すると、前記セマンティクスに関する情報に基づいて命令ごとに定めた分割規則に基づいて、ユーザが処理過程を認識しやすい単位に分割する。例えば、ＣＯＢＯＬのＳＴＲＩＮＧ文（複数の文字列を結合して、１つの文字列にする命令）の場合は、結果格納先のデータが更新される処理単位ごとに分割する。また分岐条件が複数ある条件分岐命令の場合は、各分岐条件の検査過程ごとに分割する。
【００２０】
また、命令が使用するデータの抽出の場合、同様に命令のセマンティクスに関する情報に基づいて抽出する。命令が使用するデータは、通常、命令文にオペランドとして明記されている。しかし、ＣＯＢＯＬのＶＡＬＩＤＡＴＥ文（後述）のように、命令文に記載されていないデータを更新する例もある。本実施形態のデバッガは、このＶＡＬＩＤＡＴＥ文のような命令であっても、前述のように予め取得した分割命令毎の使用するデータの格納先の情報をもとに前記データの格納先を検索することにより、命令が使用するデータを漏れなく抽出することができる。
【００２１】
ユーザは、端末１５に表示されたソースプログラム（図１の１３）のソースを見ながら、デバッグしたい命令を指定する（ステップ４１）。ユーザからの命令指定３１は解析部２に伝送され、解析部２内の命令分割部２１は、指定された命令のセマンティクスに関する情報に基づいて、前記命令を複数の処理単位に分割する（ステップ４２）。
【００２２】
同様に、解析部２内のデータ検索部２２は、前記命令が使用する全てのデータをプログラム中から抽出する（ステップ４３）。解析部２は、このようにして得た命令分割情報３２とデータ情報３３をデバッグ情報テーブル５に格納する。
【００２３】
表示・設定部４は、解析部２からの情報によって更新されたデバッグ情報テーブル５を参照して、デバッグ情報３６（命令分割情報３２およびデータ情報３３）を取得する。表示・設定部４内の実行段階表示部２４およびデータ表示部２５は、取得したデバッグ情報３６を端末１５に送信する（ステップ４４）。端末はこのデバッグ情報３６を画面に表示する（ステップ４５）。
【００２４】
図４は、図２に示す命令分割部２１によりデバッグ対象の命令を分割し、データ検索部２２により命令が使用するデータを抽出する処理を説明する図である。
【００２５】
まず、ユーザはデバッグ対象の命令を指定する（ステップ５１）。命令分割部２１はセマンティクスに関する情報をもとに前記命令を複数の処理単位に分割する（ステップ５２）。分割の規則は前述のように命令のセマンティクスに関する情報に基づいて、デバッガが命令ごとに定めている。分割の例は後述する。
【００２６】
次に、ステップ５３で示すループ処理内で、前記分割された命令の各処理単位を機械命令に対応付ける（ステップ５４）。デバッグ中の実行プログラムはコンパイラによって機械命令に翻訳されている。このため、ステップ５２において得られた処理単位と、該処理単位を実行する機械命令群とを対応付けることができる。例えば１番目および２番目の処理単位が、それぞれ１番目および４番目から始まる機械命令で実行できるとすると、「処理単位１と機械命令１」、「処理単位２と機械命令４」を対応付けることができる。対応付けの例は後述の図５で示す。
【００２７】
次に、命令が使用するデータをすべて抽出する（ステップ５５）。この処理は、前述のように命令のセマンティクスに関する情報に基づいて、デバッガが命令ごとに定めた規則に従って行う。次に、ステップ５６で示すループ処理内で、前記抽出したデータのすべてに対して、データのアドレス、型、長さなどの情報を取得する（ステップ５７）。
【００２８】
図５は、ＣＯＢＯＬ言語の文の１つであるＶＡＬＩＤＡＴＥ文を、図４に示す処理手順にしたがって、処理単位毎への分割、機械命令との対応付け、およびデータの抽出を行った結果を示した図である。
【００２９】
ＶＡＬＩＤＡＴＥ文とは、指定されたデータに対し、「１．形式妥当性検査」、「２．入力分配」、「３．内容妥当性検査」、「４．関係妥当性検査」、「５．誤り指摘」という５種類の処理を行う命令である。すなわち、１命令で複数の処理を行う命令を含むソースプログラムの文である。このうち「１．形式妥当性検査」、「３．内容妥当性検査」、「４．関係妥当性検査」の結果は、検査対象のデータと関連付けて定義された別のデータに格納される。この格納先データは、ＶＡＬＩＤＡＴＥ文のオペランドには指定されていない。
【００３０】
例えば、ソースプログラム６１のＶＡＬＩＤＡＴＥ文はデータＡ、Ｂ、Ｃを指定している。そして、データＳＡ１は「Ａの形式（ＦＯＲＭＡＴ）妥当性検査の結果が妥当（ＮＯ ＥＲＲＯＲ）である場合に“ＯＫ”という値を格納する」という設定で、データＡと関連付けられている。
【００３１】
このようにして、データＡに対し、前記３種類の妥当性検査がそれぞれ妥当、あるいは不当である場合の結果格納先として、６個のデータＳＡ１〜ＳＡ６（６４）が関連付けられている。データＢ、Ｃに対しても同様にＳＢ１〜ＳＢ６（６５）、ＳＣ１〜ＳＣ６（６６）が関連付けられている。
【００３２】
このように、命令文の中には明示的に指定されていないデータを使用する命令も存在する。このようなデータをユーザ自身が抽出して、デバッガに表示するように指定するのは、手間がかかるうえに漏れも生じやすい。本実施形態のデバッガにおけるデータ検索部２２は、このような命令の場合においても命令が使用するデータを検索することができる。
【００３３】
ＶＡＬＩＤＡＴＥ文は、以下の方法で処理単位に分割することができる。すなわち、ＶＡＬＩＤＡＴＥ文の処理は、前述の通り５段階に分かれており、デバッガもＶＡＬＩＤＡＴＥ文のこのようなセマンティクスを情報として保持している。したがって、命令の分割もこれらの処理単位に基づいて行う。また、ＶＡＬＩＤＡＴＥ文に複数のデータが指定されている場合、各データに対して上記の順で処理を行うとよい。ソースプログラム６１に示すように、ＶＡＬＩＤＡＴＥ文にはＡ、Ｂ、Ｃと３つのデータが指定されている場合、３×５＝１５段階の処理に分割する。したがって、命令分割結果はブロック６２に示すようになる。
【００３４】
また、処理単位と機械命令の対応付けは、次の要領で行う。すなわち、ＶＡＬＩＤＡＴＥ文はブロック６３に示すように、コンパイラによってすでに複数個の機械命令に翻訳されている。この結果を参照すると、例えば処理単位「１．Ａの形式妥当性検査」を実行する機械命令は１番目から始まり、「２．Ａの入力分配」は４番目から、・・・・、「１５．Ｃの誤り指摘」はｎ番目から始まることが分かる。したがってこの結果をもとに処理単位と機械命令を対応付けることができる。
【００３５】
図６は、図２に示すデバッグ情報テーブル５の詳細を説明する図である。デバッグ情報テーブル５は、デバッグ対象命令テーブル７１、処理単位テーブル７５、データテーブル８等から構成される。デバッグ対象命令テーブル７１は、最初の処理単位テーブル７５へのポインタ、及び最初のデータテーブル８３へのポインタを保持している。
【００３６】
デバッグ対象命令テーブル７１の「行」７２は、ユーザがデバッグ対象に指定した命令のソースプログラム上での行番号を表す。図６の場合、ソースプログラムの１８行目の命令をデバッグ対象としている。ここでは、１８行目の命令が前記ＶＡＬＩＤＡＴＥ文であるとする。
【００３７】
「処理単位」７３は、この命令の分割結果を格納した最初の処理単位テーブル７５へのポインタを保持している。
【００３８】
「データ」７４は、この命令が使用するデータの情報を格納した最初のデータテーブル８３へのポインタを保持している。
【００３９】
処理単位テーブル７５の「機」７６は、この処理単位に対応付けられた最初の機械命令の番号を表す。図５で示したように、１番目の処理単位「Ａの形式妥当性検査」は、１番目から始まる機械命令に対応付けられているため、「機」７６の値は１となる。
【００４０】
「処理単位の名称」７８は、各処理単位の手段を表す名称である。本実施形態のデバッガは、処理単位の機能を簡潔に表現した名称の一覧を内蔵しており、命令を分割した際にこれらの名称を処理単位に与える。例えばＶＡＬＩＤＡＴＥ文に対しては、「〜の形式妥当性検査」、「〜の入力分配」、・・・・という名称を付与する。「〜」の部分に「Ａ」などの文字を埋めて、「Ａの形式妥当性検査」などという名称を「処理単位の名称」７８に格納する。
【００４１】
「次」８０は、次の処理単位を格納した処理単位テーブル８１へのポインタを格納する領域である。図６の場合、２番目の処理単位「Ａの入力分配」のテーブルへのポインタが格納されている。図５に示すＶＡＬＩＤＡＴＥ文の場合、１５個の処理単位が存在するので、このような処理単位テーブルが１５個チェインされることになる。最後である１５番目の処理単位テーブルの「次」８０の領域には、ｎｕｌｌ値を格納しておく。
【００４２】
データテーブル８３の、「アドレス」８４、「型」８５、「長」８６、「名称」８７は、それぞれデータのメモリ上でのアドレス、データの型（整数、文字など）、データの長さ、データの名称を表す。なお、データの値が必要な場合は実行プログラムを参照すればよいので、データテーブル８３等にデータの値は格納しない。
【００４３】
「次」８８は、次のデータテーブル８９へのポインタを格納する領域である。図５のＶＡＬＩＤＡＴＥ文では、Ａ、Ｂ、Ｃ、ＳＡ１〜ＳＡ６、ＳＢ１〜ＳＢ６、ＳＣ１〜ＳＣ６の２１個のデータを使用するので、このようなデータテーブルが２１個チェインされることになる。最後であるＳＣ６のデータテーブルの「次」の領域には、ｎｕｌｌ値を格納する。
【００４４】
図７は、命令の分割結果およびデータの抽出結果を表示するデバッガ画面を説明する図である。
【００４５】
予めユーザは、ソースプログラムの１８行目にあるＶＡＬＩＤＡＴＥ文を、デバッグ対象の命令として指定しておき、デバッガにプログラムを実行させる。プログラムの実行が、ＶＡＬＩＤＡＴＥ文の実行直前に達すると、デバッガは実行を一時停止し、デバッガ画面９１のソース表示画面９２のＶＡＬＩＤＡＴＥ文の行に、現在実行段階（実行待ち）状態であることを示す印、例えば（●）を付して強調表示する。
【００４６】
同時にデバッガは、実行段階表示画面９３を表示し、図６の処理単位テーブル７５、８１等を参照して、命令の分割結果を表示する。実行段階表示画面９３に出力される情報は、図６に示す「処理単位の名称」７８である。また、ソース表示画面９２と同様に、実行段階表示画面９３の実行段階状態の処理単位には印（●）を付して強調表示する。ここでは初期状態として、最初の処理単位（「Ａの形式妥当性検査」）に印を表示している。
【００４７】
また、デバッガは、データ情報表示画面９４を表示し、図６に示すデータテーブル８３、８９等を参照して、データを抽出した結果を表示する。データの名称、型、長さはデータテーブルが保持している内容を表示し、データの値は実行プログラムを参照して表示する。
【００４８】
図８は、分割した命令を処理単位ごとに段階的に実行し、その実行状況を画面にリアルタイムで表示する際の処理を説明する図である。
【００４９】
デバッグ対象命令をその実行直前で一時停止させた状態において、ユーザは端末１５を操作して、命令を１段階実行するようデバッガに実行を指示する（ステップ１０１）。ユーザからの実行指示３８は実行部３に送信され、実行部３はデバッグ情報テーブル５に問い合わせて（ステップ３４）、「何番目の処理単位を実行すべきか」などの命令実行情報３５を取得する。取得した情報をもとに、実行部３内の段階実行部２３は命令の処理単位を１段階だけ実行する（ステップ１０２）。
【００５０】
更に、実行部３は、命令を１段階実行した旨の情報を命令実行情報３５として表示・設定部４に送信する。表示・設定部４は実行プログラムを参照してデータの値を収集し（ステップ１０４）、収集したデータをデータ情報３３として端末１５に送信する。この際、処理単位の実行によって値が更新されたデータを特定する情報も収集しておく。端末は前記データ情報３３をもとに画面上のデバッグ情報を更新して表示する（ステップ１０５）。
【００５１】
図９は、分割された命令の１番目の処理単位を実行した後のデバッガ画面を示す図である。デバッガ画面９１のソース表示画面９２において、ＶＡＬＩＤＡＴＥ文全体の実行が完了していないため、実行段階状態を示す印（●）の位置は（図７と比較して）変化していない。しかし、実行段階表示画面９３では、処理単位が１段階実行されたため、実行段階を表す印（●）の位置は、２番目の「Ａの入力分配」に移動する。
【００５２】
また、実行した処理単位「Ａの形式妥当性検査」の結果が「妥当」であったとすると、データＳＡ１に“ＯＫ”という文字が設定される。このように、データの値が更新された場合は、データ情報表示画面９４の、ＳＡ１の値の表示欄９５の値を更新し、さらに、データが更新されたことを例えば太字あるいは色の変更などで強調表示する。
【００５３】
以後は同様に、ユーザがデバッガに指示を与えるごとに、デバッガは命令の実行を１段階ずつ進める。実行段階およびその時点でのデータの値は、デバッガ画面９１にリアルタイムで表示される。このようにしてユーザは、データの値などの途中経過を確認しながら、命令を段階的に実行することができる。
【００５４】
図１０は、ユーザが命令が使用するデータＡの値を変更する際に使用するデバッガ画面を説明する図である。ユーザは命令を段階的に実行している途中において、デバッガ画面を用いてデータの値を変更入力し、以後の実行を継続することができる。
【００５５】
例えば、データＡの値は、図７あるいは図９のデバッガ画面９１のデータ情報表示画面９４に表示されるように１０である。この値を、例えば３０に変更して以後の実行を継続する場合には、まず、ユーザは、Ａの値の表示欄９７をダブルクリックする。すると表示欄９７は入力欄に切り替わり、ユーザの入力を受け付けるようになる。ユーザは元々１０であったＡの値の欄に３０を入力する。その後、実行再開をデバッガに指示する。これにより、実行プログラムのＡの値が３０に置き換えられた状態で命令が再開される。
【００５６】
図１１は、ユーザがデータの値を変更し、その後、命令を再実行する際の各部における処理およびデータの流れを説明する図である。
【００５７】
図１０で説明したようにユーザは端末１５の画面を操作してデータの値を入力する（ステップ１１１）。入力したデータの値３７は表示・設定部４に送信される。表示・設定部４内のデータ設定部２６は、この値を実行プログラム１２に設定する（ステップ１１２）。これにより、実行プログラム中のデータの値が変更される。その後、表示・設定部４は、実行部３に実行指示３８を送信する。実行部３は新たに設定されたデータの値を用いて実行プログラムを実行する（ステップ１１３）。
【００５８】
次に、実行部３は、命令を１段階実行した旨の情報を命令実行情報３５として表示・設定部４に送信する。表示・設定部４は実行プログラムを参照してデータの値を収集し（ステップ１０４）、収集したデータをデバッグ情報３６として端末１５に送信する。この際、処理単位の実行によって値が更新されたデータを特定する情報を収集しておく。端末はこのデバッグ情報３６をもとに画面上のデバッグ情報を更新して表示する（ステップ１１５）。
【００５９】
図１２は、複合条件を用いた条件分岐命令を含む命令の分割結果および分割された命令の実行結果を説明する図である。
【００６０】
条件分岐命令の例として、“ＩＦ Ｌ１＝Ｌ２ ＯＲ （Ｌ３＞＝１００ ＡＮＤ Ｌ３＜２００）”を使用する。また、各データの値は、デバッガ画面９１のデータ表示画面９４に示す通り、（Ｌ１、Ｌ２、Ｌ３）＝（１０、２０、１５０）であるとする。
【００６１】
複合条件を用いた条件分岐命令の場合、本実施形態のデバッガは個々の分岐条件ごとに命令を分割する。この例の場合、実行段階表示画面９３に示すように３つの分岐条件に分割する。
【００６２】
実行時には、まず分岐条件“Ｌ１＝Ｌ２？”を判定する。前述の通りＬ１とＬ２は等しくないので、判定の結果、実行段階表示画面９３に表示された分岐条件の左側に“×”を表示する（ステップ１２１）。次に、残り２つの分岐条件を判定する。Ｌ３＝１５０なので、これらの分岐条件を共に満たすため、分岐条件の左側に“○”を表示する（ステップ１２２）。
【００６３】
このように、この例では分岐条件の判定結果を明示的に示すことができる。これにより、ユーザは、分岐条件で参照しているデータの値を調べることなく容易に分岐条件の判定結果を知ることができる。また、分岐条件が複雑な複合条件である場合にも速やかに分岐条件の判定結果を知ることができる。
【００６４】
以上説明したように、本実施形態のデバッガによれば、複雑な処理を行う命令の実行結果が期待した結果と異なる場合に、異なる結果を生じさせる原因（バグ）がどの処理単位にあるかを速やかに確認することができる。また、命令が使用するデータを、デバッガが自動的に抽出して表示する。このため、ユーザが自らデータを検索する場合に比して手間が軽減され、また、検索漏れをなくすることができる。また、デバッグの途中でデータの値を変更して実行を継続できる。このため、入力データの値を変更して初めからやり直す場合に比して手間を軽減できる。また、命令を段階的に実行して、かつその命令が使用するデータの値の変化もリアルタイムに表示することができる。このため命令の処理過程のより詳細な分析を可能にし、デバッグに要する労力を軽減することができる。
【図面の簡単な説明】
【００６５】
【図１】本実施形態にかかるデバッガの構成を説明する図である。
【図２】デバッガを構成する各部の詳細および各種段間における情報の流れを説明する図である。
【図３】デバッグ対象の命令を複数の処理単位に分割し、分割した命令が使用するデータを抽出して表示する処理を説明する図である。
【図４】デバッグ対象の命令の分割および命令が使用するデータの抽出処理を説明する図である。
【図５】処理単位への分割、機械命令との対応付けおよびデータの抽出の結果を示す図である。
【図６】デバッグ情報テーブルの詳細を説明する図である。
【図７】命令の分割結果およびデータの抽出結果を表示するデバッガ画面を説明する図である。
【図８】分割した命令を処理単位ごとに実行し、その実行状況を画面にリアルタイムで表示する際の処理を説明する図である。
【図９】分割された命令の１番目の処理単位を実行した後のデバッガ画面を示す図である。
【図１０】データの値を変更する際に使用するデバッガ画面を説明する図である。
【図１１】ユーザがデータの値を変更し、その後、命令を再実行する際における処理およびデータの流れを説明する図である。
【図１２】複合条件を用いた条件分岐命令を含む命令の分割結果および分割された命令の実行結果を説明する図である。
【符号の説明】
【００６６】
１  デバッガ
２  解析部
３  実行部
４  表示・設定部
５  デバッグ情報テーブル
１２  実行プログラム
１３  ソースプログラム
１５  端末
２１  命令分割部
２２  データ検索部
２３  段階実行部
２４  実行段階表示部
２５  データ表示部
２６  データ設定部
７１  デバッグ対象命令テーブル
７５  処理単位テーブル
８３  データテーブル
９１  デバッガ画面
９２  ソース表示画面
９３  実行段階表示画面
９４  データ情報表示画面
【図１】
2006003987.tif 000003
【図２】
2006003987.tif 000004
【図３】
2006003987.tif 000005
【図４】
2006003987.tif 000006
【図５】
2006003987.tif 000007
【図６】
2006003987.tif 000008
【図７】
2006003987.tif 000009
【図８】
2006003987.tif 000010
【図９】
2006003987.tif 000011
【図１０】
2006003987.tif 000012
【図１１】
2006003987.tif 000013
【図１２】
2006003987.tif 000014