(57)【要約】【課題】確実に暴走を防ぐことができ、精度よく適切な場合にのみ停止を行なうことができ、かつ、操作が簡単であるデバッグ装置を提供する。【解決手段】予め定められた実行装置によるプログラムの実行を停止させるデバッグ装置であって、ユーザにより指定された停止指定位置を取得する停止指定位置取得部と、当該停止指定位置の命令が前記実行装置により実行される際に、当該プログラムの実行を停止させる第１の停止制御部と、前記実行装置により、前記プログラムが、前記停止指定位置の取得の際の現在のプログラム停止位置を含むスコープを越えて実行される場合に、前記停止指定位置の命令が実行されていない場合には、当該プログラムの実行を停止させる第２の停止制御部とを備えるデバッグ装置。【選択図】図２
2010067196.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた実行装置によるプログラムの実行を停止させるデバッグ装置であって、
ユーザにより指定された停止指定位置を取得する停止指定位置取得部と、
当該停止指定位置の命令が前記実行装置により実行される際に、当該プログラムの実行を停止させる第１の停止制御部と、
前記実行装置により、前記プログラムの命令が、前記停止指定位置の取得の際の現在のプログラム停止位置を含むスコープを越えて実行される際に、前記停止指定位置の命令が実行されていない場合には、当該プログラムの実行を停止させる第２の停止制御部とを備えるデバッグ装置。
【請求項２】
前記第２の停止制御部は、取得された前記停止指定位置が前記スコープに含まれる場合のみ、前記停止を行わせ、含まれない場合には前記停止を行わせない請求項１記載のデバッグ装置。
【請求項３】
前記実行装置により、前記プログラムの命令が、前記スコープを越えて実行される位置を検出する第１の検出部と、
前記停止指定位置の命令が実行されることを検出する第２の検出部とを備え、
前記第２の停止制御部は、取得された前記停止指定位置が前記スコープに含まれる場合において、前記第１の検出部により前記検出がされた際に、前記取得から当該検出までの間に前記第２の検出部による前記検出がされなかった場合に、前記停止を行わせ、当該検出がされた場合には、前記停止を行わせない請求項２記載のデバッグ装置。
【請求項４】
前記プログラムの命令が前記スコープを越えて実行される際に前記第２の停止制御部が前記プログラムの実行を停止させた場合に、予め定められた通知を行う通知部を備える請求項１〜３の何れかに記載のデバッグ装置。
【請求項５】
前記プログラムの命令が前記スコープを越えて実行される際に前記第２の停止制御部が前記プログラムの実行を停止させた場合に、予め定められた条件が成立するならば、停止された位置の次の位置の命令から、当該停止の後に、前記プログラムの実行を前記実行装置に継続させる継続実行制御部を備える請求項１〜４の何れかに記載のデバッグ装置。
【請求項６】
前記スコープは、前記プログラムに含まれる関数である請求項１〜５の何れかに記載のデバッグ装置。
【請求項７】
前記スコープは、前記プログラムに含まれるファイルである請求項１〜５の何れかに記載のデバッグ装置。
【請求項８】
前記スコープは、前記プログラムに含まれるモジュールである請求項１〜５の何れかに記載のデバッグ装置。
【請求項９】
前記プログラムの命令が前記スコープを越えて実行される際に前記第２の停止制御部が前記停止をさせる前記スコープを変更するスコープ変更部を備える請求項６〜８の何れかに記載のデバッグ装置。
【請求項１０】
前記第２の停止制御部は、前記プログラムの命令が前記スコープを越えて実行された後に、当該スコープの外部の位置の命令の実行時に前記停止をさせる請求項１〜５の何れかに記載のデバッグ装置。
【請求項１１】
前記第２の停止制御部は、前記プログラムの命令が前記スコープを越えて実行される際に、当該スコープの内部の位置の命令の実行時に前記停止をさせる請求項１〜５の何れかに記載のデバッグ装置。
【請求項１２】
前記プログラムにおける前記スコープの外部の位置と、前記スコープの内部の位置との何れかを指定する位置指定部を備え、
前記第２の停止制御部は、前記位置指定部により指定された位置の命令の実行時に前記停止をさせる請求項１〜５の何れかに記載のデバッグ装置。
【請求項１３】
予め定められた実行装置によるプログラムの実行を停止させるデバッグ方法であって、
ユーザにより指定された停止指定位置を取得する停止指定位置取得ステップと、
当該停止指定位置の命令が前記実行装置により実行される際に、当該プログラムの実行を停止させる第１の停止制御ステップと、
前記実行装置により、前記プログラムの命令が、前記停止指定位置の取得の際の現在のプログラム停止位置を含むスコープを越えて実行される際に、前記停止指定位置の命令が実行されていない場合、当該プログラムの実行を停止させる第２の停止制御ステップとを備えるデバッグ方法。
【請求項１４】
前記プログラムの命令が前記スコープを越えて実行された際、前記停止がされた場合に、予め定められた通知を行う通知ステップを備える請求項１３記載のデバッグ方法。
【請求項１５】
前記プログラムの命令が前記スコープを越えて実行される際に前記第２の停止制御部が前記プログラムの実行を停止させた場合に、予め定められた条件が成立するならば、停止された位置の次の位置の命令から、当該停止の後に、前記プログラムの実行を前記実行装置に継続させる継続実行制御ステップを備える請求項１３又は１４に記載のデバッグ方法。
【請求項１６】
前記プログラムに含まれる関数と、当該プログラムの一部をなすファイルと、当該プログラムに含まれるモジュールとの各スコープのうちから１つを選択し、前記第２の停止制御ステップにおいて前記プログラムの命令が実行される際に前記停止がされる前記スコープを、選択したスコープに変更するスコープ変更ステップを備える請求項１３〜１５の何れかに記載のデバッグ方法。
【請求項１７】
前記プログラムにおける前記スコープの外部の位置と、前記スコープの内部の位置との何れかを指定する位置指定ステップを備え、
前記第２の停止制御ステップでは、指定された位置の命令の実行時に前記停止をさせる請求項１３〜１６の何れかに記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現在のプログラム停止位置から指定されたプログラム位置までプログラムを実行するデバッグ装置に関し、特に、指定されたプログラム位置までプログラムが実行されない場合、実行中のプログラムを停止させ、利用者の期待していないプログラムの実行を防ぐことによって、ソフトウェア開発者のプログラム開発を支援するデバッグ装置に関する。
【背景技術】
【０００２】
プロセッサ上で動作するプログラムの実行を一時的に停止させてプログラムの実行状態を表示するデバッグ装置は、プログラム開発において有用である。デバッグ装置では、指定されたプログラム位置に停止命令を設定し、プログラムを一時的に停止させることが可能である。
【０００３】
この指定されたプログラム位置に停止命令を設定し、プログラムを一時的に停止させる手段によって、現在のプログラム停止位置から、指定されたプログラム位置までプログラムを実行することは周知の手段である。例えば、キーボードから任意のアドレスやソースコード上の任意の行を入力し、プログラム位置を指定し、実行するというＣＵＩ操作や、キーボードからカーソルを動かしプログラム位置を指定するか、マウスポインタによってプログラム位置を指定し実行するというＧＵＩ操作を特徴とする図１３に示すようなデバッグ装置が考えられている。
【０００４】
図１３は、従来のデバッグ装置の構成を示すブロック図である。
【０００５】
図１３に示す従来のデバッグ装置は、入力受付部２１ｘによって、利用者の操作に従って入力装置から指定されたプログラム位置を受け付け、停止命令設定部２５ｘによって、受け付けられたプログラム位置に停止命令を設定し、実行制御部２６ｘによって、プログラムの実行または停止を制御する。そして、従来のデバッグ装置は、指定されたプログラム位置で実行中のプログラムが停止した場合、利用者に対して通知を行う。上記特徴を利用したデバッグ装置に特許文献１のデバッグ装置がある。
【０００６】
特許文献１に記載された従来のデバッグ装置は、デバッグ対象のプログラムのソースコードを表示する表示部と、上記表示部上に表示される上記ソースコード中におけるカーソル位置に、ブロックの区切りを設定するブロック区切り設定部と、ブロックの区切りに境界を示すブロック区切り文字を表示するブロック区切り表示部と、上記表示部上の上記ソースコード中の、現在の実行開始行から前を、ブロック区切り文字を検索して、プログラムの実行開始位置をそのブロック区切り文字の次の行に設定するブロック先頭検索部と、実行開始行から後ろにあるブロック区切り文字を検索してその行まで実行するブロック実行部と、現在の実行開始行を含むブロックの先頭から末尾までを１操作で実行する現ブロック実行部と、現在の実行開始行から次のブロックの末尾までを実行する次ブロック実行部とから構成される、ブロック実行制御部を備えるデバッグ装置である。加えて、ブロック区切り文字が見つからない場合には、関数の末尾をブロックの区切りとして扱うことができ、ブロック単位での実行や繰り返し実行を、操作ミスや勘違いなく行うデバッグ装置であると特許文献１は開示している。
【特許文献１】特開２００２−２７８７９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上述のデバッグ装置においては、指定されたプログラム位置までプログラムを実行することを期待するが、プログラムが指定されたプログラム位置まで実行されない場合がある。例えば、指定されたプログラム位置が既に実行され、今後実行されない場合や、条件分岐または条件付命令によって実行されない場合が考えられる。その場合、デバッグ対象であるスコープから実行中のプログラムが外れてしまい、プログラムのデバッグが継続できなくなるという課題がある。
【０００８】
図４を用いて具体例を挙げると、現在のプログラム停止位置Ｍ１が存在する場合、利用者の誤った推測に基づいた操作により現在のプログラム停止位置Ｍ１から指定プログラム位置Ｃ１まで実行した場合、利用者は指定プログラム位置Ｃ１が実行されることを期待しているが、条件分岐によって指定プログラム位置Ｃ１は実行されずに利用者のデバッグ対象とするスコープである関数を越えてプログラムが実行されてしまうため、利用者がプログラムの実行状態を正しく認識できず、デバッグ作業がスムーズに行えない。また利用者が、指定プログラム位置Ｃ１が実行されプログラムが停止することを期待し、意図的にレジスタの値などを変更し、指定プログラム位置Ｃ１まで実行した場合は、プログラムが正常に動作せず、プログラムのデバッグが継続できなくなる。
【０００９】
その課題に対する回避方法として、必ず実行されるプログラム位置を利用者が推測し、そのプログラム位置に停止命令を設定しなければならない。図１１を用いて具体的に説明すると、必ず実行されるプログラム位置である未実行停止位置Ｍ９に停止命令を設定する必要がある。この回避方法は、必ず実行されるプログラム位置に停止命令を設定するという操作を必要としており、デバッグ作業には不必要な操作である。
【００１０】
特許文献１においては、ブロック区切り文字が見つからない場合には、関数の末尾をブロックの区切りとして扱うことによって、必ず関数の末尾でプログラムを停止してしまうため、不必要なプログラムの停止を発生させ、効率的なデバッグを行うことの妨げになるという課題がある。図８を用いて具体的に説明すると、現在のプログラム位置Ｍ５、指定プログラム位置Ｃ２が存在する場合、利用者のデバッグ対象とするスコープとは異なる関数であるにも係わらず、現在のプログラム位置Ｍ５からプログラムが実行されると、必ず最初に実行される関数の末尾でプログラムが停止してしまう。加えて、ブロック区切りを設定するという操作方法が追加されるため利用者側の学習が必要であるという課題がある。
【００１１】
本発明は、従来デバッグ装置の操作方法を変更することなく、上記課題を解決すること、並びにデバッグ作業者の負担を軽減しデバッグ作業の効率を向上させることを特徴とするデバッグ装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明のデバッグ装置は、次の構成を採る。
【００１３】
本発明のデバッグ装置は、予め定められた実行装置によるプログラムの実行を停止させるデバッグ装置であって、ユーザにより指定された停止指定位置を取得する停止指定位置取得部と、当該停止指定位置の命令が前記実行装置により実行される際に、当該プログラムの実行を停止させる第１の停止制御部と、前記実行装置により、前記プログラムの命令が、前記停止指定位置の取得の際の現在のプログラム停止位置を含むスコープを越えて実行される際に、前記停止指定位置の命令が実行されていない場合には、当該プログラムの実行を停止させる第２の停止制御部とを備えるデバッグ装置である。
【００１４】
また、次のようなデバッグ装置が構成されてもよい。
【００１５】
第１のデバッグ装置は、現在のプログラム停止位置から指定されたプログラム位置までプログラムを実行するデバッグ装置であって、現在のプログラム停止位置と指定されたプログラム位置とが同一スコープに存在しており、かつ指定されたプログラム位置まで実行されず、プログラムが現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えて実行される場合に実行中のプログラムを停止させるデバッグ装置である。
【００１６】
この第１のデバッグ装置であれば、従来デバッグ装置の操作を変更することなく、操作が簡単であり、かつ、利用者がデバッグ対象としているスコープを越えてプログラムが実行される場合に、停止の位置が指定されていないか又は指定された位置で過去に停止が行われなかったときにのみ、プログラムの停止をさせることができ、不必要なプログラムの停止を発生させることがない。
【００１７】
第２のデバッグ装置は、
指定されたプログラム位置まで実行されず、プログラムが現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えて実行される場合に、実行中のプログラムを停止させた場合、
指定されたプログラム位置まで実行されなかったことを通知するデバッグ装置である。
【００１８】
この第２のデバッグ装置であれば、指定されたプログラム位置まで実行されなかったことを利用者が知ることができる。
【００１９】
第３のデバッグ装置は、
指定されたプログラム位置まで実行されず、プログラムが現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えて実行される場合に、実行中のプログラムを停止させた場合、プログラムの継続実行をするか否かを変更可能とするデバッグ装置である。
【００２０】
この第３のデバッグ装置であれば、プログラムが指定されたプログラム位置まで実行されなかった場合、予め継続実行を行うことを設定しておけば、利用者による継続実行するという操作を削減することができる。
【００２１】
第４のデバッグ装置は、
本発明の第１、第２及び第３の何れかに記載の同一スコープの定義を関数とし、
指定されたプログラム位置まで実行されず、プログラムが現在のプログラム停止位置と指定されたプログラム位置との同一関数を越えて実行される場合に実行中のプログラムを停止させることと、指定されたプログラム位置まで実行されなかったことを通知することと、さらにプログラムの継続実行をするか否かを変更するデバッグ装置である。
【００２２】
この第４のデバッグ装置であれば、利用者のデバッグ対象とする範囲を、関数単位として扱うことができる。
【００２３】
第５のデバッグ装置は、
本発明の第１、第２及び第３の何れかに記載の同一スコープの定義をファイルとするデバッグ装置である。
【００２４】
この第５のデバッグ装置であれば、利用者のデバッグ対象とする範囲を、ファイル単位として扱うことができる。
【００２５】
第６のデバッグ装置は、
本発明の第１、第２及び第３の何れかに記載の同一スコープの定義をモジュールとするデバッグ装置である。
【００２６】
この第６のデバッグ装置であれば、利用者のデバッグ対象とする範囲を、モジュール単位として扱うことができる。
【００２７】
第７のデバッグ装置は、
本発明の第４、第５及び第６の何れかに記載の同一スコープの定義を変更可能とするデバッグ装置である。
【００２８】
これにより、利用者によってデバッグ対象とするスコープを任意変更することができるため、デバッグ対象とするスコープを越えてプログラムが実行される場合にのみプログラムの停止や通知や継続実行をさせることができるため、不必要なプログラムの停止を発生させることがないという、さらなるデバッグ作業の向上ができる。
【００２９】
第８のデバッグ装置は、
プログラムが現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えて実行される場合に、実行中のプログラムを同一スコープの外部で停止させるデバッグ装置である。
【００３０】
この第８のデバッグ装置であれば、指定されたプログラム位置まで実行されず、プログラムが同一スコープを越えて実行された状況においてプログラムの停止を発生させることができるため、利用者に対して、次なるデバッグ対象となるスコープの状況を提示することができる。
【００３１】
第９のデバッグ装置は、
プログラムが現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えて実行される場合に、実行中のプログラムを同一スコープの内部で停止させるデバッグ装置である。
【００３２】
この第９のデバッグ装置であれば、利用者は、同一スコープの内部で使用された局所変数の値、レジスタデータを参照することが可能となり、指定されたプログラム位置まで実行されなかったことを解析することができる。
【００３３】
第１０のデバッグ装置は、
本発明の第８または第９記載のプログラムが現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えて実行される場合に、実行中のプログラムを停止させる位置を同一スコープの外部か同一スコープの内部かを変更可能とするデバッグ装置である。
【００３４】
この第１０のデバッグ装置であれば、利用者が同一スコープの外部で停止させるのか、同一スコープの内部で停止させるのかを変更できる。
【００３５】
第１のデバッグ方法は、
現在のプログラム停止位置から指定されたプログラム位置までプログラムを実行するデバッグ方法であって、
現在のプログラム停止位置と指定されたプログラム位置とが同一スコープに存在するか否かを解析するステップと、
前記スコープ解析ステップの解析結果から、指定されたプログラム位置と、プログラムが前記同一スコープを越えて実行される位置とを停止位置とするか、指定されたプログラム位置のみを停止位置とするかを切り替えるステップと、
前記同一スコープを越えてプログラムが実行される位置を解析するステップと
を有するデバッグ方法である。
【００３６】
この第１のデバッグ方法であれば、従来のデバッグ方法の操作を変更することなく、さらに、利用者がデバッグ対象としているスコープを越えてプログラムが実行される場合にプログラムの停止をさせることができ、不必要なプログラムの停止を発生させることがないようにできる。
【００３７】
第２のデバッグ方法は、
指定されたプログラム位置まで実行されず、現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えてプログラムが実行される位置において、プログラムが停止したことを検出した場合、指定されたプログラム位置で停止しなかったことを通知するステップ
を有するデバッグ方法である。
【００３８】
この第２のデバッグ方法であれば、指定されたプログラム位置まで実行されなかったことを利用者が知ることができる。
【００３９】
第３のデバッグ方法は、
指定されたプログラム位置まで実行されず、現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えてプログラムが実行される位置において、プログラムが停止したことを検出した場合、継続実行をするか否かを判断するステップ
を有するデバッグ方法である。
【００４０】
この第３のデバッグ方法であれば、指定されたプログラム位置まで実行されなかった場合、予め継続実行を行うことを設定しておけば、利用者による継続実行するという操作を削減することができる。
【００４１】
第４のデバッグ方法は、
現在のプログラム停止位置と指定されたプログラム位置との同一スコープの定義を関数、ファイル及びモジュールの何れかに変更するステップ
を有するデバッグ方法である。
【００４２】
この第４のデバッグ方法であれば、利用者によってデバッグ対象とするスコープを任意変更することができるため、デバッグ対象とするスコープを越えてプログラムが実行される場合にのみプログラムの停止や通知や継続実行をさせることができるため、不必要なプログラムの停止を発生させることがないという、さらなるデバッグ作業の向上ができる。
【００４３】
第５のデバッグ方法は、
現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えてプログラムが実行される位置を前記同一スコープの外部とするか、前記同一スコープの内部とするかを変更するステップ
を有するデバッグ方法である。
【００４４】
この第５のデバッグ方法であれば、利用者が同一スコープの外部で停止させるのか、同一スコープの内部で停止させるのかを変更できる。
【００４５】
また、次の構成を採ってもよい。
【００４６】
すなわち、現在のプログラム停止位置と指定されたプログラム位置とが同一スコープに存在しており、指定されたプログラム位置まで実行されず、プログラムが現在のプログラム停止位置と指定されたプログラム位置との同一スコープを越えて実行される場合に実行中のプログラムを停止させることを特徴とするデバッグ装置である。かかる構成により、利用者は、プログラムがデバッグ対象としているスコープを越えて実行される場合にプログラムの停止をさせることができる。そして、これにより、指定されたプログラム位置までプログラムが実行することを期待するデバッグ装置において、指定されたプログラム位置までプログラムが実行されない場合、デバッグ対象である同一スコープを越えてプログラムが実行され、プログラムのデバッグが継続できなくなる問題が解決できる。
【発明の効果】
【００４７】
本発明のデバッグ装置によれば、デバッグ対象であるスコープを越えてプログラムが実行される場合、プログラムの停止を発生させることができるという効果があり、利用者が必ず実行されるプログラム位置に停止命令を設定するという操作を削除できる。また、現在のプログラム停止位置と指定されたプログラム位置が同一スコープに存在する場合のみ、プログラムの停止を発生させることができるため、利用者がデバッグ対象としていないスコープにおいて、不必要なプログラムの停止を発生させることがないという効果がある。また、従来デバッグ装置の操作方法を変更することがないため利用者側の学習を必要としないという効果がある。
【００４８】
さらに加えて、指定されたプログラム位置まで実行されなかったことを通知することもできるという効果と、指定されたプログラム位置が実行されない場合、プログラムの停止を発生させた後、継続実行をさせることもできるという効果がある。
【００４９】
また本発明のデバッグ方法についても上記デバッグ装置と同様の作用効果を有する。
【発明を実施するための最良の形態】
【００５０】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【００５１】
（実施の形態１）
本発明の実施の形態１に係るデバッグ装置２について説明する。
【００５２】
図１は、本発明の実施の形態１におけるデバッグシステム１の外観を示す図である。
【００５３】
デバッグシステム１は、デバッグ装置２と、プログラム実行装置３とを備える。そして、デバッグ装置２は、本体装置２Ａと、表示装置２Ｂと、入力装置２Ｃとを備える。
【００５４】
本体装置２Ａは、デバッグ装置２の利用者からの各種操作指示を、入力装置２Ｃを介して受け、プログラム実行装置３に対して、デバッグ対象プログラムの実行を制御し、実行状態を表示装置２Ｂにより表示する装置である。
【００５５】
なお、入力装置２Ｃは、利用者によってプログラム位置を指定できる装置である。
【００５６】
プログラム実行装置３は、デバッグ対象プログラムを実行するプロセッサ（またはプロセッサを備える評価用ボード）の動作をする情報処理装置であり、ケーブル４を介してデバッグ装置２から制御される。
【００５７】
なお、プログラム実行装置３は、プロセッサ（またはプロセッサを備える評価用ボード）の動作を模倣するシミュレーションソフトの機能ブロックであってもよい。また、デバッグ装置２上で、上記シミュレーションソフトウェアをも実行してもよい。つまり、デバッグ装置２は、プログラム実行装置３と兼用されてもよい。
【００５８】
図２は、本体装置２Ａの構成を機能的に示すブロック図である。
【００５９】
本体装置２Ａは、図２に示されるように、入力受付部２１と、スコープ解析部２２と、停止位置切替部２３と、停止位置解析部２４と、停止命令設定部２５と、実行制御部２６と、インタフェース部２７と、未実行通知部２８と、表示制御部２９とを備える。
【００６０】
実行制御部２６は、内部に継続実行制御部２６ａを備える。
【００６１】
以下、それらの各ブロックを説明する。
【００６２】
入力受付部２１は、デバッグ装置２を利用する利用者の操作に従って入力装置２Ｃから、プログラムを停止する位置を指定する位置指定操作と、この位置指定操作により指定されたプログラム位置（以下指定プログラム位置と呼ぶ）まで、プログラムを実行させる実行操作とをそれぞれ受け付け、位置指定操作により指定される指定プログラム位置を、スコープ解析部２２および停止位置切替部２３へそれぞれ出力する。
【００６３】
なお、指定されたプログラム位置（指定プログラム位置）まで実行させる上記実行操作では、例えば、利用者によって任意に選択されたソースコード行、ニーモニックコード行、アドレスの何れかがプログラム位置として指定されるものとしてもよい。
【００６４】
スコープ解析部２２は、入力受付部２１による指定プログラム位置と、現在のプログラム停止位置（すなわちプログラムカウンタにより示されるプログラムの位置）とを入力とし、入力された現在のプログラム停止位置と、位置指定操作により指定された指定プログラム位置とが、同一スコープに存在するか否かを解析する。そして、スコープ解析部２２は、この解析により得られる、上記同一スコープに存在するか否かの解析結果と、上記同一スコープの先頭アドレス、後方アドレスなどのスコープ情報とを、停止位置切替部２３および停止位置解析部２４へそれぞれ出力する。
【００６５】
なお、スコープ情報は、複数ある場合も考えられる。
【００６６】
また、例えば、上記したスコープの同一についての解析の方法、つまり、上記２つの位置が同一スコープに存在するか否かを解析する方法、及び、解析を行うスコープの情報を取得する方法は、コンパイル装置によって生成されるオブジェクトファイルに付与されるデバッグ情報を用いて解析できる。例えば、このような解析をする技術のうちで、周知の技術を用いてもよい。なお、詳しい説明は省略する。
【００６７】
停止位置切替部２３は、同一のスコープに存在するか否かを解析する上記スコープ解析部２２により入力される上記解析の解析結果と、位置指定操作により指定された指定プログラム位置とを用いて、指定された指定プログラム位置と、停止位置解析部２４が出力する停止位置との両者に停止命令を設定するか、あるいは、指定された指定プログラム位置のみに停止命令を設定するかを切り替える。
【００６８】
停止位置解析部２４は、スタックデータ、レジスタデータ、スコープ解析部２２によるスコープ情報を入力とする。停止位置解析部２４は、まず、スタックに格納されている呼び出し処理の次命令アドレス（以下リターンアドレスと呼ぶ）を停止位置として取得する。停止位置解析部２４は、上記リターンアドレスが格納されているレジスタ（以下リンクレジスタと呼ぶ）をプロセッサが保持している場合は、そのリンクレジスタの値を停止位置として取得するものとしてもよい。そして、停止位置解析部２４は、上記停止位置がスコープ解析部２２による同一スコープである場合、スタックに保存されているレジスタデータを復帰させ、スタックポインタの値を変更し、スタックに格納されている上位呼び出し処理の次命令リターンアドレスまたはリンクレジスタの値から停止位置を取得する。そして、停止位置解析部２４は、これらを繰り返すことによって、同一スコープ外の停止位置（以下未実行停止位置と呼ぶ）を取得する。
【００６９】
そして、停止位置解析部２４は、取得された未実行停止位置を、停止命令設定部２５へ出力する。なお、停止位置解析部２４は、最上位の呼び出し処理まで探し続けても未実行停止位置を取得できない場合は、最後に取得した停止位置を未実行停止位置として用いることにしてもよい。
【００７０】
なお、スタック操作に関する詳細は、周知の技術であるため、説明を省略する。
【００７１】
停止命令設定部２５は、指定プログラム位置及び未実行停止位置の両者、または、指定プログラム位置のみを入力とし、実行制御部２６に対して、入力に対応した停止命令を設定する位置情報を出力する。また、停止命令設定部２５は、実行中のプログラムを停止させるための停止命令を、インタフェース部２７を用いてプログラム実行装置３に設定する。
【００７２】
なお、停止命令設定部２５は、プログラム実行装置３上に、実行中のプログラムを停止させるための資源が存在する場合、その資源を利用して実行中のプログラムを停止させるための設定を行ってもよい。
【００７３】
実行制御部２６は、プログラムの実行制御または停止制御などインタフェース部２７の制御を行う。なお、実行制御部２６は、図２には明示していないが、本体装置２Ａを構成する各ブロックに対して、それぞれ、プログラム実行装置３の状態、スタックデータ、レジスタデータ、命令コード、デバッグ装置２内部で保持しているデータを各々出力することができる。
【００７４】
継続実行制御部２６ａは、予め継続実行をすることを設定されている場合、上記未実行停止位置でプログラムが停止した場合、実行制御部２６によるプログラムの実行を行うことができる。継続実行制御部２６ａは、継続実行をするか否かの設定が、例えば、利用者の操作に従って入力装置２Ｃから設定される。なお、継続実行制御部２６ａは、設定ファイルなどを本体装置２Ａに用意しておくことによって、利用者の操作なしで、用意された設定ファイルなどに基づいて、継続実行の設定を変更するものとしてもよい。
【００７５】
インタフェース部２７は、プログラム実行装置３に対する実行制御信号を出力し、その応答信号、スタックデータ、レジスタデータ、命令コードなどをプログラム実行装置３から受ける。
【００７６】
未実行通知部２８は、指定プログラム位置でプログラムが停止せず、未実行停止位置でプログラムが停止した情報を、実行制御部２６から取得し、表示制御部２９へ、指定された指定停止位置でプログラムが停止しなかった情報を出力する。
【００７７】
表示制御部２９は、各種ウィンドウの表示データを生成し、表示装置２Ｂにおける表示を制御する。
【００７８】
以上のように構成された実施の形態１におけるデバッグ装置２について、以下その具体的な動作について説明する。
【００７９】
図３は、実施の形態１に使用するデバッグ対象のプログラムに関する、プログラムソースコードＳ１、プログラムソースコードＳ２を示す図である。
【００８０】
図４は、実施の形態１の表示装置２Ｂに本体装置２Ａが表示させる画面を示す図である。
【００８１】
図４の画面は、ソースコードウィンドウＷ１、メッセージウィンドウＷ２、命令コードウィンドウＷ３、操作入力ウィンドウＷ４を表示している。図４の画面は、表示装置２Ｂが表示させる画面である。
【００８２】
ソースコードウィンドウＷ１は、デバッグ対象となるソースコード、現在のプログラム停止位置（プログラム停止位置Ｍ１参照）、利用者による指定プログラム位置などを表示することができる。
【００８３】
命令コードウィンドウＷ３は、デバッグ対象となる命令コード、現在のプログラム停止位置（プログラム停止位置Ｍ２参照）、利用者による指定プログラム位置などを表示することができる。
【００８４】
メッセージウィンドウＷ２は、利用者へ通知したいメッセージを表示することができ、指定プログラム位置でプログラムが停止したことや、指定プログラム位置で停止しなかったことのメッセージなどを表示することができる。なお、メッセージウィンドウＷ２は、図４の例では、文字列により通知を行うが、文字列でなく、色などで利用者に通知をしてもよい。
【００８５】
操作入力ウィンドウＷ４は、入力装置２Ｃから入力される操作内容を表示することができる。
【００８６】
以下では、図４のように、デバッグ対象のプログラムが、ソースコードウィンドウＷ１上における現在のプログラム停止位置Ｍ１並びに命令コードウィンドウＷ３上における現在のプログラム停止位置Ｍ２で停止している場合において、利用者によって、指定プログラム位置Ｃ１まで実行し、指定プログラム位置Ｃ１で停止するという位置操作がされた場合の処理を説明する。
【００８７】
図５は、本体装置２Ａが、図４の画面を表示させた後、プログラムが未実行停止位置（未実行停止位置Ｍ３、未実行停止位置Ｍ４）で停止した時に表示させる画面を示す図である。
【００８８】
プログラム実行装置３は、指定プログラム位置Ｃ１が実行されずに、現在のプログラム停止位置Ｍ１並びにＭ２と、指定プログラム位置Ｃ１との同一スコープを越えて、プログラムが実行される場合に、図５に示されるように、ソースコードウィンドウＷ１上に示される未実行停止位置Ｍ３（命令コードウィンドウＷ３上における未実行停止位置Ｍ４）で、プログラムの実行を停止する。そして、こうしてプログラムの実行が停止された場合に、本体装置２Ａによって、メッセージウィンドウＷ２に、指定された位置（指定プログラム位置）に停止しなかったことを通知するためのメッセージが表示される。
【００８９】
以下、実施の形態１における本体装置２Ａの各ブロックの処理の流れを、図６と図７を用いて説明する。図中の従来処理に関しては説明を省略する。
【００９０】
図６は、デバッグシステム１の処理を示すフローチャートである。
【００９１】
処理１においては、入力受付部２１が、入力装置２Ｃから、指定プログラム位置Ｃ１で実行するという、利用者による位置指定操作を受け付ける。
【００９２】
処理２においては、スコープ解析部２２が、現在のプログラム停止位置Ｍ１並びにＭ２と、処理１において入力受付部２１により受け付けられた位置指定操作が示す指定プログラム位置Ｃ１が、同一スコープに存在するか否かを解析するスコープ解析処理を行う。
【００９３】
処理３においては、停止位置切替部２３が、従来処理である、指定プログラム位置Ｃ１にのみ停止命令を設定するか、あるいは、指定プログラム位置Ｃ１と、停止位置解析部２４による未実行停止位置Ｍ３並びにＭ４との両者にそれぞれ停止命令を設定するかを切り替える。
【００９４】
そして、この処理３によって、本体装置２Ａは、同一スコープ内に存在する場合は（処理３：Ｙｅｓ）、処理４へ移り、同一スコープ内に存在しない場合は（処理３：Ｎｏ）、従来デバッグ装置による指定されたプログラム位置Ｃ１まで実行する処理である、従来処理へ移る。
【００９５】
処理４においては、停止位置解析部２４が、未実行停止位置Ｍ３並びにＭ４の解析をする。
【００９６】
処理５においては、停止命令設定部２５が、処理１で入力された位置指定操作の示す指定プログラム位置Ｃ１と、処理４で停止位置解析部２４により解析された未実行停止位置Ｍ３並びにＭ４との両者にそれぞれ停止命令を設定する。
【００９７】
処理６においては、実行制御部２６が、処理５で設定された停止命令が設定されたプログラムの実行をプログラム実行装置３に行わせる。
【００９８】
以上は、図６に示すプログラムを実行するまでの前処理である。以下図７を用いて、プログラムの停止を検出してからの後処理について示す。
【００９９】
図７は、本体装置２Ａが、図６の処理５で設定された停止命令によりプログラム実行装置３によるプログラムの実行が停止された場合に、この停止を検出して行う後処理のフローチャートである。
【０１００】
処理７においては、インタフェース部２７が、プログラムの停止を検出する。
【０１０１】
処理８においては、実行制御部２６が、指定プログラム位置Ｃ１でプログラムが停止したかどうかを判断する。具体的には、実行制御部２６は、プログラム実行装置３から、実行（図６の処理６）が停止した位置を取得して、取得された位置が、図６に示される処理１で受け付けられた位置指定操作が示す位置（指定プログラム位置Ｃ１）に一致するか否かを判断する。
【０１０２】
そして、この処理８により、本体装置２Ａは、指定プログラム位置Ｃ１でプログラムが停止したと実行制御部２６により判断される場合は（処理８：Ｙｅｓ）、この処理８の次に処理９へ移り、指定プログラム位置Ｃ１でプログラムが停止しないと判断される場合は（処理８：Ｎｏ）、処理１０へ移る。
【０１０３】
処理９においては、表示制御部２９が、指定プログラム位置Ｃ１で停止したことを表示装置２Ｂへ表示する。このとき、表示制御部２９は、例えば、図４に示されるメッセージウィンドウＷ２に、この表示を行う。
【０１０４】
処理１０においては、実行制御部２６が、先の処理８において、指定プログラム位置Ｃ１で停止したと判断されなかった場合において（処理８：Ｎｏ）、未実行停止位置Ｍ３並びにＭ４でプログラムが停止したかどうか判断する。このとき、具体的には、実行制御部２６は、先述した、処理８において取得された、プログラムの実行が停止した位置と、先に図６の処理４で停止位置解析部２４により解析された上記未実行停止位置Ｍ３並びにＭ４が同じであるか否かを判断する。
【０１０５】
そして、この処理１０により、本体装置２Ａは、未実行停止位置Ｍ３並びにＭ４でプログラムが停止したと判断した場合は（処理１０：Ｙｅｓ）、処理１０から処理１１へ移り、停止しなかったと判断された場合は（処理１０：Ｎｏ）、この図７の後処理を終了する。
【０１０６】
処理１１においては、未実行通知部２８が、指定プログラム位置Ｃ１でプログラムが停止しなかったことを、表示制御部２９を用いて表示装置２Ｂへ表示する。ここで、未実行通知部２８は、例えば、図４に示されるメッセージウィンドウＷ２に、この表示を行う。
【０１０７】
処理１２においては、継続実行制御部２６ａが、予め、継続実行を行うことを当該継続実行制御部２６ａに対して、操作者が設定しているか否かを判断する。
【０１０８】
そして、この処理１２により、本体装置２Ａは、継続実行を行う設定がされていると判断される場合は（処理１２：Ｙｅｓ）、処理１２から処理１３へ移り、継続実行を行わない設定がされていると判断される場合は（処理１２：Ｎｏ）、図７の処理（後処理）を終了する。
【０１０９】
処理１３においては、実行制御部２６が、プログラムの実行をプログラム実行装置３に行わせる。これにより、プログラム実行装置３は、処理７で検知されたプログラムの実行の停止によって停止した、プログラムの停止位置から、プログラムを実行して、プログラムの実行を再開し、プログラムの実行を、継続させる。
【０１１０】
以上のように、本実施の形態１に拠れば、
従来デバッグ装置の操作を変更することなく、利用者がデバッグ対象としているスコープを越えてプログラムが実行される場合に（図７の処理１０：Ｙｅｓ、図６の処理４、処理５、図５の未実行停止位置Ｍ３並びにＭ４を参照）、プログラムの停止をさせることができ、しかも、指定される停止の位置と、外れた場合における停止の位置（図５の未実行停止位置Ｍ３並びにＭ４）とが同一スコープに存在する場合にのみ停止がされ（処理３：Ｙｅｓ参照）、精度よく適切な場合にのみ停止がされて、不必要なプログラムの停止を発生させることがない。さらに、指定されたプログラム位置（図４の指定プログラム位置Ｃ１）まで実行されなかったことを通知することができ（図７の処理９の通知、図７の処理１１の通知）、利用者に知らせることができる。さらには、指定されたプログラム位置（図４の指定プログラム位置Ｃ１）まで実行されなかった場合（図７の処理８：Ｎｏ）、予め、継続実行を行うことを設定することによって、デバッグ装置による継続実行が可能となり（図７の処理１２：Ｙｅｓ、処理１３）、利用者による、実行するという操作を削減することができ、簡単な操作により実行を継続させることができるという効果を得る。
【０１１１】
また本発明のデバッグ方法についても上記デバッグ装置と同様の効果を得る。
【０１１２】
なお、実行制御部２６は、より具体的には、例えば、プログラムが、入力受付部２１による指定プログラム位置の入力時のスコープを越えて実行されることを検出する第１の検出部と、前記指定プログラム位置の命令が実行されることを検出する第２の検出部とを備えるものとしてもよい。
【０１１３】
（実施の形態２）
本発明の実施の形態２に係るデバッグ装置について説明する。本発明の実施の形態２に係るデバッグ装置は、前述した本発明の実施の形態１におけるデバッグ装置２を含む。
【０１１４】
図２に示されるよう、実施の形態２における本体装置２Ａにおいて、スコープ解析部２２は、スコープ変更部２２ａを保持している。
【０１１５】
スコープ変更部２２ａは、スコープ解析部２２による現在のプログラム停止位置と指定プログラム位置（図４の指定プログラム位置Ｃ１）とが、同一スコープに存在するか否かの解析の際に使用される同一スコープの定義を変更する。スコープ変更部２２ａは、具体的には、上記同一スコープの定義を、入力装置２Ｃからの利用者の操作に従って、関数単位、ファイル単位、モジュール単位の間で変更する。
【０１１６】
なお、スコープ変更部２２ａは、設定ファイルなどが本体装置２Ａに用意されており、利用者の操作なしで、用意された設定ファイルに含まれる設定に従って、同一スコープの定義を変更するものとしてもよい。
【０１１７】
以上のように構成された実施の形態２におけるデバッグ装置２について、以下その具体的な動作について説明する。
【０１１８】
デバッグ装置２は、スコープ変更部２２ａによって変更される同一スコープの定義が関数単位の場合は、本発明の実施の形態１で示した具体的な動作と同様の動作を行う。以下に、スコープ変更部２２ａによって変更される同一スコープの定義がファイル単位の場合におけるデバッグ装置２の動作を示す。
【０１１９】
図８は、本体装置２Ａが、同一スコープの定義が変更された際において表示させる画面を示す図である。
【０１２０】
以下の説明では、プログラム実行装置３が、図８のように、デバッグ対象のプログラムを、ソースコードウィンドウＷ１における現在のプログラム停止位置Ｍ５並びに命令コードウィンドウＷ３上における現在のプログラム停止位置Ｍ６まで実行し、プログラム停止位置Ｍ５（プログラム停止位置Ｍ６）で停止している場合において、利用者によって指定プログラム位置Ｃ２が位置指定操作により指定された上で、指定された当該指定プログラム位置Ｃ２まで実行という実行操作がされた場合のデバッグ装置２の動作を示す。
【０１２１】
これら、現在のプログラム停止位置Ｍ５並びにＭ６は、同一スコープの定義が関数単位のときには、これら、現在のプログラム停止位置Ｍ５並びにＭ６が含まれる、図８に示される関数「int func(int a, int b, int c)」のスコープ、すなわち、図８に示される「int func(int a, int b, int c)」の直後の「｛…｝」の範囲の外に、指定プログラム位置Ｃ２があり、このスコープ内に指定プログラム位置Ｃ２はないが、スコープ変更部２２ａが、スコープ解析部２２の同一スコープの定義をファイル単位と変更することによって、同一スコープの定義がファイル単位であれば、これら、現在のプログラム停止位置Ｍ５並びにＭ６は、指定プログラム位置Ｃ２と同一スコープに存在することになる。
【０１２２】
図９は、本体装置２Ａが、図８の画面を表示させた後にプログラムの実行が停止してから表示させる画面を示す図である。
【０１２３】
本体装置２Ａは、指定プログラム位置Ｃ２が実行されずに、現在のプログラム停止位置Ｍ５並びにＭ６と指定プログラム位置Ｃ２との同一スコープから実行中のプログラムが外れる場合、図９のように、ソースコードウィンドウＷ１上における未実行停止位置Ｍ７並びに命令コードウィンドウＷ３上における未実行停止位置Ｍ８でプログラムが停止した際に、メッセージウィンドウＷ２に、指定された位置（指定プログラム位置Ｃ２）に停止しなかったことを通知するためのメッセージを表示させる。
【０１２４】
図１０は、実施の形態２に係る本体装置２Ａの動作を示すフローチャートである。
【０１２５】
以下、実施の形態２における本体装置２Ａの各ブロックの処理の流れを、図１０を用いて説明する。なお、プログラムを実行するまでの前処理についてのみ説明する。また、実施の形態１における図６のフローチャートの説明の場合と同様、図１０中の、従来処理に関しては、詳しい説明を省略する。
【０１２６】
処理１４（図１０の処理の冒頭）においては、スコープ変更部２２ａが、入力受付部２１により、入力装置２Ｃから、同一スコープの定義が設定されるための利用者による設定入力が入力された時に、同一スコープの定義をファイル単位に変更する処理を行う。
【０１２７】
なお、この処理１４においては、スコープ変更部２２ａは、予め、設定ファイルなどで同一スコープの定義を利用者が記述しておくならば、利用者の、上記したような新たな操作なしで、同一スコープの定義の変更を行うものとしてもよい。
【０１２８】
処理１においては、入力受付部２１が、入力装置２Ｃから、利用者によって当該入力装置２Ｃに行われた、先に位置指定操作により指定された指定プログラム位置Ｃ２までプログラムを実行するという実行操作を受け付ける。
【０１２９】
処理２においては、スコープ解析部２２が、現在のプログラム停止位置Ｍ５並びにＭ６と、指定プログラム位置Ｃ２とが同一スコープに存在するか否かを解析するスコープ解析処理２を行う。その解析の際に、スコープ変更部２２ａが、解析に利用されるスコープの定義を、ファイル単位に変更し、スコープ解析部２２は、変更された、ファイル単位の定義でのスコープにより解析を行う。なお、現在のプログラム停止位置Ｍ５（プログラム停止位置Ｍ６）と、指定プログラム位置Ｃ２とが、同一ファイル内に存在するか否かを解析することは、周知の技術であるため説明を省略する。
【０１３０】
処理３においては、停止位置切替部２３が、従来処理である指定プログラム位置Ｃ２にのみ停止命令を設定するか、指定プログラム位置Ｃ２と停止位置解析部２４による未実行停止位置Ｍ７並びにＭ８との両者の位置に停止命令を設定するかを切り替える。
【０１３１】
そして、処理３によって、本体装置２Ａは、同一スコープ内に存在すると判断された場合は（処理３：Ｎｏ）、処理４へ移り、同一スコープ内に存在しない場合は（処理３：Ｙｅｓ）、従来のデバッグ装置と同様の処理による、指定されたプログラム位置Ｃ２（図８）まで、プログラムを実行する処理である従来処理へ移る。
【０１３２】
処理４においては、停止位置解析部２４が、未実行停止位置Ｍ７並びにＭ８の解析をする。
【０１３３】
処理５においては、停止命令設定部２５が、指定プログラム位置Ｃ２と、停止位置解析部２４による未実行停止位置Ｍ７並びにＭ８との両者の位置に各々停止命令を設定する。
【０１３４】
処理６においては、実行制御部２６が、プログラムの実行をプログラム実行装置３に行わせる。
【０１３５】
プログラムの停止を検出してからの後処理は、先に説明した実施の形態１で示す図７の後処理と同様である。
【０１３６】
なお、同一スコープの定義が、モジュール単位にスコープ変更部２２ａにより変更される際の動作についても、上記処理と同様の処理を用いることによって実現可能なため、詳しい説明はしない。
【０１３７】
また、本実施の形態２では、同一スコープの定義を、関数単位、ファイル単位、モジュール単位の何れかであるものとして説明を行ったが、同一スコープの定義を、それら以外の基本ブロック単位が含まれるものとしても、同様の処理で実現することができる。
【０１３８】
以上のように、本実施の形態２に拠れば、利用者のデバッグ対象とする範囲を、関数単位、ファイル単位、モジュール単位などと、様々な範囲として扱うことができ、さらには、利用者によってデバッグ対象とする範囲を変更することができ、指定された指定プログラム位置Ｃ２まで実行されなかった場合における、プログラムを停止させる位置を変更することができるという効果を得ることができる。
【０１３９】
また本発明のデバッグ方法についても上記デバッグ装置と同様の効果を得る。
【０１４０】
（実施の形態３）
本発明の実施の形態３に係るデバッグ装置について説明する。本発明の実施の形態３に係るデバッグ装置は、前述した本発明の実施の形態１におけるデバッグ装置２を含むため、詳細についての説明は適宜省略する。
【０１４１】
図２に示されるように、実施の形態３における本体装置２Ａにおいて、停止位置解析部２４は、停止位置変更部２４ａを保持している。
【０１４２】
停止位置変更部２４ａは、入力装置２Ｃに対する利用者の操作にしたがって、停止位置解析部２４による未実行停止位置（実施の形態１における図９の未実行停止位置Ｍ７並びにＭ８を参照）を、同一スコープ外にするか同一スコープ内にするかを変更することができる。
【０１４３】
なお、停止位置変更部２４ａは、設定ファイルなどが本体装置２Ａに用意されていて、利用者の操作なしで、用意された当該設定ファイルに含まれる設定に従って、未実行停止位置を変更するものとしてもよい。
【０１４４】
そして、停止位置解析部２４は、スタックデータ、レジスタデータ、スコープ解析部２２によるスコープ情報を入力とする。そして、停止位置解析部２４は、まず、スタックに格納されている呼び出し処理の次命令アドレス（以下リターンアドレスと呼ぶ）を停止位置として取得する。なお、停止位置解析部２４は、上記リターンアドレスが格納されているレジスタ（以下リンクレジスタと呼ぶ）をプロセッサが保持している場合は、そのリンクレジスタの値を停止位置として取得してもよい。停止位置解析部２４は、取得された上記停止位置が、スコープ解析部２２による同一スコープ内である場合、スタックに保存されている、そのレジスタの値を復帰させ、スタックポインタの値を変更し、スタックに格納されている上位呼び出し処理の次命令リターンアドレスまたはリンクレジスタの値から停止位置を取得する。停止位置解析部２４は、これを繰り返すことによって、同一スコープ外の停止位置である未実行停止位置を取得し、これを停止命令設定部２５へ出力する。なお、停止位置解析部２４は、最上位の呼び出し処理まで探し続けても停止位置を取得できない場合は、最後に取得した停止位置を用いることにしてもよい。
【０１４５】
停止位置変更部２４ａは、未実行停止位置を同一スコープ外とする場合は、上記の未実行停止位置を用いる。
【０１４６】
他方、停止位置変更部２４ａは、停止位置変更部２４ａが未実行停止位置を同一スコープ内とする場合は、呼び出し処理の次命令アドレスへ復帰する、前処理の位置を、未実行停止位置とし、すなわち、同一スコープ内のプログラム位置を未実行停止位置とする。それによって、停止位置変更部２４ａは、同一スコープ内で使用されている局所変数の値、レジスタデータを参照することができる。上記呼び出し処理の次命令アドレスへ復帰する前処理の位置を取得することは、既知の技術であるため説明を省略する。
【０１４７】
以上のように構成された、実施の形態３におけるデバッグ装置２について、以下その具体的な動作について説明する。
【０１４８】
以下の説明では、図４のように、デバッグ対象のプログラムがソースコードウィンドウＷ１上における現在のプログラム停止位置Ｍ１、並びに命令コードウィンドウＷ３上における現在のプログラム停止位置Ｍ２で停止している場合において、利用者によって、指定プログラム位置Ｃ１まで実行という実行操作が行われた時について述べる。
【０１４９】
図１１は、本体装置２Ａが、プログラムが停止された後に表示させる画面を示す図である。
【０１５０】
本体装置２Ａは、指定プログラム位置Ｃ１が実行されずに、実行中のプログラムが、現在のプログラム停止位置Ｍ１並びにＭ２と、指定プログラム位置Ｃ１との同一スコープから外れる場合、図１１のように、プログラム実行装置３が、ソースコードウィンドウＷ１上における未実行停止位置Ｍ９並びに命令コードウィンドウＷ３上における未実行停止位置Ｍ１０でプログラムを停止した際に、メッセージウィンドウＷ２に、指定された位置（指定プログラム位置Ｃ１）に、プログラム停止しなかったことを通知するためのメッセージを表示させる。
【０１５１】
図１２は、実施の形態３における本体装置２Ａの動作を示すフローチャートである。
【０１５２】
以下実施の形態３における本体装置２Ａの各ブロックの処理の流れを、図１２を用いてプログラムを実行するまでの前処理について、説明する。なお、図中の従来処理に関しては説明を省略する。
【０１５３】
処理１５（図１２の冒頭）においては、入力受付部２１が、入力装置２Ｃに対する利用者によっての設定操作を受け付けて、本体装置２Ａの設定処理部が、未実行停止位置を、同一スコープ外とするか同一スコープ内とするかを停止位置変更部２４ａに設定する。なお、本体装置２Ａの設定処理部は、予め、未実行停止位置を同一スコープ外とするか、同一スコープ内とするかが記述された設定ファイルなどが本体装置２Ａに用意されているならば、利用者の操作なしで、このような処理を行う。
【０１５４】
処理１においては、入力受付部２１が、入力装置２Ｃに対する、利用者によっての、指定プログラム位置Ｃ１まで実行するという実行操作を受け付ける。
【０１５５】
処理２においては、スコープ解析部２２が、現在のプログラム停止位置Ｍ１（図４）並びにＭ２（図４）と、指定プログラム位置Ｃ１（図４、図１１）とが同一スコープに存在するか否かを判断するスコープ解析処理２を行う。
【０１５６】
処理３においては、停止位置切替部２３が、従来処理である、指定プログラム位置Ｃ１（図４、図１１）にのみ停止命令を設定することを行うか（処理３：Ｎｏ）、指定プログラム位置Ｃ１と、未実行停止位置（図４、図９）に停止命令を設定するかを切り替える。
【０１５７】
そして、処理３によって、本体装置２Ａは、同一スコープ内に存在すると判断された場合は（処理３：Ｙｅｓ）、処理４へ移り、同一スコープ内に存在しない場合は（処理３：Ｎｏ）、従来のデバッグ装置による処理と同様の、指定されたプログラム位置Ｃ１（図４）まで実行する処理である従来処理へ移る。
【０１５８】
処理４においては、停止位置解析部２４が、未実行停止位置の解析をする。その解析の際に、停止位置変更部２４ａが、未実行停止位置を、同一スコープ外とするか、同一スコープ内とするかを切り替え、解析により特定される未実行停止位置を、変更させる。停止位置変更部２４ａは、同一スコープ外の未実行停止位置への切り替えがされると、同一スコープ外の未実行停止位置（図４のＭ３、Ｍ４）を特定し、同一スコープ内の未実行停止位置への切り替えがされると、同一スコープ内の未実行停止位置（図１１のＭ９、Ｍ１０）を特定する。
【０１５９】
処理５においては、停止命令設定部２５が、指定プログラム位置Ｃ１と、停止位置解析部２４による未実行停止位置（図４のＭ３並びにＭ４、図１１のＭ９並びにＭ１０）とに、それぞれ、停止命令を設定する。
【０１６０】
処理６においては、実行制御部２６が、プログラムの実行をする。
【０１６１】
プログラムの停止を検出してからの後処理については、実施の形態１で示す図７の後処理と同様である。
【０１６２】
以上のように、本実施の形態３に拠れば、指定されたプログラム位置Ｃ１（図４、図１１）まで実行されず、同一スコープから外れた状況において（図１２の処理３：Ｙｅｓ）、プログラムの停止を発生させることができ（図１２の処理４〜処理６、図７の処理７）、同一スコープから外れた状況を表示することができるだけでなく、さらに、利用者は、同一スコープ内で使用された局所変数の値、レジスタデータを参照することが可能となり、指定されたプログラム位置Ｃ１まで実行されなかったことを解析することができる。さらには、利用者が同一スコープ外で停止させるのか、同一スコープ内で停止させるのかを変更できるという効果を得る。
【０１６３】
また本発明のデバッグ方法についても上記デバッグ装置と同様の効果を得る。
【産業上の利用可能性】
【０１６４】
本発明におけるデバッグ装置は、指定されたプログラム位置まで実行するという操作を有するデバッグ装置において、指定されたプログラム位置まで実行されずに、プログラムが現在のデバッグ対象としているスコープを越えて実行される場合、実行中のプログラムを停止させることができ、さらに、利用者に指定されたプログラム位置まで実行されなかったことを通知することにより、ソフトウェア開発者のプログラム開発を支援でき、しかも、従来の操作方法を変更することなくこれらの効果が期待できるデバッグ装置として有用である。
【図面の簡単な説明】
【０１６５】
【図１】デバッグシステムの構成を示す図である。
【図２】デバッグ装置の構成を機能的に示すブロック図である。
【図３】実施の形態１（及び実施の形態２、３）におけるプログラムソースコードを示す図である。
【図４】実施の形態１（及び実施の形態３）における指定プログラム位置と現在のプログラム停止位置とが同一スコープに存在する場合の表示例を示す図である。
【図５】実施の形態１における指定プログラム位置に停止せず未実行停止位置で停止した場合の表示例を示す図である。
【図６】実施の形態１における前処理を示すフローチャート図である。
【図７】実施の形態１（及び実施の形態２、３）における後処理を示すフローチャート図である。
【図８】実施の形態２における、指定プログラム位置と現在のプログラム停止位置とが同一スコープに存在する場合の表示例を示す図である。
【図９】実施の形態１における、指定プログラム位置に停止せず未実行停止位置で停止した場合の表示例を示す図である。
【図１０】実施の形態２における前処理を示すフローチャート図である。
【図１１】実施の形態３における指定プログラム位置に停止せず未実行停止位置で停止した場合の表示例を示す図である。
【図１２】実施の形態３における前処理を示すフローチャート図である。
【図１３】従来のデバッグ装置の構成を機能的に示すブロック図である。
【符号の説明】
【０１６６】
１  デバッグシステム
２  デバッグ装置
２Ａ  本体装置
２Ｂ  表示装置
２Ｃ  入力装置
３  プログラム実行装置
４  ケーブル
２１  入力受付部
２２  スコープ解析部
２２ａ  スコープ変更部
２３  停止位置切替部
２４  停止位置解析部
２４ａ  停止位置変更部
２５  停止命令設定部
２６  実行制御部
２６ａ  継続実行制御部
２７  インタフェース部
２８  未実行通知部
２９  表示制御部
Ｗ１  ソースコードウィンドウ
Ｗ２  メッセージウィンドウ
Ｗ３  命令コードウィンドウ
Ｗ４  操作入力ウィンドウ
Ｍ１  現在のプログラム停止位置
Ｍ２  現在のプログラム停止位置
Ｍ３  未実行停止位置
Ｍ４  未実行停止位置
Ｍ５  現在のプログラム停止位置
Ｍ６  現在のプログラム停止位置
Ｍ７  未実行停止位置
Ｍ８  未実行停止位置
Ｍ９  未実行停止位置
Ｍ１０  未実行停止位置
Ｃ１  指定プログラム位置
Ｃ２  指定プログラム位置
【図１】
2010067196.tif 000003
【図２】
2010067196.tif 000004
【図３】
2010067196.tif 000005
【図４】
2010067196.tif 000006
【図５】
2010067196.tif 000007
【図６】
2010067196.tif 000008
【図７】
2010067196.tif 000009
【図８】
2010067196.tif 000010
【図９】
2010067196.tif 000011
【図１０】
2010067196.tif 000012
【図１１】
2010067196.tif 000013
【図１２】
2010067196.tif 000014
【図１３】
2010067196.tif 000015