(57)【特許請求の範囲】
【請求項１】
開発評価しようとするソフトウェアにおいて実行をスキップするインストラクションの位置に、インストラクションスキップポイントを設定する、又は前記インストラクションスキップポイントの設定を解除する指示を受けて、該指示をインストラクションスキップポイント設定又は解除のコマンドとして送信するデバッガと、
実行を一時停止するインストラクションの位置に設定されたブレークポイントの設定位置情報と、前記インストラクションスキップポイントの設定位置情報を有するブレーク・スキップテーブルを備え、前記デバッガから送信されたコマンドを受けて、前記ブレーク・スキップテーブルを調査し、調査結果に基づいて、ブレークポイントが設定されていないインストラクションにインストラクションスキップポイントを設定する場合は設定するインストラクションをＮＯＰ命令に置き換え、解除する場合にはＮＯＰ命令を元のインストラクションに戻し、前記ブレーク・スキップテーブルの設定位置情報を更新し、インストラクションスキップポイントの設定、解除情報を前記デバッガに送信し、ブレークポイントが設定されているインストラクションにインストラクションスキップポイントを設定する場合には、前記ブレーク・スキップテーブルの該当エントリーをブレークポイントからブレークポイントかつスキップポイントに変更し、かつ設定するインストラクションをブレーク発生命令のままとし、解除する場合には、前記ブレーク・スキップテーブルの該当エントリーをブレークポイントかつスキップポイントからブレークポイントに変更し、かつブレーク発生命令をそのままとし、前記ブレーク・スキップテーブルの設定位置情報を更新し、ブレーク・スキップ設定、解除情報を前記デバッガに送信し、前記ブレーク発生命令が実行されてブレークが発生してステップ実行、実行継続が指示された場合には、ＮＯＰ命令を実行するデバッグモニタ手段と
を有することを特徴とするデバッグシステム。
【請求項２】
開発評価しようとするソフトウェアのソースプログラム上の関数呼び出し位置と、関数呼び出しに対応するジャンプ命令のアドレスの情報を有する関数呼び出しスキップテーブルをデバッグ情報として出力するコンパイラとリンカを具備し、
前記デバッガは、開発評価しようとするソフトウェアにおいて実行をスキップする関数呼び出しの位置に、関数呼び出しスキップポイントを設定する、又は前記関数呼び出しスキップポイントの設定を解除する指示を受けて、前記関数呼び出しスキップテーブルを調査し、調査結果に基づいて前記指示をインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信する
ことを特徴とする請求項１記載のデバッグシステム。
【請求項３】
開発評価しようとするソフトウェアのソースプログラム上の式の内、式に対応するアドレス範囲のインストラクションをＮＯＰ命令に置換した場合にレジスタ割り当てに矛盾が生じない式の行番号と、該番号に対応するインストラクションの開始及び終了アドレスの情報を有する式評価スキップテーブルをデバッグ情報として出力するコンパイラとリンカを具備し、
前記デバッガは、開発評価しようとするソフトウェアにおいて実行を省略（スキップ）する式の位置に、式評価スキップポイントを設定する、又は前記式評価スキップポイントの設定を解除する指示を受けて、前記式評価スキップテーブルを調査し、前記指示が可能か否かを判別し、可能な場合には前記指示をインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信する
ことを特徴とする請求項１記載のデバッグシステム。
【請求項４】
前記デバッガは、前記指示が可能な場合には、前記式に対応したアドレス範囲のインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信し、
前記デバッグモニタ手段は、前記デバッガが送信したコマンドに対応可能である
ことを特徴とする請求項３記載のデバッグシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、組み込みシステムのソフトウェア開発において、ソースプログラムを書き直してリコンパイルすることなく、ユーザが指定する、インストラクション、関数呼び出し、式の評価を実行しないようにする機能を備えたデバッグシステムに関する。
【０００２】
【従来の技術】
組み込みシステムにおける従来のソフトウェア開発において、プログラム中のあるインストラクションの実行を省略したり、ある関数の呼び出しを省略したり、式の評価を省略し、省略した結果プログラムの動作がどのようになるかを把握するためには、ソースコードを書き直してリコンパイルし、プログラムを格納している記憶装置の例えばＲＡＭ上に再ダウンロードしたり、場合によってはＲＯＭに再記憶して実行しなければならなかった。
【０００３】
こうした操作を行う場合には、修正後のプログラムのリコンパイル時間や、ＲＡＭへのダウンロード時間、ＲＯＭの再記憶時間が必要になっていた。また、ソースコードの変更によって生じるコードサイズの変化やコード配置の変化が、プログラムの動作にユーザが期待している以外の影響を与えてしまう可能性を含むというデメリットもあった。
【０００４】
さらに、実行を省略したいインストラクションに対応するソースコードを入手できない場合には、ソースコードを変更することができないため、オブジェクトプログラムの対応するインストラクションを手作業でＮＯＰ命令に置き換えるといった面倒な作業を行わなければならなかった。また、式の評価を省略する場合に、式の評価における対応するインストラクションを単純にＮＯＰ命令に置き換え、レジスタの割り当てに矛盾が生じないか否かは、ユーザがアセンブラを解読して判断しなければならず、これらは極めて煩雑な作業であった。
【０００５】
【発明が解決しようとする課題】
以上説明したように、従来のソフトウェアの開発評価において、プログラム中の所定の処理を省略する場合があった。このような場合に、省略後のプログラムの動作を把握するには、プログラムの省略修正後のリコンパイル、リコンパイルしたプログラムの再記憶、といった作業が必要となり、多くの手間と時間がかかるといった不具合を招いていた。また、ソースプログラムが手に入らない場合には、オブジェクトプログラムを手作業で修正しなければならず、面倒な作業を強いられていた。さらに、式評価の省略においては、ユーザが省略後の矛盾を判断しなければならず、作業が煩雑になっていた。
【０００６】
そこで、この発明は、上記に鑑みてなされたものであり、その目的とするところは、プログラム中の所定の処理の省略作業が容易に行え、ソフトウェアの開発評価の作業性を改善したデバッグシステムを提供することにある。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、課題を解決する第１の手段は、開発評価しようとするソフトウェアにおいて実行を省略（スキップ）するインストラクションの位置に、インストラクションスキップポイントを設定する、又は前記インストラクションスキップポイントの設定を解除する指示を受けて、該指示をインストラクションスキップポイント設定又は解除のコマンドとして送信するデバッガと、実行を一時停止するインストラクションの位置に設定されたブレークポイントの設定位置情報と、前記インストラクションスキップポイントの設定位置情報を有するブレーク・スキップテーブルを備え、前記デバッガから送信されたコマンドを受けて、前記ブレーク・スキップテーブルを調査し、調査結果に基づいて、ブレークポイントが設定されていないインストラクションにインストラクションスキップポイントを設定する場合は設定するインストラクションをＮＯＰ命令に置き換え、解除する場合にはＮＯＰ命令を元のインストラクションに戻し、前記ブレーク・スキップテーブルの設定位置情報を更新し、インストラクションスキップポイントの設定、解除情報を前記デバッガに送信し、ブレークポイントが設定されているインストラクションにインストラクションスキップポイントを設定する場合には、前記ブレーク・スキップテーブルの該当エントリーをブレークポイントからブレークポイントかつスキップポイントに変更し、かつ設定するインストラクションをブレーク発生命令のままとし、解除する場合には、前記ブレーク・スキップテーブルの該当エントリーをブレークポイントかつスキップポイントからブレークポイントに変更し、かつブレーク発生命令をそのままとし、前記ブレーク・スキップテーブルの設定位置情報を更新し、ブレーク・スキップ設定、解除情報を前記デバッガに送信し、前記ブレーク発生命令が実行されてブレークが発生してステップ実行、実行継続が指示された場合には、ＮＯＰ命令を実行するデバッグモニタ手段とを有することを特徴とする。
【０００８】
第２の手段は、前記第１の手段において、開発評価しようとするソフトウェアのソースプログラム上の関数呼び出し位置と、関数呼び出しに対応するジャンプ命令のアドレスの情報を有する関数呼び出しスキップテーブルを生成して備え、該関数呼び出しスキップテーブルをデバッグ情報として出力するコンパイラとリンカを具備し、前記デバッガは、開発評価しようとするソフトウェアにおいて実行を省略（スキップ）する関数呼び出しの位置に、関数呼び出しスキップポイントを設定する、又は前記関数呼び出しスキップポイントの設定を解除する指示を受けて、前記関数呼び出しスキップテーブルを調査し、調査結果に基づいて前記指示をインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信することを特徴とする。
【０００９】
第３の手段は、前記第１の手段において、開発評価しようとするソフトウェアのソースプログラム上の式の内、式に対応するアドレス範囲のインストラクションをＮＯＰ命令に置換した場合にレジスタ割り当てに矛盾が生じない式の行番号と、該番号に対応するインストラクションの開始及び終了アドレスの情報を有する式評価スキップテーブルを生成して備え、該式評価スキップテーブルをデバッグ情報として出力するコンパイラとリンカを具備し、前記デバッガは、開発評価しようとするソフトウェアにおいて実行を省略（スキップ）する式の位置に、式評価スキップポイントを設定する、又は前記式評価スキップポイントの設定を解除する指示を受けて、前記式評価スキップテーブルを調査し、前記指示が可能か否かを判別し、可能な場合には前記指示をインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信することを特徴とする。
【００１０】
第４の手段は、前記第３の手段において、前記デバッガは、前記指示が可能な場合には、前記式に対応したアドレス範囲のインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信し、前記デバッグモニタ手段は、前記デバッガが送信したコマンドに対応可能であることを特徴とする。
【００１１】
【発明の実施の形態】
以下、図面を用いてこの発明の実施形態を説明する。
【００１２】
本発明のデバッグシステムは、組み込みシステムのソフトウェア開発において、ソースプログラムを書き直してリコンパイルすることなく、ユーザが指定する、インストラクションや、関数呼び出し、式の評価を実行しないようにする機能を備えたものである。以下、リコンパイルすることなく上記３種類の実行を省略することをそれぞれ、インストラクションスキップ、関数呼び出しスキップ、式評価スキップと呼ぶことにし、スキップする場所のことを、スキップポイントと呼ぶことにする。このようなスキップポイントを、従来のブレークポイント設定時と同じような操作により設定できるようにしている。また、インストラクションスキップ、関数呼び出しスキップ、式評価スキップのいずれも、デバッグシステムを構成するデバッガと通信するデバッグモニタ手段（モニタプログラム）が、対応する命令をＮＯＰ命令に書き換えることにより設定する。
【００１３】
以下、インストラクションスキップ機能を備えたデバッグシステムを実施形態１に、関数呼び出しスキップ機能を備えたデバッグシステムを実施形態２に、式評価スキップ機能を備えたデバッグシステムを実施形態３で説明する。さらに、式評価スキップ機能の別の実施形態を実施形態４に、また、インストラクション、関数呼び出し、式評価の３つのスキップ機能を備えたデバッグシステムを実施形態５で説明する。
【００１４】
図１はこの発明の実施形態１に係わるデバッグシステムに含まれるデバッガの表示例を示す図である。この実施形態１のデバッグシステムは、インストラクションスキップ機能を実現するために、開発ホストコンピュータ上で動作するデバッガと、デバッガと通信するデバッグモニタ手段として作用するモニタプログラムを備え、このデバッガならびにモニタプログラムに以下に示す新規な機能を拡張することにより実装される。
【００１５】
図１において、デバッガ１１は、インストラクションスキップポイントを設定しようとする箇所の前後のプログラムが表示された図１に示す表示画面１２において、ユーザから「インストラクションスキップポイント」の設定を指示するインタフェースとして、例えばユーザが「インストラクションスキップポイント」のボタン１３をクリックすることにより、「インストラクションスキップポイント設定」や「インストラクションスキップポイント解除」の指示を受け、モニタプログラムにコマンドとして伝える機能と、モニタプログラムから返された結果を表示する機能を備えている。
【００１６】
モニタプログラムは、従来から持っていたブレークポイントテーブルを拡張した、ブレーク・スキップテーブル１４を備え、デバッガ１１からのコマンドに応じてテーブル１４を調査、更新し、ＲＡＭ上のプログラムを書き換え、書き換え後のプログラムをデバッガ１１に戻す機能を備えている。ブレーク・スキップテーブル１４の一例を図２に示す。
【００１７】
図２において、ブレーク・スキップテーブル１４は、ブレークポイントやスキップポイントが設定されたインストラクションのアドレス、設定前のインストラクション、何が設定されているかの種類を示すテーブルである。テーブル１４のアドレスの欄が「０ｘ００００００００」を示しているエントリーは空きを示しており、アドレスの欄が「０ｘ００００００００」以外の値を示すエントリーは意味を持つことを示す。設定される種類としては、「ブレークポイント」、「スキップポイント」、「ブレークポイントかつスキップポイント」の３種類が存在する。
【００１８】
次に、インストラクションスキップポイントを設定する際のユーザの操作（１）、その際のデバッガ１の作用（２）、モニタプログラムの作用（３）と、インストラクションスキップポイントを解除するときのユーザの操作（４）、デバッガ１の作用（５）、モニタプログラムの作用（６）を、図３に示すスキップポイントが正常に設定される際の流れを参照して説明する。
【００１９】
インストラクションスキップポイントを設定する際のユーザの操作（１）として、ユーザは、デバッガ１１にインストラクションスキップポイント設定の指示を与える。これに対して、デバッガ１１の作用（２）として、デバッガ１１はユーザからの指示を、「○○番地にスキップポイントを設定する」というコマンドに置き換えてモニタプログラムに送信する。なお、デバッガ１１は、モニタプログラムの作用（３）で示すモニタプログラムの作用の結果返信された値をデバッグウィンドウに表示してもよい。例えば正常に設定できた場合には、図１に示すようにインストラクションを表示している横に、インストラクションスキップポイントを示すマークを表示する。
【００２０】
モニタプログラムの作用（３）としては、図２に示すブレーク・スキップテーブル１４を調べ、調査結果に応じて次のような動作を行う。テーブル１４に対応する番地を示すエントリーが存在しない場合には、ブレーク・スキップテーブル１４の空いているエントリーに、対応するインストラクションのアドレスを挿入し、そのアドレスにあるインストラクションの内容をブレーク・スキップテーブル１４にセーブする。テーブル１４の種類の欄には、「スキップポイント」を設定する。その後、対応するオブジェクトプログラムのアドレスにＮＯＰ命令を埋め込み、デバッガ１１に対して設定が正常に終了した旨を知らせる。
【００２１】
一方、テーブル１４に対応する番地を示すエントリーが存在し、かつブレークポイントが設定されている場合には、テーブル１４の種類の欄に、「ブレークポイントかつスキップポイント」を設定する。対応するアドレスのインストラクションは、ソフトウェアブレーク命令、あるいは類似の動作を行う命令のままにしておき、デバッガ１１に対して設定が正常に終了した旨を知らせる。「ブレークポイントかつスキップポイント」が設定されたアドレスが実行されブレーク例外、あるいは類似の例外が発生し、モニタプログラムがブレークに対応するコードに入った場合に、デバッガ１１からのステップ実行や、実行継続などのコマンドが与えられると、ブレークポイント設定前のインストラクションではなく、ＮＯＰ命令を実行する。また、対応する番地を示すエントリーが存在し、「スキップポイント」あるいは「ブレークポイントかつスキップポイント」が既に設定されている場合には、既に設定済みである旨をデバッガ１１に通知する。
【００２２】
インストラクションスキップポイントを解除するときのユーザの操作（４）として、ユーザは、デバッガ１１に対して解除するインストラクションの位置のスキップポイント設定解除を指示する。これに対して、デバッガ１１の作用（５）は、ユーザからの指示を、「○○番地のスキップポイントを解除する」というコマンドに置き換えてモニタプログラムに送信する。なお、モニタプログラムの動作（６）で示すモニタプログラムからの返信をデバッグウィンドウに表示するようにしてもよい。例えば正常に解除できた場合には、インストラクションスキップポイントを示すマークの表示を消去する。
【００２３】
モニタプログラムの作用（６）として、モニタプログラムは、ブレーク・スキップテーブル１４を調査し、調査結果に応じて次のような動作を行う。まず、テーブル１４の対応する番地を示すエントリーが存在しない、あるいは存在するが「ブレークポイント」しか設定されていない場合には、スキップポイントが設定されていない旨をデバッガ１１に通知する。一方、テーブル１４の対応する番地を示すエントリーが存在し、かつ「スキップポイント」が設定されていた場合には、スキップポイント設定前のインストラクションを、オブジェクトプログラムの対応するアドレスにストアする。その後、ブレーク・スキップテーブル１４の対応するエントリーのアドレスの欄に「０ｘ００００００００」を書き込むことにより、そのエントリーを消去し、デバッガ１１に、スキップポイントの解除が正常に行われた旨を通知する。また、テーブル１４の対応する番地を示すエントリーが存在し、かつ「ブレーク・スキップポイント」が設定されていた場合には、ブレーク・スキップテーブル１４の対応するエントリーの種類の欄を、「ブレークポイント」に変更し、デバッガ１１にスキップポイント解除が正常に行われた旨を通知する。なお、そのアドレスの命令実行によりブレークが発生した際のモニタプログラムの作用は、従来のブレークが発生した場合と全く同様である。
【００２４】
従来であれば、ソースファイルの特定位置をコメントアウトした際の効果を知るためには、ソースファイルを書き換え、リコンパイルし、再ロードして実行しなければならなかったものが、上記実施形態においては、その操作が必要なくなるために、リコンパイル時間、再ロード時間が短縮できる。また、リコンパイルをしないですむことにより、コードの配置位置などに影響が発生しないため、ユーザの望まない不具合が発生しない。
【００２５】
次に、この発明の実施形態２を説明する。
【００２６】
この実施形態２のデバッグシステムは、先の実施形態１で説明したデバッガとモニタプログラムに加えてコンパイラとリンカを備え、コンパイラとリンカは、関数呼び出しスキップを行うためのデバッグ情報を出力するよう機能拡張され、またデバッガはコンパイラとリンカが出力するデバッグ情報を解釈できるように機能拡張されて実装され、関数呼び出しスキップ機能を実現している。
【００２７】
関数呼び出しスキップを行うためのデバッグ情報を、関数呼び出しスキップテーブルと呼ぶことにする。この関数呼び出しスキップテーブル２２の一例を、この実施形態２のデバッガ２１が関数呼び出しスキップを行うプログラムを画面表示した際の画面表示例とともに図４に示す。図４において、このテーブル２２は、ソースコード上の関数呼び出しに対応するジャンプ命令、あるいはそれに相当する命令が配置されるアドレスと、ソースコード上の行番号を対応させるテーブルであり、ソースファイル名、ソースコード行番号、ジャンプ命令のアドレスの情報を有している。
【００２８】
次に、関数呼び出しスキップポイントを設定する際のユーザの操作（１）、その際のデバッガ２１の作用（２）、モニタプログラムの作用（３）と、インストラクションスキップポイントを解除するときのユーザの操作（４）、その際のデバッガ２１の作用（５）、モニタプログラムの作用（６）を、図５に示す関数呼び出しスキップポイント設定が正常に行われるフロー図を参照して説明する。
【００２９】
関数呼び出しスキップポイントを設定する際のユーザの操作（１）として、ユーザは、例えば先の実施形態１と同様の入力インターフェースによりデバッガ２１に関数呼び出しのスキップポイント設定を指示する。これに対してデバッガ２１は、ユーザからの指示に基づいて関数呼び出しスキップテーブル２２を調査し、調査結果に応じて次の動作を行う。スキップポイントの設定に対応するソースコード行が、関数呼び出しスキップテーブル２２に存在しない場合には、デバッガ２１はモニタプログラムに対して何のコマンドも発行しない。この場合に、関数呼び出しスキップポイントを、ユーザ指定個所に設定できない旨を表示するようにしてもよい。
【００３０】
一方、スキップポイントの設定に対応するソースコード行が、関数呼び出しスキップテーブル２２に存在する場合には、デバッガ２１はモニタプログラムに対して、関数呼び出しスキップテーブル２２に示されたアドレスを用いて「○○番地にスキップポイントを設定せよ」というコマンドを発行する。なお、デバッガ２１は、モニタプログラムの作用（３）で示すモニタ動作の結果返された値をデバッグウィンドウに表示するようにしてもよい。この場合に、例えば正常に設定できた場合は、ソースコードの関数呼び出しを表示している横に関数呼び出しスキップポイントを示すマークを表示する。あるいは、ジャンプ命令を表示している横にインストラクションスキップを示すマークを表示する。
【００３１】
モニタプログラムは、先の実施形態１のモニタプログラムの作用（３）と同様である。
【００３２】
ユーザの操作（４）として、ユーザは、デバッガ２１に対して所望の関数呼び出しのスキップポイント設定解除を指示する。その際のデバッガ２１の作用（５）として、デバッガ２１はユーザからの指示に基づき関数呼び出しスキップテーブル２２を調査し、調査結果に応じて次の動作を行う。スキップポイントの設定解除に対応するソースコード行が、関数呼び出しスキップテーブルに存在しない場合には、デバッガ２１はモニタプログラムに対して何のコマンドも発行しない。なお、関数呼び出しスキップポイントの解除を、ユーザ指定箇所に設定できない旨を表示してもよい。
【００３３】
一方、スキップポイント設定解除に対応するソースコード行が、関数呼び出しスキップテーブルに存在する場合には、デバッガ２１は、モニタプログラムに対して関数呼び出しスキップテーブル２２に示されたアドレスを用いて「○○番地のスキップポイントを解除せよ」というコマンドを発行する。なお、デバッガ２１は、モニタプログラムの作用（６）で示すモニタプログラムの作用の結果返された値をデバッグウィンドウに表示するようにしてもよい。この場合に、正常に解除できた場合は、関数呼び出しスキップポイントを示すマークの表示を消去する、あるいは対応するインストラクションスキップポイントを示すマークの表示を消去する。モニタプログラムの作用（６）は、先の実施形態１のモニタプログラムの作用（６）と同様である。
【００３４】
このような実施形態にあっては、コンパイラ、リンカがソースプログラムから関数読み出しスキップテーブル２２のデバッグ情報を生成し、このテーブル２２に基づいて関数読み出しのスキップポイントを設定あるいは解除するようにしているので、関数読み出しスキップポイントの設定、解除において先の実施形態１と同様の効果を得ることができる。
【００３５】
次に、この発明の実施形態３について説明する。
【００３６】
この実施形態３のデバッグシステムは、先の実施形態１で説明したデバッガとモニタプログラムに加えてコンパイラとリンカを備え、コンパイラとリンカは、式評価スキップを行うためのデバッグ情報を出力するように機能拡張され、またデバッガはコンパイラとリンカが出力するデバッグ情報を解釈できるように機能拡張されて実装され、式評価スキップ機能を実現している。式評価スキップを行うためのデバッグ情報を、式評価スキップテーブルと呼ぶことにする。この式評価スキップテーブルは、ソースコード上の式の行番号と、それに対応するインストラクション列のアドレス（開始アドレスと終了アドレス）の情報を持ったものであり、コンパイラ、リンカがソースプログラムに基づいて生成する。式評価をスキップするためには、次の条件を兼ね備えることが必要である。
【００３７】
（Ａ）その式の評価の前後で、レジスタ割付が変化しない
（Ｂ）その式の評価をスキップした場合に、不定値となる値が発生しない
上記（Ａ）や（Ｂ）の条件にしたがって作成される評価スキップテーブル３１の一例を、この実施形態３のデバッガが式評価スキップを行うプログラムを画面表示した際の画面表示例とともに図６あるいは図７に示す。
【００３８】
次に、式評価スキップポイントを設定する際のユーザの操作（１）、その際のデバッガの作用（２）、モニタプログラムの作用（３）と、式評価スキップポイントを解除するときのユーザの操作（４）、その際のデバッガの作用（５）、モニタプログラムの作用（６）を説明する。
【００３９】
式評価スキップポイントを設定する際のユーザの操作（１）として、ユーザは、デバッガに式評価スキップポイント設定を、例えば先の実施形態１と同様の入力インターフェースにより指示する。デバッガの作用（２）としてデバッガは、ユーザからの指示に基づき式評価スキップテーブル３１を調査し、調査結果に応じて次の動作を行う。式評価スキップポイントの設定に対応するソースコード行が、式評価スキップテーブル３１に存在しない場合は、デバッガはモニタプログラムに対して何のコマンドも発行しない。この場合に、式評価スキップポイントを、ユーザ指定箇所に設定できない旨を表示するようにしてもよい。一方、式評価スキップポイントの設定に対応するソースコード行が、式評価スキップテーブル３１に存在する場合には、デバッガはモニタプログラムに対して式評価スキップテーブル３１に示された開始アドレスから、終了アドレスまですべてに対して「○○番地にスキップポイントを設定せよ」というコマンドを発行する。なお、デバッガは、モニタプログラムの作用（３）で示すモニタプログラムの作用の結果返された値をデバッグウィンドウに表示するようにしてもよい。この場合に、例えば正常に設定できた場合は、ソースコードの式表示の横に式評価スキップポイントを示すマークを表示する、あるいは対応するインストラクション列の表示の横に、インストラクションスキップポイントを示すマークを表示する。
【００４０】
モニタプログラムの作用（３）は、先の実施形態１のモニタプログラムの作用（３）と同様である。
【００４１】
式評価スキップポイントを解除するときのユーザの操作（４）として、ユーザは、デバッガに対して所望の式評価スキップポイント設定解除を指示する。これに対して、デバッガの作用（５）としてデバッガは、ユーザからの指示に基づき式評価スキップテーブル３１を調査し、調査結果に応じて次の動作を行う。式評価スキップポイント設定解除に対応するソースコード行が、式評価スキップテーブル３１に存在しない場合は、デバッガはモニタプログラムに対して、何のコマンドも発行しない。この場合に、式評価スキップポイントの解除をユーザ指定個所に設定できない旨を表示するようにしてもよい。
【００４２】
一方、式評価スキップポイントの解除に対応するソースコード行が、式評価スキップテーブル３１に存在する場合には、デバッガはモニタプログラムに対して、式評価スキップテーブル３１に示された開始アドレスから終了アドレスまですべてに対して「○○番地のスキップポイントを解除せよ」というコマンドを発行する。なお、デバッガは、モニタプログラムの作用（３）で示すモニタプログラムの作用の結果返された値をデバッグウィンドウに表示するようにしてもよい。この場合に、例えば正常に解除できた場合は、対応する式評価スキップポイントを示すマークやインストラクションスキップを示すマークの表示を削除する。モニタプログラムの作用（６）は、先の実施形態１のモニタプログラムの作用（６）と同様である。
【００４３】
このような実施形態にあっては、コンパイラ、リンカがソースプログラムから式評価スキップテーブル３１のデバッグ情報を生成し、このテーブル３１に基づいて式評価のスキップポイントを設定あるいは解除するようにしているので、式評価スキップポイントの設定、解除において先の実施形態１と同様の効果を得ることができる。
【００４４】
なお、この発明は、上記実施形態に限ることはなく、実施形態４として、先の実施形態３に対して、ユーザは式評価スキップの設定又は解除を実行する位置を範囲として、例えば「○○アドレスから××アドレスまでスキップポイントを設定（又は解除）」というように指示可能とて、この指示に対してデバッガは、「○○アドレスから××アドレスまでスキップ実行を設定せよ」というコマンドと、「○○アドレスから××アドレスまでのスキップ実行を解除せよ」というコマンドを発行できるように機能拡張され、モニタプログラムは、デバッガが発行したコマンドを受け付けて式評価スキップの設定又は解除をできるようにしてもよい。このような実施形態においては、式評価のスキップポイントを所定の範囲で設定、解除する場合に、先の実施形態３に比べて容易に行うことが可能となる。
【００４５】
また、実施形態５として、先の実施形態１、実施形態２ならびに実施形態３又は実施形態４を組み合わせて、インストラクション、関数呼び出し、式評価のスキップ機能を備えた実施形態であってもよい。
【００４６】
【発明の効果】
以上説明したように、この発明によれば、省略処理の指示を受けると、スキップテーブルを参照し、参照結果に基づいて実行を省略するインストラクションをＮＯＰ命令に置換するようにしたので、プログラム中の所定の処理の省略作業が容易に行え、ソフトウェアの開発評価の作業性を改善することができる。
【図面の簡単な説明】
【図１】この発明の実施形態１に係わるデバッグシステムに含まれるデバッガの画面表示例を示す図である。
【図２】ブレーク・スキップテーブルの一例を示す図である。
【図３】インストラクションスキップポイント設定の流れを示す図である。
【図４】この発明の実施形態２に係わるデバッグシステムに含まれるデバッガの画面表示例、ならびに関数呼び出しスキップテーブルの一例を示す図である。
【図５】関数呼び出しスキップポイント設定の流れを示す図である。
【図６】この発明の実施形態３に係わるデバッグシステムに含まれるデバッガの画面表示例、ならびに式評価スキップテーブルの一例を示す図である。
【図７】この発明の実施形態３に係わるデバッグシステムに含まれるデバッガの画面表示例、ならびに式評価スキップテーブルの他の一例を示す図である。
【符号の説明】
１１，２１  デバッガ
１２  表示画面
１３  ボタン
１４  ブレーク・スキップテーブル
２２  関数呼び出しスキップテーブル
３１  式評価スキップテーブル
【図１】
0004295912.tif 000002
【図２】
0004295912.tif 000003
【図３】
0004295912.tif 000004
【図４】
0004295912.tif 000005
【図５】
0004295912.tif 000006
【図６】
0004295912.tif 000007
【図７】
0004295912.tif 000008