JP4295912B2 - デバッグシステム - Google Patents
デバッグシステム Download PDFInfo
- Publication number
- JP4295912B2 JP4295912B2 JP2000392734A JP2000392734A JP4295912B2 JP 4295912 B2 JP4295912 B2 JP 4295912B2 JP 2000392734 A JP2000392734 A JP 2000392734A JP 2000392734 A JP2000392734 A JP 2000392734A JP 4295912 B2 JP4295912 B2 JP 4295912B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- skip
- point
- setting
- break
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、組み込みシステムのソフトウェア開発において、ソースプログラムを書き直してリコンパイルすることなく、ユーザが指定する、インストラクション、関数呼び出し、式の評価を実行しないようにする機能を備えたデバッグシステムに関する。
【0002】
【従来の技術】
組み込みシステムにおける従来のソフトウェア開発において、プログラム中のあるインストラクションの実行を省略したり、ある関数の呼び出しを省略したり、式の評価を省略し、省略した結果プログラムの動作がどのようになるかを把握するためには、ソースコードを書き直してリコンパイルし、プログラムを格納している記憶装置の例えばRAM上に再ダウンロードしたり、場合によってはROMに再記憶して実行しなければならなかった。
【0003】
こうした操作を行う場合には、修正後のプログラムのリコンパイル時間や、RAMへのダウンロード時間、ROMの再記憶時間が必要になっていた。また、ソースコードの変更によって生じるコードサイズの変化やコード配置の変化が、プログラムの動作にユーザが期待している以外の影響を与えてしまう可能性を含むというデメリットもあった。
【0004】
さらに、実行を省略したいインストラクションに対応するソースコードを入手できない場合には、ソースコードを変更することができないため、オブジェクトプログラムの対応するインストラクションを手作業でNOP命令に置き換えるといった面倒な作業を行わなければならなかった。また、式の評価を省略する場合に、式の評価における対応するインストラクションを単純にNOP命令に置き換え、レジスタの割り当てに矛盾が生じないか否かは、ユーザがアセンブラを解読して判断しなければならず、これらは極めて煩雑な作業であった。
【0005】
【発明が解決しようとする課題】
以上説明したように、従来のソフトウェアの開発評価において、プログラム中の所定の処理を省略する場合があった。このような場合に、省略後のプログラムの動作を把握するには、プログラムの省略修正後のリコンパイル、リコンパイルしたプログラムの再記憶、といった作業が必要となり、多くの手間と時間がかかるといった不具合を招いていた。また、ソースプログラムが手に入らない場合には、オブジェクトプログラムを手作業で修正しなければならず、面倒な作業を強いられていた。さらに、式評価の省略においては、ユーザが省略後の矛盾を判断しなければならず、作業が煩雑になっていた。
【0006】
そこで、この発明は、上記に鑑みてなされたものであり、その目的とするところは、プログラム中の所定の処理の省略作業が容易に行え、ソフトウェアの開発評価の作業性を改善したデバッグシステムを提供することにある。
【0007】
【課題を解決するための手段】
上記目的を達成するために、課題を解決する第1の手段は、開発評価しようとするソフトウェアにおいて実行を省略(スキップ)するインストラクションの位置に、インストラクションスキップポイントを設定する、又は前記インストラクションスキップポイントの設定を解除する指示を受けて、該指示をインストラクションスキップポイント設定又は解除のコマンドとして送信するデバッガと、実行を一時停止するインストラクションの位置に設定されたブレークポイントの設定位置情報と、前記インストラクションスキップポイントの設定位置情報を有するブレーク・スキップテーブルを備え、前記デバッガから送信されたコマンドを受けて、前記ブレーク・スキップテーブルを調査し、調査結果に基づいて、ブレークポイントが設定されていないインストラクションにインストラクションスキップポイントを設定する場合は設定するインストラクションをNOP命令に置き換え、解除する場合にはNOP命令を元のインストラクションに戻し、前記ブレーク・スキップテーブルの設定位置情報を更新し、インストラクションスキップポイントの設定、解除情報を前記デバッガに送信し、ブレークポイントが設定されているインストラクションにインストラクションスキップポイントを設定する場合には、前記ブレーク・スキップテーブルの該当エントリーをブレークポイントからブレークポイントかつスキップポイントに変更し、かつ設定するインストラクションをブレーク発生命令のままとし、解除する場合には、前記ブレーク・スキップテーブルの該当エントリーをブレークポイントかつスキップポイントからブレークポイントに変更し、かつブレーク発生命令をそのままとし、前記ブレーク・スキップテーブルの設定位置情報を更新し、ブレーク・スキップ設定、解除情報を前記デバッガに送信し、前記ブレーク発生命令が実行されてブレークが発生してステップ実行、実行継続が指示された場合には、NOP命令を実行するデバッグモニタ手段とを有することを特徴とする。
【0008】
第2の手段は、前記第1の手段において、開発評価しようとするソフトウェアのソースプログラム上の関数呼び出し位置と、関数呼び出しに対応するジャンプ命令のアドレスの情報を有する関数呼び出しスキップテーブルを生成して備え、該関数呼び出しスキップテーブルをデバッグ情報として出力するコンパイラとリンカを具備し、前記デバッガは、開発評価しようとするソフトウェアにおいて実行を省略(スキップ)する関数呼び出しの位置に、関数呼び出しスキップポイントを設定する、又は前記関数呼び出しスキップポイントの設定を解除する指示を受けて、前記関数呼び出しスキップテーブルを調査し、調査結果に基づいて前記指示をインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信することを特徴とする。
【0009】
第3の手段は、前記第1の手段において、開発評価しようとするソフトウェアのソースプログラム上の式の内、式に対応するアドレス範囲のインストラクションをNOP命令に置換した場合にレジスタ割り当てに矛盾が生じない式の行番号と、該番号に対応するインストラクションの開始及び終了アドレスの情報を有する式評価スキップテーブルを生成して備え、該式評価スキップテーブルをデバッグ情報として出力するコンパイラとリンカを具備し、前記デバッガは、開発評価しようとするソフトウェアにおいて実行を省略(スキップ)する式の位置に、式評価スキップポイントを設定する、又は前記式評価スキップポイントの設定を解除する指示を受けて、前記式評価スキップテーブルを調査し、前記指示が可能か否かを判別し、可能な場合には前記指示をインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信することを特徴とする。
【0010】
第4の手段は、前記第3の手段において、前記デバッガは、前記指示が可能な場合には、前記式に対応したアドレス範囲のインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信し、前記デバッグモニタ手段は、前記デバッガが送信したコマンドに対応可能であることを特徴とする。
【0011】
【発明の実施の形態】
以下、図面を用いてこの発明の実施形態を説明する。
【0012】
本発明のデバッグシステムは、組み込みシステムのソフトウェア開発において、ソースプログラムを書き直してリコンパイルすることなく、ユーザが指定する、インストラクションや、関数呼び出し、式の評価を実行しないようにする機能を備えたものである。以下、リコンパイルすることなく上記3種類の実行を省略することをそれぞれ、インストラクションスキップ、関数呼び出しスキップ、式評価スキップと呼ぶことにし、スキップする場所のことを、スキップポイントと呼ぶことにする。このようなスキップポイントを、従来のブレークポイント設定時と同じような操作により設定できるようにしている。また、インストラクションスキップ、関数呼び出しスキップ、式評価スキップのいずれも、デバッグシステムを構成するデバッガと通信するデバッグモニタ手段(モニタプログラム)が、対応する命令をNOP命令に書き換えることにより設定する。
【0013】
以下、インストラクションスキップ機能を備えたデバッグシステムを実施形態1に、関数呼び出しスキップ機能を備えたデバッグシステムを実施形態2に、式評価スキップ機能を備えたデバッグシステムを実施形態3で説明する。さらに、式評価スキップ機能の別の実施形態を実施形態4に、また、インストラクション、関数呼び出し、式評価の3つのスキップ機能を備えたデバッグシステムを実施形態5で説明する。
【0014】
図1はこの発明の実施形態1に係わるデバッグシステムに含まれるデバッガの表示例を示す図である。この実施形態1のデバッグシステムは、インストラクションスキップ機能を実現するために、開発ホストコンピュータ上で動作するデバッガと、デバッガと通信するデバッグモニタ手段として作用するモニタプログラムを備え、このデバッガならびにモニタプログラムに以下に示す新規な機能を拡張することにより実装される。
【0015】
図1において、デバッガ11は、インストラクションスキップポイントを設定しようとする箇所の前後のプログラムが表示された図1に示す表示画面12において、ユーザから「インストラクションスキップポイント」の設定を指示するインタフェースとして、例えばユーザが「インストラクションスキップポイント」のボタン13をクリックすることにより、「インストラクションスキップポイント設定」や「インストラクションスキップポイント解除」の指示を受け、モニタプログラムにコマンドとして伝える機能と、モニタプログラムから返された結果を表示する機能を備えている。
【0016】
モニタプログラムは、従来から持っていたブレークポイントテーブルを拡張した、ブレーク・スキップテーブル14を備え、デバッガ11からのコマンドに応じてテーブル14を調査、更新し、RAM上のプログラムを書き換え、書き換え後のプログラムをデバッガ11に戻す機能を備えている。ブレーク・スキップテーブル14の一例を図2に示す。
【0017】
図2において、ブレーク・スキップテーブル14は、ブレークポイントやスキップポイントが設定されたインストラクションのアドレス、設定前のインストラクション、何が設定されているかの種類を示すテーブルである。テーブル14のアドレスの欄が「0x00000000」を示しているエントリーは空きを示しており、アドレスの欄が「0x00000000」以外の値を示すエントリーは意味を持つことを示す。設定される種類としては、「ブレークポイント」、「スキップポイント」、「ブレークポイントかつスキップポイント」の3種類が存在する。
【0018】
次に、インストラクションスキップポイントを設定する際のユーザの操作(1)、その際のデバッガ1の作用(2)、モニタプログラムの作用(3)と、インストラクションスキップポイントを解除するときのユーザの操作(4)、デバッガ1の作用(5)、モニタプログラムの作用(6)を、図3に示すスキップポイントが正常に設定される際の流れを参照して説明する。
【0019】
インストラクションスキップポイントを設定する際のユーザの操作(1)として、ユーザは、デバッガ11にインストラクションスキップポイント設定の指示を与える。これに対して、デバッガ11の作用(2)として、デバッガ11はユーザからの指示を、「○○番地にスキップポイントを設定する」というコマンドに置き換えてモニタプログラムに送信する。なお、デバッガ11は、モニタプログラムの作用(3)で示すモニタプログラムの作用の結果返信された値をデバッグウィンドウに表示してもよい。例えば正常に設定できた場合には、図1に示すようにインストラクションを表示している横に、インストラクションスキップポイントを示すマークを表示する。
【0020】
モニタプログラムの作用(3)としては、図2に示すブレーク・スキップテーブル14を調べ、調査結果に応じて次のような動作を行う。テーブル14に対応する番地を示すエントリーが存在しない場合には、ブレーク・スキップテーブル14の空いているエントリーに、対応するインストラクションのアドレスを挿入し、そのアドレスにあるインストラクションの内容をブレーク・スキップテーブル14にセーブする。テーブル14の種類の欄には、「スキップポイント」を設定する。その後、対応するオブジェクトプログラムのアドレスにNOP命令を埋め込み、デバッガ11に対して設定が正常に終了した旨を知らせる。
【0021】
一方、テーブル14に対応する番地を示すエントリーが存在し、かつブレークポイントが設定されている場合には、テーブル14の種類の欄に、「ブレークポイントかつスキップポイント」を設定する。対応するアドレスのインストラクションは、ソフトウェアブレーク命令、あるいは類似の動作を行う命令のままにしておき、デバッガ11に対して設定が正常に終了した旨を知らせる。「ブレークポイントかつスキップポイント」が設定されたアドレスが実行されブレーク例外、あるいは類似の例外が発生し、モニタプログラムがブレークに対応するコードに入った場合に、デバッガ11からのステップ実行や、実行継続などのコマンドが与えられると、ブレークポイント設定前のインストラクションではなく、NOP命令を実行する。また、対応する番地を示すエントリーが存在し、「スキップポイント」あるいは「ブレークポイントかつスキップポイント」が既に設定されている場合には、既に設定済みである旨をデバッガ11に通知する。
【0022】
インストラクションスキップポイントを解除するときのユーザの操作(4)として、ユーザは、デバッガ11に対して解除するインストラクションの位置のスキップポイント設定解除を指示する。これに対して、デバッガ11の作用(5)は、ユーザからの指示を、「○○番地のスキップポイントを解除する」というコマンドに置き換えてモニタプログラムに送信する。なお、モニタプログラムの動作(6)で示すモニタプログラムからの返信をデバッグウィンドウに表示するようにしてもよい。例えば正常に解除できた場合には、インストラクションスキップポイントを示すマークの表示を消去する。
【0023】
モニタプログラムの作用(6)として、モニタプログラムは、ブレーク・スキップテーブル14を調査し、調査結果に応じて次のような動作を行う。まず、テーブル14の対応する番地を示すエントリーが存在しない、あるいは存在するが「ブレークポイント」しか設定されていない場合には、スキップポイントが設定されていない旨をデバッガ11に通知する。一方、テーブル14の対応する番地を示すエントリーが存在し、かつ「スキップポイント」が設定されていた場合には、スキップポイント設定前のインストラクションを、オブジェクトプログラムの対応するアドレスにストアする。その後、ブレーク・スキップテーブル14の対応するエントリーのアドレスの欄に「0x00000000」を書き込むことにより、そのエントリーを消去し、デバッガ11に、スキップポイントの解除が正常に行われた旨を通知する。また、テーブル14の対応する番地を示すエントリーが存在し、かつ「ブレーク・スキップポイント」が設定されていた場合には、ブレーク・スキップテーブル14の対応するエントリーの種類の欄を、「ブレークポイント」に変更し、デバッガ11にスキップポイント解除が正常に行われた旨を通知する。なお、そのアドレスの命令実行によりブレークが発生した際のモニタプログラムの作用は、従来のブレークが発生した場合と全く同様である。
【0024】
従来であれば、ソースファイルの特定位置をコメントアウトした際の効果を知るためには、ソースファイルを書き換え、リコンパイルし、再ロードして実行しなければならなかったものが、上記実施形態においては、その操作が必要なくなるために、リコンパイル時間、再ロード時間が短縮できる。また、リコンパイルをしないですむことにより、コードの配置位置などに影響が発生しないため、ユーザの望まない不具合が発生しない。
【0025】
次に、この発明の実施形態2を説明する。
【0026】
この実施形態2のデバッグシステムは、先の実施形態1で説明したデバッガとモニタプログラムに加えてコンパイラとリンカを備え、コンパイラとリンカは、関数呼び出しスキップを行うためのデバッグ情報を出力するよう機能拡張され、またデバッガはコンパイラとリンカが出力するデバッグ情報を解釈できるように機能拡張されて実装され、関数呼び出しスキップ機能を実現している。
【0027】
関数呼び出しスキップを行うためのデバッグ情報を、関数呼び出しスキップテーブルと呼ぶことにする。この関数呼び出しスキップテーブル22の一例を、この実施形態2のデバッガ21が関数呼び出しスキップを行うプログラムを画面表示した際の画面表示例とともに図4に示す。図4において、このテーブル22は、ソースコード上の関数呼び出しに対応するジャンプ命令、あるいはそれに相当する命令が配置されるアドレスと、ソースコード上の行番号を対応させるテーブルであり、ソースファイル名、ソースコード行番号、ジャンプ命令のアドレスの情報を有している。
【0028】
次に、関数呼び出しスキップポイントを設定する際のユーザの操作(1)、その際のデバッガ21の作用(2)、モニタプログラムの作用(3)と、インストラクションスキップポイントを解除するときのユーザの操作(4)、その際のデバッガ21の作用(5)、モニタプログラムの作用(6)を、図5に示す関数呼び出しスキップポイント設定が正常に行われるフロー図を参照して説明する。
【0029】
関数呼び出しスキップポイントを設定する際のユーザの操作(1)として、ユーザは、例えば先の実施形態1と同様の入力インターフェースによりデバッガ21に関数呼び出しのスキップポイント設定を指示する。これに対してデバッガ21は、ユーザからの指示に基づいて関数呼び出しスキップテーブル22を調査し、調査結果に応じて次の動作を行う。スキップポイントの設定に対応するソースコード行が、関数呼び出しスキップテーブル22に存在しない場合には、デバッガ21はモニタプログラムに対して何のコマンドも発行しない。この場合に、関数呼び出しスキップポイントを、ユーザ指定個所に設定できない旨を表示するようにしてもよい。
【0030】
一方、スキップポイントの設定に対応するソースコード行が、関数呼び出しスキップテーブル22に存在する場合には、デバッガ21はモニタプログラムに対して、関数呼び出しスキップテーブル22に示されたアドレスを用いて「○○番地にスキップポイントを設定せよ」というコマンドを発行する。なお、デバッガ21は、モニタプログラムの作用(3)で示すモニタ動作の結果返された値をデバッグウィンドウに表示するようにしてもよい。この場合に、例えば正常に設定できた場合は、ソースコードの関数呼び出しを表示している横に関数呼び出しスキップポイントを示すマークを表示する。あるいは、ジャンプ命令を表示している横にインストラクションスキップを示すマークを表示する。
【0031】
モニタプログラムは、先の実施形態1のモニタプログラムの作用(3)と同様である。
【0032】
ユーザの操作(4)として、ユーザは、デバッガ21に対して所望の関数呼び出しのスキップポイント設定解除を指示する。その際のデバッガ21の作用(5)として、デバッガ21はユーザからの指示に基づき関数呼び出しスキップテーブル22を調査し、調査結果に応じて次の動作を行う。スキップポイントの設定解除に対応するソースコード行が、関数呼び出しスキップテーブルに存在しない場合には、デバッガ21はモニタプログラムに対して何のコマンドも発行しない。なお、関数呼び出しスキップポイントの解除を、ユーザ指定箇所に設定できない旨を表示してもよい。
【0033】
一方、スキップポイント設定解除に対応するソースコード行が、関数呼び出しスキップテーブルに存在する場合には、デバッガ21は、モニタプログラムに対して関数呼び出しスキップテーブル22に示されたアドレスを用いて「○○番地のスキップポイントを解除せよ」というコマンドを発行する。なお、デバッガ21は、モニタプログラムの作用(6)で示すモニタプログラムの作用の結果返された値をデバッグウィンドウに表示するようにしてもよい。この場合に、正常に解除できた場合は、関数呼び出しスキップポイントを示すマークの表示を消去する、あるいは対応するインストラクションスキップポイントを示すマークの表示を消去する。モニタプログラムの作用(6)は、先の実施形態1のモニタプログラムの作用(6)と同様である。
【0034】
このような実施形態にあっては、コンパイラ、リンカがソースプログラムから関数読み出しスキップテーブル22のデバッグ情報を生成し、このテーブル22に基づいて関数読み出しのスキップポイントを設定あるいは解除するようにしているので、関数読み出しスキップポイントの設定、解除において先の実施形態1と同様の効果を得ることができる。
【0035】
次に、この発明の実施形態3について説明する。
【0036】
この実施形態3のデバッグシステムは、先の実施形態1で説明したデバッガとモニタプログラムに加えてコンパイラとリンカを備え、コンパイラとリンカは、式評価スキップを行うためのデバッグ情報を出力するように機能拡張され、またデバッガはコンパイラとリンカが出力するデバッグ情報を解釈できるように機能拡張されて実装され、式評価スキップ機能を実現している。式評価スキップを行うためのデバッグ情報を、式評価スキップテーブルと呼ぶことにする。この式評価スキップテーブルは、ソースコード上の式の行番号と、それに対応するインストラクション列のアドレス(開始アドレスと終了アドレス)の情報を持ったものであり、コンパイラ、リンカがソースプログラムに基づいて生成する。式評価をスキップするためには、次の条件を兼ね備えることが必要である。
【0037】
(A)その式の評価の前後で、レジスタ割付が変化しない
(B)その式の評価をスキップした場合に、不定値となる値が発生しない
上記(A)や(B)の条件にしたがって作成される評価スキップテーブル31の一例を、この実施形態3のデバッガが式評価スキップを行うプログラムを画面表示した際の画面表示例とともに図6あるいは図7に示す。
【0038】
次に、式評価スキップポイントを設定する際のユーザの操作(1)、その際のデバッガの作用(2)、モニタプログラムの作用(3)と、式評価スキップポイントを解除するときのユーザの操作(4)、その際のデバッガの作用(5)、モニタプログラムの作用(6)を説明する。
【0039】
式評価スキップポイントを設定する際のユーザの操作(1)として、ユーザは、デバッガに式評価スキップポイント設定を、例えば先の実施形態1と同様の入力インターフェースにより指示する。デバッガの作用(2)としてデバッガは、ユーザからの指示に基づき式評価スキップテーブル31を調査し、調査結果に応じて次の動作を行う。式評価スキップポイントの設定に対応するソースコード行が、式評価スキップテーブル31に存在しない場合は、デバッガはモニタプログラムに対して何のコマンドも発行しない。この場合に、式評価スキップポイントを、ユーザ指定箇所に設定できない旨を表示するようにしてもよい。一方、式評価スキップポイントの設定に対応するソースコード行が、式評価スキップテーブル31に存在する場合には、デバッガはモニタプログラムに対して式評価スキップテーブル31に示された開始アドレスから、終了アドレスまですべてに対して「○○番地にスキップポイントを設定せよ」というコマンドを発行する。なお、デバッガは、モニタプログラムの作用(3)で示すモニタプログラムの作用の結果返された値をデバッグウィンドウに表示するようにしてもよい。この場合に、例えば正常に設定できた場合は、ソースコードの式表示の横に式評価スキップポイントを示すマークを表示する、あるいは対応するインストラクション列の表示の横に、インストラクションスキップポイントを示すマークを表示する。
【0040】
モニタプログラムの作用(3)は、先の実施形態1のモニタプログラムの作用(3)と同様である。
【0041】
式評価スキップポイントを解除するときのユーザの操作(4)として、ユーザは、デバッガに対して所望の式評価スキップポイント設定解除を指示する。これに対して、デバッガの作用(5)としてデバッガは、ユーザからの指示に基づき式評価スキップテーブル31を調査し、調査結果に応じて次の動作を行う。式評価スキップポイント設定解除に対応するソースコード行が、式評価スキップテーブル31に存在しない場合は、デバッガはモニタプログラムに対して、何のコマンドも発行しない。この場合に、式評価スキップポイントの解除をユーザ指定個所に設定できない旨を表示するようにしてもよい。
【0042】
一方、式評価スキップポイントの解除に対応するソースコード行が、式評価スキップテーブル31に存在する場合には、デバッガはモニタプログラムに対して、式評価スキップテーブル31に示された開始アドレスから終了アドレスまですべてに対して「○○番地のスキップポイントを解除せよ」というコマンドを発行する。なお、デバッガは、モニタプログラムの作用(3)で示すモニタプログラムの作用の結果返された値をデバッグウィンドウに表示するようにしてもよい。この場合に、例えば正常に解除できた場合は、対応する式評価スキップポイントを示すマークやインストラクションスキップを示すマークの表示を削除する。モニタプログラムの作用(6)は、先の実施形態1のモニタプログラムの作用(6)と同様である。
【0043】
このような実施形態にあっては、コンパイラ、リンカがソースプログラムから式評価スキップテーブル31のデバッグ情報を生成し、このテーブル31に基づいて式評価のスキップポイントを設定あるいは解除するようにしているので、式評価スキップポイントの設定、解除において先の実施形態1と同様の効果を得ることができる。
【0044】
なお、この発明は、上記実施形態に限ることはなく、実施形態4として、先の実施形態3に対して、ユーザは式評価スキップの設定又は解除を実行する位置を範囲として、例えば「○○アドレスから××アドレスまでスキップポイントを設定(又は解除)」というように指示可能とて、この指示に対してデバッガは、「○○アドレスから××アドレスまでスキップ実行を設定せよ」というコマンドと、「○○アドレスから××アドレスまでのスキップ実行を解除せよ」というコマンドを発行できるように機能拡張され、モニタプログラムは、デバッガが発行したコマンドを受け付けて式評価スキップの設定又は解除をできるようにしてもよい。このような実施形態においては、式評価のスキップポイントを所定の範囲で設定、解除する場合に、先の実施形態3に比べて容易に行うことが可能となる。
【0045】
また、実施形態5として、先の実施形態1、実施形態2ならびに実施形態3又は実施形態4を組み合わせて、インストラクション、関数呼び出し、式評価のスキップ機能を備えた実施形態であってもよい。
【0046】
【発明の効果】
以上説明したように、この発明によれば、省略処理の指示を受けると、スキップテーブルを参照し、参照結果に基づいて実行を省略するインストラクションをNOP命令に置換するようにしたので、プログラム中の所定の処理の省略作業が容易に行え、ソフトウェアの開発評価の作業性を改善することができる。
【図面の簡単な説明】
【図1】この発明の実施形態1に係わるデバッグシステムに含まれるデバッガの画面表示例を示す図である。
【図2】ブレーク・スキップテーブルの一例を示す図である。
【図3】インストラクションスキップポイント設定の流れを示す図である。
【図4】この発明の実施形態2に係わるデバッグシステムに含まれるデバッガの画面表示例、ならびに関数呼び出しスキップテーブルの一例を示す図である。
【図5】関数呼び出しスキップポイント設定の流れを示す図である。
【図6】この発明の実施形態3に係わるデバッグシステムに含まれるデバッガの画面表示例、ならびに式評価スキップテーブルの一例を示す図である。
【図7】この発明の実施形態3に係わるデバッグシステムに含まれるデバッガの画面表示例、ならびに式評価スキップテーブルの他の一例を示す図である。
【符号の説明】
11,21 デバッガ
12 表示画面
13 ボタン
14 ブレーク・スキップテーブル
22 関数呼び出しスキップテーブル
31 式評価スキップテーブル
Claims (4)
- 開発評価しようとするソフトウェアにおいて実行をスキップするインストラクションの位置に、インストラクションスキップポイントを設定する、又は前記インストラクションスキップポイントの設定を解除する指示を受けて、該指示をインストラクションスキップポイント設定又は解除のコマンドとして送信するデバッガと、
実行を一時停止するインストラクションの位置に設定されたブレークポイントの設定位置情報と、前記インストラクションスキップポイントの設定位置情報を有するブレーク・スキップテーブルを備え、前記デバッガから送信されたコマンドを受けて、前記ブレーク・スキップテーブルを調査し、調査結果に基づいて、ブレークポイントが設定されていないインストラクションにインストラクションスキップポイントを設定する場合は設定するインストラクションをNOP命令に置き換え、解除する場合にはNOP命令を元のインストラクションに戻し、前記ブレーク・スキップテーブルの設定位置情報を更新し、インストラクションスキップポイントの設定、解除情報を前記デバッガに送信し、ブレークポイントが設定されているインストラクションにインストラクションスキップポイントを設定する場合には、前記ブレーク・スキップテーブルの該当エントリーをブレークポイントからブレークポイントかつスキップポイントに変更し、かつ設定するインストラクションをブレーク発生命令のままとし、解除する場合には、前記ブレーク・スキップテーブルの該当エントリーをブレークポイントかつスキップポイントからブレークポイントに変更し、かつブレーク発生命令をそのままとし、前記ブレーク・スキップテーブルの設定位置情報を更新し、ブレーク・スキップ設定、解除情報を前記デバッガに送信し、前記ブレーク発生命令が実行されてブレークが発生してステップ実行、実行継続が指示された場合には、NOP命令を実行するデバッグモニタ手段と
を有することを特徴とするデバッグシステム。 - 開発評価しようとするソフトウェアのソースプログラム上の関数呼び出し位置と、関数呼び出しに対応するジャンプ命令のアドレスの情報を有する関数呼び出しスキップテーブルをデバッグ情報として出力するコンパイラとリンカを具備し、
前記デバッガは、開発評価しようとするソフトウェアにおいて実行をスキップする関数呼び出しの位置に、関数呼び出しスキップポイントを設定する、又は前記関数呼び出しスキップポイントの設定を解除する指示を受けて、前記関数呼び出しスキップテーブルを調査し、調査結果に基づいて前記指示をインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信する
ことを特徴とする請求項1記載のデバッグシステム。 - 開発評価しようとするソフトウェアのソースプログラム上の式の内、式に対応するアドレス範囲のインストラクションをNOP命令に置換した場合にレジスタ割り当てに矛盾が生じない式の行番号と、該番号に対応するインストラクションの開始及び終了アドレスの情報を有する式評価スキップテーブルをデバッグ情報として出力するコンパイラとリンカを具備し、
前記デバッガは、開発評価しようとするソフトウェアにおいて実行を省略(スキップ)する式の位置に、式評価スキップポイントを設定する、又は前記式評価スキップポイントの設定を解除する指示を受けて、前記式評価スキップテーブルを調査し、前記指示が可能か否かを判別し、可能な場合には前記指示をインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信する
ことを特徴とする請求項1記載のデバッグシステム。 - 前記デバッガは、前記指示が可能な場合には、前記式に対応したアドレス範囲のインストラクションスキップポイント設定又は解除のコマンドに置き換えて前記デバッグモニタ手段に送信し、
前記デバッグモニタ手段は、前記デバッガが送信したコマンドに対応可能である
ことを特徴とする請求項3記載のデバッグシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000392734A JP4295912B2 (ja) | 2000-12-25 | 2000-12-25 | デバッグシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000392734A JP4295912B2 (ja) | 2000-12-25 | 2000-12-25 | デバッグシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002196950A JP2002196950A (ja) | 2002-07-12 |
JP4295912B2 true JP4295912B2 (ja) | 2009-07-15 |
Family
ID=18858678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000392734A Expired - Fee Related JP4295912B2 (ja) | 2000-12-25 | 2000-12-25 | デバッグシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4295912B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005242683A (ja) * | 2004-02-26 | 2005-09-08 | Mitsubishi Electric Corp | コンピュータを用いたプログラム作成装置 |
US10664384B2 (en) | 2013-03-15 | 2020-05-26 | Microsoft Technology Licensing, Llc | Javascript debugging using just my code |
-
2000
- 2000-12-25 JP JP2000392734A patent/JP4295912B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002196950A (ja) | 2002-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7661094B2 (en) | Real-time software diagnostic tracing | |
JP2795244B2 (ja) | プログラムデバッグシステム | |
US9122794B2 (en) | System and method for debugging domain specific languages | |
US20050268195A1 (en) | Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems | |
US6754891B1 (en) | Debugger system using tracepoints for computer software | |
US8745596B2 (en) | Program debugging with dynamically inserted instrumentation | |
JP2015141539A (ja) | 故障注入プログラム | |
US20040044930A1 (en) | System and method for controlling activity of temporary files in a computer system | |
US5963741A (en) | Information processor which rewrites instructions in program to dynamically change program structure and method therefor | |
JP4295912B2 (ja) | デバッグシステム | |
JP2002055848A (ja) | プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体 | |
JPH1021086A (ja) | プログラム変換装置とデバッグ装置 | |
JPH11110256A (ja) | プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体 | |
JP4962226B2 (ja) | 開発支援システム、開発支援装置、開発支援方法、および開発支援プログラム | |
WO2024069730A1 (ja) | デバッグ装置及びデバッグ方法 | |
JPH0561717A (ja) | プログラムデバツグ装置 | |
JPH07200350A (ja) | ソフトウェアデバッガ | |
JP2697230B2 (ja) | デバッグ支援装置 | |
JP2002366378A (ja) | プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体 | |
JP3101458B2 (ja) | プログラム異常検出装置 | |
JP2659366B2 (ja) | デバッグ方法及びその装置 | |
JP2002073370A (ja) | デバッグ支援装置およびその装置によるデバッグ方法 | |
JP2000122896A (ja) | デバッグ支援方法 | |
JPH1040131A (ja) | プログラムデバッグ方法 | |
JPH10214204A (ja) | デバッガー |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050308 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080219 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081028 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081127 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090317 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090413 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120417 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120417 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130417 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |