JPH08272648A - デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置 - Google Patents
デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置Info
- Publication number
- JPH08272648A JPH08272648A JP7285382A JP28538295A JPH08272648A JP H08272648 A JPH08272648 A JP H08272648A JP 7285382 A JP7285382 A JP 7285382A JP 28538295 A JP28538295 A JP 28538295A JP H08272648 A JPH08272648 A JP H08272648A
- Authority
- JP
- Japan
- Prior art keywords
- command
- debug command
- debug
- file
- breakpoint
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3624—Debugging of software by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【課題】 デバッグコマンドファイルを手作業によらず
自動的に生成する。 【解決手段】 埋め込みデバッグコマンド154を有す
るソースコードプログラム152と、アセンブラ156
を含むデバッグコマンドを再生成する方法および装置で
あって、アセンブラ156はソースコードプログラム1
52を処理して、埋め込みデバッグコマンド154を抽
出する一方、オブジェクトコード162を生成する。デ
バッグコマンドは、シミュレーションの際に使用するた
めにコマンドファイル158に格納される。シミュレー
タはアセンブルされたオブジェクトコード162をデバ
ッガと共同して実行し、デバッガは、実行サイクルにお
いて指定された時に、格納されたデバッグコマンドを実
行する。シミュレーションの実行が終了し、ソースプロ
グラムが修正されると、それに続くアセンブルの際に決
定される正しいアドレスによってデバッグコマンドは自
動的に再生成される。
自動的に生成する。 【解決手段】 埋め込みデバッグコマンド154を有す
るソースコードプログラム152と、アセンブラ156
を含むデバッグコマンドを再生成する方法および装置で
あって、アセンブラ156はソースコードプログラム1
52を処理して、埋め込みデバッグコマンド154を抽
出する一方、オブジェクトコード162を生成する。デ
バッグコマンドは、シミュレーションの際に使用するた
めにコマンドファイル158に格納される。シミュレー
タはアセンブルされたオブジェクトコード162をデバ
ッガと共同して実行し、デバッガは、実行サイクルにお
いて指定された時に、格納されたデバッグコマンドを実
行する。シミュレーションの実行が終了し、ソースプロ
グラムが修正されると、それに続くアセンブルの際に決
定される正しいアドレスによってデバッグコマンドは自
動的に再生成される。
Description
【0001】
【発明の属する技術分野】本発明は、一般的に、コンピ
ュータシステムに関するものであり、特に、シミュレー
タによるソースコードプログラムの修正の際に適切なア
ドレスにデバッグコマンドを自動的に再生成する装置お
よび方法に関するものである。
ュータシステムに関するものであり、特に、シミュレー
タによるソースコードプログラムの修正の際に適切なア
ドレスにデバッグコマンドを自動的に再生成する装置お
よび方法に関するものである。
【0002】
【従来の技術】本発明はコード開発の際に用いられる基
本的なデバッグ技術の改善を提供する。デバッグとは、
バグ、即ち、コンピュータプログラムの論理エラーを検
出し、トレースすることである。先行技術における典型
的なデバッグは、シミュレータとデバッガを利用するも
のである。シミュレータは、ソースプログラムから導出
されたオブジェクトコードを実行し、デバッガとの相互
作用により実行の流れを制御するのに用いられる。デバ
ッガは、通常、コマンド言語を有しており、それをデバ
ッグコマンドファイルからバッチ形式で実行できる。コ
マンドファイルは、一般的に、アドレス、行番号、ラベ
ルあるいはラベルからのオフセットにより示されるソー
スファイルの位置にブレークポイントを設定するブレー
クポイントコマンドを含んでいる。一般的に、プログラ
マが、シミュレーションの設定の際に、手作業でそれら
のブレークポイントコマンドを作成し、特定の命令の実
行の前に(絶対アドレスあるいはラベルで示される)ブ
レークポイントを設ける。
本的なデバッグ技術の改善を提供する。デバッグとは、
バグ、即ち、コンピュータプログラムの論理エラーを検
出し、トレースすることである。先行技術における典型
的なデバッグは、シミュレータとデバッガを利用するも
のである。シミュレータは、ソースプログラムから導出
されたオブジェクトコードを実行し、デバッガとの相互
作用により実行の流れを制御するのに用いられる。デバ
ッガは、通常、コマンド言語を有しており、それをデバ
ッグコマンドファイルからバッチ形式で実行できる。コ
マンドファイルは、一般的に、アドレス、行番号、ラベ
ルあるいはラベルからのオフセットにより示されるソー
スファイルの位置にブレークポイントを設定するブレー
クポイントコマンドを含んでいる。一般的に、プログラ
マが、シミュレーションの設定の際に、手作業でそれら
のブレークポイントコマンドを作成し、特定の命令の実
行の前に(絶対アドレスあるいはラベルで示される)ブ
レークポイントを設ける。
【0003】シミュレーションの際に、シミュレータ
は、指定されたブレークポイントに達するまでオブジェ
クトコードを実行する。ブレークポイントでは、デバッ
グコマンドを利用して、レジスタ、変数、および他のプ
ログラムパラメータが調べられる。あるパラメータが期
待される結果と異なる場合、ユーザは、プログラムにバ
グが存在するかもしれないことを知る。次いで、デバッ
グコマンドを利用してメッセージをプリントし、プログ
ラムを続けるか停止する。
は、指定されたブレークポイントに達するまでオブジェ
クトコードを実行する。ブレークポイントでは、デバッ
グコマンドを利用して、レジスタ、変数、および他のプ
ログラムパラメータが調べられる。あるパラメータが期
待される結果と異なる場合、ユーザは、プログラムにバ
グが存在するかもしれないことを知る。次いで、デバッ
グコマンドを利用してメッセージをプリントし、プログ
ラムを続けるか停止する。
【0004】
【発明が解決しようとする課題】ソースプログラムのエ
ラーが発見されると、新しいコードを生成するか、現在
のコードを修正あるいは完全に削除する。次いで、ソー
スプログラムは再アセンブルされる。従って、新しくア
センブルされたコードでは行番号が新しくなったり、命
令の相対アドレスが変化するため、元のソースコードに
基づいて確立されたブレークポイントを更新する必要が
生じ得る。絶対アドレス体系を利用する先行技術のデバ
ッガでは、シミュレーションの再実行をする場合、ブレ
ークポイントを設定する新しいアドレスを反映するよう
にエンドユーザがコマンドファイルを手作業で更新する
必要がある。デバッグ/シミュレーションが完了するま
で、このようにして手作業が対話的に繰り返される。
ラーが発見されると、新しいコードを生成するか、現在
のコードを修正あるいは完全に削除する。次いで、ソー
スプログラムは再アセンブルされる。従って、新しくア
センブルされたコードでは行番号が新しくなったり、命
令の相対アドレスが変化するため、元のソースコードに
基づいて確立されたブレークポイントを更新する必要が
生じ得る。絶対アドレス体系を利用する先行技術のデバ
ッガでは、シミュレーションの再実行をする場合、ブレ
ークポイントを設定する新しいアドレスを反映するよう
にエンドユーザがコマンドファイルを手作業で更新する
必要がある。デバッグ/シミュレーションが完了するま
で、このようにして手作業が対話的に繰り返される。
【0005】実行される対話的な手作業を最小にするこ
とを意図して、他の先行技術デバッガでは、絶対アドレ
スの代わりにラベルを用いている。そのようなデバッガ
システムでは、特定のブレークポイントをコマンドファ
イルの一部として最初に手作業で記述する際に、絶対ア
ドレスの代わりにラベルを用いている。アセンブリプロ
セスにおいては、アセンブルされているソースプログラ
ムの現行のバージョンに基づき、特定のラベルに対応す
る絶対アドレスを格納するためのシンボルテーブルが作
成される。したがって、修正されたソースプログラムを
再アセンブルする際には、各ラベルに対応する新しい絶
対アドレスによってシンボルテーブルが更新される。ソ
ースプログラムの更新毎にデバッグコマンドファイルを
手作業で編集する必要はないが、この「ラベル」体系
は、依然として不当に煩わしく非効率的である。第1
に、デバッグブレークポイントを最初に記述する際に
は、上記の「ラベル」体系を利用するユーザはソースプ
ログラムに適切なラベルを挿入しなければならず、ま
た、コマンドファイルを手作業で作成する必要もある。
第2に、最初にコマンドファイルを作成した後、ユーザ
が別のブレークポイントを追加設定することにした場
合、ソースプログラムに適切なラベルを挿入する必要が
あり、又、コマンドファイルに所望のブレークポイント
コマンドを手作業で追加する必要もある。それに加え、
ソースコードプログラム自体の一部としてのラベルは、
必然的にアセンブルされ、アセンブルされたオブジェク
トコードの一部となる。したがって、デバッグサイクル
の最後に手作業によってラベルを恒久的に取り除かれな
ければ、オブジェクトファイルに場所を占めてしまう。
繰り返し行われるデバッグプロセスの性質からして、デ
バッグコマンドファイルの手作業による操作を無くした
り、アセンブリステップを減少させたり、アセンブルさ
れたプログラムのサイズを最小にするという改善は、こ
の技術分野において歓迎されるであろう。
とを意図して、他の先行技術デバッガでは、絶対アドレ
スの代わりにラベルを用いている。そのようなデバッガ
システムでは、特定のブレークポイントをコマンドファ
イルの一部として最初に手作業で記述する際に、絶対ア
ドレスの代わりにラベルを用いている。アセンブリプロ
セスにおいては、アセンブルされているソースプログラ
ムの現行のバージョンに基づき、特定のラベルに対応す
る絶対アドレスを格納するためのシンボルテーブルが作
成される。したがって、修正されたソースプログラムを
再アセンブルする際には、各ラベルに対応する新しい絶
対アドレスによってシンボルテーブルが更新される。ソ
ースプログラムの更新毎にデバッグコマンドファイルを
手作業で編集する必要はないが、この「ラベル」体系
は、依然として不当に煩わしく非効率的である。第1
に、デバッグブレークポイントを最初に記述する際に
は、上記の「ラベル」体系を利用するユーザはソースプ
ログラムに適切なラベルを挿入しなければならず、ま
た、コマンドファイルを手作業で作成する必要もある。
第2に、最初にコマンドファイルを作成した後、ユーザ
が別のブレークポイントを追加設定することにした場
合、ソースプログラムに適切なラベルを挿入する必要が
あり、又、コマンドファイルに所望のブレークポイント
コマンドを手作業で追加する必要もある。それに加え、
ソースコードプログラム自体の一部としてのラベルは、
必然的にアセンブルされ、アセンブルされたオブジェク
トコードの一部となる。したがって、デバッグサイクル
の最後に手作業によってラベルを恒久的に取り除かれな
ければ、オブジェクトファイルに場所を占めてしまう。
繰り返し行われるデバッグプロセスの性質からして、デ
バッグコマンドファイルの手作業による操作を無くした
り、アセンブリステップを減少させたり、アセンブルさ
れたプログラムのサイズを最小にするという改善は、こ
の技術分野において歓迎されるであろう。
【0006】本発明の一つの目的は、ソースプログラム
から導出されるオブジェクトコードのシミュレーション
実行の際にデバッガにより用いられるデバッグコマンド
ファイルを自動的に生成する装置および方法を提供する
ことである。
から導出されるオブジェクトコードのシミュレーション
実行の際にデバッガにより用いられるデバッグコマンド
ファイルを自動的に生成する装置および方法を提供する
ことである。
【0007】本発明の別の目的は、最新のコマンドファ
イルに格納されるデバッグコマンドを自動的に再生成
し、基になるソースコードを修正する結果として新しく
なった任意のソースコード位置に、それらデバッグコマ
ンドを正確にリンクする方法および装置を提供すること
である。
イルに格納されるデバッグコマンドを自動的に再生成
し、基になるソースコードを修正する結果として新しく
なった任意のソースコード位置に、それらデバッグコマ
ンドを正確にリンクする方法および装置を提供すること
である。
【0008】本発明の別の目的は、後のアセンブルにお
いてデバッグコマンドを容易に再生成するために、ソー
スプログラムにおける特定の位置にデバッグコマンドを
リンクする方法および装置を提供することである。
いてデバッグコマンドを容易に再生成するために、ソー
スプログラムにおける特定の位置にデバッグコマンドを
リンクする方法および装置を提供することである。
【0009】本発明の別の目的は、ソースコードプログ
ラム行に埋め込まれたデバッグコマンドを識別する装置
および方法を提供することである。
ラム行に埋め込まれたデバッグコマンドを識別する装置
および方法を提供することである。
【0010】本発明の更に別の目的は、アセンブルの際
にソースプログラムから埋め込みコマンドを抽出して、
そのソースプログラムから導出されるオブジェクトコー
ドのシミュレーションの際にデバッガで用いられるコマ
ンドファイルを自動的に生成することである。
にソースプログラムから埋め込みコマンドを抽出して、
そのソースプログラムから導出されるオブジェクトコー
ドのシミュレーションの際にデバッガで用いられるコマ
ンドファイルを自動的に生成することである。
【0011】本発明の更に別の目的は、ソースプログラ
ムから導出され、デバッグコマンドあるいはそれに結び
付けられるラベルを含まない、アセンブルされたオブジ
ェクトコードを提供することである。
ムから導出され、デバッグコマンドあるいはそれに結び
付けられるラベルを含まない、アセンブルされたオブジ
ェクトコードを提供することである。
【0012】本発明の前記ならびにその他の目的と新規
な特徴は、本明細書の記述および添付図面から明らかに
なるであろう。
な特徴は、本明細書の記述および添付図面から明らかに
なるであろう。
【0013】
【課題を解決するための手段】本願において開示される
発明のうち、代表的なものの概要を簡単に説明すれば、
以下のとおりである。
発明のうち、代表的なものの概要を簡単に説明すれば、
以下のとおりである。
【0014】すなわち、前記および他の目的を達成する
ために、又、本発明の目的に従って、埋め込みデバッグ
コマンドを第1の識別可能なフィールドに有するソース
プログラムとアセンブラとを含む、デバッグコマンドを
再生成する方法および装置が提供される。アセンブラは
ソースコードを処理して、埋め込みデバッグコマンドお
よび対応するアドレス情報をソースコードから抽出し、
同時に、コンピュータの命令に必要なオブジェクトコー
ドを生成する。デバッグコマンドは、シミュレーション
の際に使用するために、コマンドファイルに格納され
る。シミュレータは、格納されたデバッグコマンドを実
行サイクルにおいて指定された時に実行するデバッガと
共同して、アセンブルされたオブジェクトコードを実行
する。シミュレーションモードが終了し、それに続いて
ソースプログラムが修正されると、デバッグコマンド
は、その後のアセンブルの際に決定される正しいアドレ
ス位置に自動的に再生成される。特に、編集されたソー
スファイルがロードされると、ブレークポイントはクリ
アされ、アセンブルのプロセスで抽出された埋め込みデ
バッグコマンドに基づいて、新しいコマンドファイルが
作られる。次いで、新しいデバッグコマンドファイルが
デバッガにより実行され、ブレークポイントは、確実
に、正しいソース行に設定される。埋め込みデバッグコ
マンドの実行はコマンド行オプションにより許可あるい
は非許可とされるので、デバッグが完了するとデバッグ
情報は出力されない。
ために、又、本発明の目的に従って、埋め込みデバッグ
コマンドを第1の識別可能なフィールドに有するソース
プログラムとアセンブラとを含む、デバッグコマンドを
再生成する方法および装置が提供される。アセンブラは
ソースコードを処理して、埋め込みデバッグコマンドお
よび対応するアドレス情報をソースコードから抽出し、
同時に、コンピュータの命令に必要なオブジェクトコー
ドを生成する。デバッグコマンドは、シミュレーション
の際に使用するために、コマンドファイルに格納され
る。シミュレータは、格納されたデバッグコマンドを実
行サイクルにおいて指定された時に実行するデバッガと
共同して、アセンブルされたオブジェクトコードを実行
する。シミュレーションモードが終了し、それに続いて
ソースプログラムが修正されると、デバッグコマンド
は、その後のアセンブルの際に決定される正しいアドレ
ス位置に自動的に再生成される。特に、編集されたソー
スファイルがロードされると、ブレークポイントはクリ
アされ、アセンブルのプロセスで抽出された埋め込みデ
バッグコマンドに基づいて、新しいコマンドファイルが
作られる。次いで、新しいデバッグコマンドファイルが
デバッガにより実行され、ブレークポイントは、確実
に、正しいソース行に設定される。埋め込みデバッグコ
マンドの実行はコマンド行オプションにより許可あるい
は非許可とされるので、デバッグが完了するとデバッグ
情報は出力されない。
【0015】
【発明の実施の形態】以下、本発明の実施の形態を図面
に基づいて詳細に説明する。
に基づいて詳細に説明する。
【0016】図1aは、デバッグコマンドを含むコマン
ドファイルを生成する典型的な先行技術のプロセスを示
すものである。まず、ユーザ(プログラマ)がソースコ
ードプログラム100を開発する。次いで、ソースコー
ドプログラム100はアセンブラ102にロードされて
アセンブルされる。その結果得られるオブジェクトコー
ド104は、シミュレータ/デバッガおよびソースコー
ドエディタ106により実行できる。
ドファイルを生成する典型的な先行技術のプロセスを示
すものである。まず、ユーザ(プログラマ)がソースコ
ードプログラム100を開発する。次いで、ソースコー
ドプログラム100はアセンブラ102にロードされて
アセンブルされる。その結果得られるオブジェクトコー
ド104は、シミュレータ/デバッガおよびソースコー
ドエディタ106により実行できる。
【0017】シミュレータ/デバッガおよびソースコー
ドエディタ106は、オブジェクトコード104の実行
を制御し、又、基になるソースコードプログラム100
を必要に応じて修正するための便利な手段となってい
る。シミュレータ/デバッガおよびソースコードエディ
タ106は、ユーザインターフェース108、シミュレ
ーションエンジン110およびデバッグエンジン112
を有している。プログラマは、ユーザインターフェース
108を用いて、基になるソースコードを検討し、プロ
グラムの実行途中でのチェックを行うためにプログラム
実行のブレークポイントを設けることができる。デバッ
グエンジン112は、ユーザインターフェース108に
より生成されたデバッグコマンドファイル114を、デ
バッグコマンドプロセッサによる実行のために受け取
る。普通、デバッグコマンドファイルに含まれるコマン
ドによって、ブレークポイントが様々な位置に設定さ
れ、各ブレークポイントにおいて出力されるべき何らか
のデバッグ情報が定められる。ブレークポイントとは、
シミュレーションエンジン110がオブジェクトコード
104の実行を停止するアドレス位置であり、又、デバ
ッグコマンドファイル114に格納されたデバッグコマ
ンドでそのアドレス位置に対応するものがデバッグコマ
ンドプロセッサにより実行される。又、プログラマは、
オブジェクトコードがロードされた後にコードを検討
し、ユーザインターフェース108を介して、プログラ
ムブレークポイントを手作業で挿入することもできる。
ドエディタ106は、オブジェクトコード104の実行
を制御し、又、基になるソースコードプログラム100
を必要に応じて修正するための便利な手段となってい
る。シミュレータ/デバッガおよびソースコードエディ
タ106は、ユーザインターフェース108、シミュレ
ーションエンジン110およびデバッグエンジン112
を有している。プログラマは、ユーザインターフェース
108を用いて、基になるソースコードを検討し、プロ
グラムの実行途中でのチェックを行うためにプログラム
実行のブレークポイントを設けることができる。デバッ
グエンジン112は、ユーザインターフェース108に
より生成されたデバッグコマンドファイル114を、デ
バッグコマンドプロセッサによる実行のために受け取
る。普通、デバッグコマンドファイルに含まれるコマン
ドによって、ブレークポイントが様々な位置に設定さ
れ、各ブレークポイントにおいて出力されるべき何らか
のデバッグ情報が定められる。ブレークポイントとは、
シミュレーションエンジン110がオブジェクトコード
104の実行を停止するアドレス位置であり、又、デバ
ッグコマンドファイル114に格納されたデバッグコマ
ンドでそのアドレス位置に対応するものがデバッグコマ
ンドプロセッサにより実行される。又、プログラマは、
オブジェクトコードがロードされた後にコードを検討
し、ユーザインターフェース108を介して、プログラ
ムブレークポイントを手作業で挿入することもできる。
【0018】シミュレータ/デバッガおよびソースコー
ドエディタ106は、ソースコードプログラム100の
シミュレーションの際に、コマンドファイル114と関
連させてオブジェクトコードを実行する。シミュレーシ
ョンが完了すると、検出された「バグ」を取り除くため
にソースコードプログラム100の修正が必要となるこ
とがある。ソースコード100に対する修正毎にプロセ
スが繰り返され、その度にユーザはコマンドファイル1
14を生成する(あるいは、手作業で再生成する)こと
になる。
ドエディタ106は、ソースコードプログラム100の
シミュレーションの際に、コマンドファイル114と関
連させてオブジェクトコードを実行する。シミュレーシ
ョンが完了すると、検出された「バグ」を取り除くため
にソースコードプログラム100の修正が必要となるこ
とがある。ソースコード100に対する修正毎にプロセ
スが繰り返され、その度にユーザはコマンドファイル1
14を生成する(あるいは、手作業で再生成する)こと
になる。
【0019】図1bは、本発明の好適な実施の形態によ
る、デバッグコマンドを含むコマンドファイルを生成す
るプロセスを示している。第1に、ユーザ(プログラ
マ)は、埋め込みデバッグコマンド154を含むソース
コードプログラム152を開発する。次いで、ソースコ
ードプログラム152および埋め込みデバッグコマンド
154は、アセンブルのためにアセンブラ156にロー
ドされる。本発明のアセンブラ156は、埋め込みデバ
ッグコマンド154を抽出し、埋め込みデバッグコマン
ド154に対応するブレークポイントコマンド160を
含むコマンドファイル158を生成する。アセンブラ1
56は、同時に、ソースコードをアセンブルして、アセ
ンブルされたオブジェクトコード162を生成する。結
果として得られるオブジェクトコード162およびコマ
ンドファイル158は、この段階でシミュレータ/デバ
ッガおよびソースコードエディタ164により実行可能
な状態となっている。プログラムの実行あるいは停止の
後に、コマンドファイル158から、古い埋め込みデバ
ッグコマンド154に対応するすべてのブレークポイン
トをワイプクリーン(wiped clean) する。その後、ユー
ザインターフェース166によりソースコード152が
修正され、元の埋め込みデバッグコマンド154を含む
新しいソースコード170が得られる。新しいソースコ
ード170は、各埋め込みデバッグコマンド154に対
する1セットの新しい正確なブレークポイント位置を自
動的に生成するために、アセンブラ156にロードする
ことができる。
る、デバッグコマンドを含むコマンドファイルを生成す
るプロセスを示している。第1に、ユーザ(プログラ
マ)は、埋め込みデバッグコマンド154を含むソース
コードプログラム152を開発する。次いで、ソースコ
ードプログラム152および埋め込みデバッグコマンド
154は、アセンブルのためにアセンブラ156にロー
ドされる。本発明のアセンブラ156は、埋め込みデバ
ッグコマンド154を抽出し、埋め込みデバッグコマン
ド154に対応するブレークポイントコマンド160を
含むコマンドファイル158を生成する。アセンブラ1
56は、同時に、ソースコードをアセンブルして、アセ
ンブルされたオブジェクトコード162を生成する。結
果として得られるオブジェクトコード162およびコマ
ンドファイル158は、この段階でシミュレータ/デバ
ッガおよびソースコードエディタ164により実行可能
な状態となっている。プログラムの実行あるいは停止の
後に、コマンドファイル158から、古い埋め込みデバ
ッグコマンド154に対応するすべてのブレークポイン
トをワイプクリーン(wiped clean) する。その後、ユー
ザインターフェース166によりソースコード152が
修正され、元の埋め込みデバッグコマンド154を含む
新しいソースコード170が得られる。新しいソースコ
ード170は、各埋め込みデバッグコマンド154に対
する1セットの新しい正確なブレークポイント位置を自
動的に生成するために、アセンブラ156にロードする
ことができる。
【0020】図2は、本発明の好適な実施の形態におい
て用いられるソースコードプログラム200の一部を示
している。このソースコードプログラム200は、コメ
ント206あるいは埋め込みデバッグコマンド208を
格納するコメントフィールド204を有する、個々のプ
ログラム行202および203を含んでいる。ユーザ
は、ソースコードプログラムを編集する際に、デバッグ
コマンドを追加することができる。一般的には、デバッ
グコマンドはプログラムパラメータを評価し、次いで、
オブジェクトコードの実行を続けるべきか停止すべきか
を決定する。シミュレーションを実施しているオペレー
タにステータスを示すために、デバッグコマンドが値や
メッセージをプリント出力する場合もしばしばある。好
適な実施の形態では、デバッグコマンドは、それが通常
のコメントではないことを示すために、コメントの始ま
りに特別な接頭語210が置かれたコメントとしてソー
スコードプログラム200のコメントフィールド204
に書かれる。
て用いられるソースコードプログラム200の一部を示
している。このソースコードプログラム200は、コメ
ント206あるいは埋め込みデバッグコマンド208を
格納するコメントフィールド204を有する、個々のプ
ログラム行202および203を含んでいる。ユーザ
は、ソースコードプログラムを編集する際に、デバッグ
コマンドを追加することができる。一般的には、デバッ
グコマンドはプログラムパラメータを評価し、次いで、
オブジェクトコードの実行を続けるべきか停止すべきか
を決定する。シミュレーションを実施しているオペレー
タにステータスを示すために、デバッグコマンドが値や
メッセージをプリント出力する場合もしばしばある。好
適な実施の形態では、デバッグコマンドは、それが通常
のコメントではないことを示すために、コメントの始ま
りに特別な接頭語210が置かれたコメントとしてソー
スコードプログラム200のコメントフィールド204
に書かれる。
【0021】好適な実施の形態のデバッグコマンドを他
の方法でソースプログラムのターゲット行に埋め込むこ
とができることは、当業者には認められるであろう。ソ
ースプログラムの特定の言語上の必要によっては、ソー
スコードのターゲット行の他の位置の方が埋め込みのた
めにもっと適切かもしれない。コメントフィールド以外
の領域に埋め込みコマンドを配置する場合には、デバッ
グコマンドを抽出しコマンドファイルに挿入するアセン
ブラに、それに対応する変更が求められることは、当業
者には認められるであろう。コメントフィールドおよび
好適な実施の形態で用いられる特定の識別子について述
べたが、本発明の趣旨から逸脱することなく、他のフィ
ールドや識別子手段を選択することができる。したがっ
て、デバッグコマンドの埋め込みは、所定のソースコー
ドプログラムのための特定の行フォーマットには依存し
ておらず、所定のソースコードプログラムにおける生成
および識別、そしてそのプログラムからの除去ができれ
ばよい。
の方法でソースプログラムのターゲット行に埋め込むこ
とができることは、当業者には認められるであろう。ソ
ースプログラムの特定の言語上の必要によっては、ソー
スコードのターゲット行の他の位置の方が埋め込みのた
めにもっと適切かもしれない。コメントフィールド以外
の領域に埋め込みコマンドを配置する場合には、デバッ
グコマンドを抽出しコマンドファイルに挿入するアセン
ブラに、それに対応する変更が求められることは、当業
者には認められるであろう。コメントフィールドおよび
好適な実施の形態で用いられる特定の識別子について述
べたが、本発明の趣旨から逸脱することなく、他のフィ
ールドや識別子手段を選択することができる。したがっ
て、デバッグコマンドの埋め込みは、所定のソースコー
ドプログラムのための特定の行フォーマットには依存し
ておらず、所定のソースコードプログラムにおける生成
および識別、そしてそのプログラムからの除去ができれ
ばよい。
【0022】本発明の第1の実施の形態によれば、コメ
ントフィールド204に埋め込まれるデバッグコマンド
は、所定のシミュレーションの際に、オブジェクトコー
ドシミュレーションとデバッグコマンドの両方を必要に
応じて実行する単一のプロセッサによって処理するため
に、同じプログラム言語で書くことができる。あるい
は、シミュレーションシステムに別に設けたデバッグ用
の第2のプロセッサにより処理するために、埋め込みデ
バッグコマンドを異なる言語あるいはより高級な言語で
書くこともできる。本発明は、単一のあるいは多重の言
語あるいはプロセッサ環境のどれにも適切な一般的なデ
バッグコマンドを念頭において説明される。
ントフィールド204に埋め込まれるデバッグコマンド
は、所定のシミュレーションの際に、オブジェクトコー
ドシミュレーションとデバッグコマンドの両方を必要に
応じて実行する単一のプロセッサによって処理するため
に、同じプログラム言語で書くことができる。あるい
は、シミュレーションシステムに別に設けたデバッグ用
の第2のプロセッサにより処理するために、埋め込みデ
バッグコマンドを異なる言語あるいはより高級な言語で
書くこともできる。本発明は、単一のあるいは多重の言
語あるいはプロセッサ環境のどれにも適切な一般的なデ
バッグコマンドを念頭において説明される。
【0023】デバッグコマンドはすべて一般的に、“E
ND”コマンドかブレークポイントコマンドか、どちら
かとして記述できる。“END”コマンドは、オブジェ
クトコードの実行が、システム又はユーザによる中間の
停止が全く無しに終了した時に実行される。ブレークポ
イントコマンドは、コマンドファイルに格納された指定
されたアドレスにおいてオブジェクトコードプログラム
の実行に割り込み、プログラムパラメータのステータス
チェックを行う。ブレークポイントコマンドは2つの主
要なタイプに分類することができる。即ち、1)オーバ
ーフローコンディションあるいは他の重大なエラーによ
りシミュレーションの終了(そして、必然的にオブジェ
クトコードの実行)となる“HALT”コマンド、そし
て、2)個々のコマンドにより指示されるデバッグ機能
を実行し、次いで、シミュレータによるオブジェクトコ
ードの実行をブレークが発生した箇所から継続する“C
ONT”コマンドである。HALTデバッグコマンド
は、又、プログラムを停止させてユーザがプログラムパ
ラメータを調べるためにも用いられる。これらのデバッ
グコマンドのそれぞれの分類が本発明の装置および方法
によりどのように扱われるかについて述べることによ
り、本発明をより詳細に説明する。
ND”コマンドかブレークポイントコマンドか、どちら
かとして記述できる。“END”コマンドは、オブジェ
クトコードの実行が、システム又はユーザによる中間の
停止が全く無しに終了した時に実行される。ブレークポ
イントコマンドは、コマンドファイルに格納された指定
されたアドレスにおいてオブジェクトコードプログラム
の実行に割り込み、プログラムパラメータのステータス
チェックを行う。ブレークポイントコマンドは2つの主
要なタイプに分類することができる。即ち、1)オーバ
ーフローコンディションあるいは他の重大なエラーによ
りシミュレーションの終了(そして、必然的にオブジェ
クトコードの実行)となる“HALT”コマンド、そし
て、2)個々のコマンドにより指示されるデバッグ機能
を実行し、次いで、シミュレータによるオブジェクトコ
ードの実行をブレークが発生した箇所から継続する“C
ONT”コマンドである。HALTデバッグコマンド
は、又、プログラムを停止させてユーザがプログラムパ
ラメータを調べるためにも用いられる。これらのデバッ
グコマンドのそれぞれの分類が本発明の装置および方法
によりどのように扱われるかについて述べることによ
り、本発明をより詳細に説明する。
【0024】図3は、埋め込みデバッグコマンドを有す
るソースコードプログラム300の一例を示している。
このプログラム300はアセンブリ言語コード302、
304、306と埋め込みデバッグコマンド308、3
10、312、314、316、318、320、およ
び322を含んでいる。プログラム300において、文
字列“/*”および“*/”328は、所定のプログラ
ム行がコメントであって通常のアセンブリ言語コードで
はないことを示すものである。本発明の好適な実施の形
態では、第2の識別子“%sim>”330が、デバッ
グコマンドの存在を示すものとして用いられている。文
字列“%sim>”は文字列“/*”の直後に置かれ、
このコメントが埋め込みデバッグコマンドを含んでお
り、通常のコメントではないことを示すものである。相
対メモリ位置332、334、336および338が、
ソースプログラム300の隣の余白に示されている。こ
れらの位置は、アセンブリの後に命令が理論的に格納さ
れるメモリ領域に関するものである。これらはソースプ
ログラムの一部ではなく、以下詳細に説明されるデバッ
グコマンドファイルとの関連で、明瞭化のために個々の
命令を識別するのに用いられる。
るソースコードプログラム300の一例を示している。
このプログラム300はアセンブリ言語コード302、
304、306と埋め込みデバッグコマンド308、3
10、312、314、316、318、320、およ
び322を含んでいる。プログラム300において、文
字列“/*”および“*/”328は、所定のプログラ
ム行がコメントであって通常のアセンブリ言語コードで
はないことを示すものである。本発明の好適な実施の形
態では、第2の識別子“%sim>”330が、デバッ
グコマンドの存在を示すものとして用いられている。文
字列“%sim>”は文字列“/*”の直後に置かれ、
このコメントが埋め込みデバッグコマンドを含んでお
り、通常のコメントではないことを示すものである。相
対メモリ位置332、334、336および338が、
ソースプログラム300の隣の余白に示されている。こ
れらの位置は、アセンブリの後に命令が理論的に格納さ
れるメモリ領域に関するものである。これらはソースプ
ログラムの一部ではなく、以下詳細に説明されるデバッ
グコマンドファイルとの関連で、明瞭化のために個々の
命令を識別するのに用いられる。
【0025】次に、図4を参照すると、本発明の好適な
実施の形態のアセンブラ400が示されている。埋め込
みデバッグコマンドを含むユーザが開発したソースコー
ドファイル401はアセンブラ400にロードされて処
理される。アセンブラ400は、埋め込みデバッグコマ
ンドの抽出と、ソースコードからオブジェクトコードへ
のアセンブルを行う。アセンブラ400は、デコーダ4
02、コマンドプロセッサ404、メモリモジュール4
06、コマンドファイルジェネレータ408およびオブ
ジェクトコードジェネレータ410を含んでいる。デコ
ーダ402は、ソースプログラムから埋め込みデバッグ
コマンドを抽出し、その埋め込みコマンドをコマンドプ
ロセッサ404に引き渡す。コマンドプロセッサ404
は、デバッグコマンドのタイプを決定し、そのコマンド
を一時的にメモリモジュール406に記憶するか、又
は、コマンドファイルに含めるための適切なブレークポ
イントコマンドを生成する。コマンドファイルジェネレ
ータ408は、コマンドプロセッサ404からブレーク
ポイントコマンドとそれに対応する埋め込みデバッグコ
マンドを受け取り、又、先にメモリモジュール406に
記憶されたデバッグコマンドを受け取り、シミュレータ
/デバッガおよびソースコードエディタ416に転送出
力するためのコマンドファイル414を生成する。同時
に、オブジェクトコードジェネレータ410はソースコ
ードを処理し、シミュレータ/デバッガおよびソースコ
ードエディタ416により実行されるオブジェクトコー
ド412を生成する。アセンブラ400の出力(アセン
ブルされたオブジェクトコード412およびコマンドフ
ァイル414)は、コード開発におけるシミュレーショ
ンの実行のために、シミュレータ/デバッガおよびソー
スコードエディタ416に転送される。
実施の形態のアセンブラ400が示されている。埋め込
みデバッグコマンドを含むユーザが開発したソースコー
ドファイル401はアセンブラ400にロードされて処
理される。アセンブラ400は、埋め込みデバッグコマ
ンドの抽出と、ソースコードからオブジェクトコードへ
のアセンブルを行う。アセンブラ400は、デコーダ4
02、コマンドプロセッサ404、メモリモジュール4
06、コマンドファイルジェネレータ408およびオブ
ジェクトコードジェネレータ410を含んでいる。デコ
ーダ402は、ソースプログラムから埋め込みデバッグ
コマンドを抽出し、その埋め込みコマンドをコマンドプ
ロセッサ404に引き渡す。コマンドプロセッサ404
は、デバッグコマンドのタイプを決定し、そのコマンド
を一時的にメモリモジュール406に記憶するか、又
は、コマンドファイルに含めるための適切なブレークポ
イントコマンドを生成する。コマンドファイルジェネレ
ータ408は、コマンドプロセッサ404からブレーク
ポイントコマンドとそれに対応する埋め込みデバッグコ
マンドを受け取り、又、先にメモリモジュール406に
記憶されたデバッグコマンドを受け取り、シミュレータ
/デバッガおよびソースコードエディタ416に転送出
力するためのコマンドファイル414を生成する。同時
に、オブジェクトコードジェネレータ410はソースコ
ードを処理し、シミュレータ/デバッガおよびソースコ
ードエディタ416により実行されるオブジェクトコー
ド412を生成する。アセンブラ400の出力(アセン
ブルされたオブジェクトコード412およびコマンドフ
ァイル414)は、コード開発におけるシミュレーショ
ンの実行のために、シミュレータ/デバッガおよびソー
スコードエディタ416に転送される。
【0026】図5は、本発明のアセンブラにより実行さ
れるコマンドファイル生成プロセスのフローチャートで
ある。デバッグコマンドを含むソースプログラムがユー
ザにより開発される(500)。コマンドファイルをク
リアし(501)、その後、ソースプログラムをアセン
ブラ400にロードする(502)。デコーダ402
は、抽出プロセスチェック(503)を開始し、ソース
ファイルの終わりに達したかどうかを調べ、まだであれ
ば、処理のためにコードの第1行(あるいは、次行)を
読み込む(504)。デコーダ402は、ソースコード
行に埋め込みデバッグコマンドが存在するかどうかを決
定し(505)、存在しなければ、コードのその行をア
センブルし(506)、ステップ504で次行を読み込
むために元に戻る。埋め込みデバッグコマンドが存在す
れば、コマンドプロセッサ404が1回に1つのコマン
ドを処理するように、デコーダ402はソースコードか
らデバッグコマンドを抽出する。
れるコマンドファイル生成プロセスのフローチャートで
ある。デバッグコマンドを含むソースプログラムがユー
ザにより開発される(500)。コマンドファイルをク
リアし(501)、その後、ソースプログラムをアセン
ブラ400にロードする(502)。デコーダ402
は、抽出プロセスチェック(503)を開始し、ソース
ファイルの終わりに達したかどうかを調べ、まだであれ
ば、処理のためにコードの第1行(あるいは、次行)を
読み込む(504)。デコーダ402は、ソースコード
行に埋め込みデバッグコマンドが存在するかどうかを決
定し(505)、存在しなければ、コードのその行をア
センブルし(506)、ステップ504で次行を読み込
むために元に戻る。埋め込みデバッグコマンドが存在す
れば、コマンドプロセッサ404が1回に1つのコマン
ドを処理するように、デコーダ402はソースコードか
らデバッグコマンドを抽出する。
【0027】コマンドプロセッサ404は、最初に、抽
出されたデバッグコマンドが“END”コマンドである
かどうかをチェックする(507)。“END”コマン
ドは、コマンドファイルジェネレータ408により生成
されるコマンドファイルの最後に置かれることになる。
それで、“END”コマンドとして認識されるすべての
コマンドは、コマンドファイルの最後に追加するため
に、一時的にメモリ406に記憶される(508)。上
述した通り、“END”コマンドは、ユーザによるある
いはシステム停止による実行途中の割り込み無しに、オ
ブジェクトコードが完全に実行された時に実施されるデ
バッグ機能である。“END”コマンドが認識される
と、アセンブラは、ステップ504でコードの次行を読
むために元に戻る。
出されたデバッグコマンドが“END”コマンドである
かどうかをチェックする(507)。“END”コマン
ドは、コマンドファイルジェネレータ408により生成
されるコマンドファイルの最後に置かれることになる。
それで、“END”コマンドとして認識されるすべての
コマンドは、コマンドファイルの最後に追加するため
に、一時的にメモリ406に記憶される(508)。上
述した通り、“END”コマンドは、ユーザによるある
いはシステム停止による実行途中の割り込み無しに、オ
ブジェクトコードが完全に実行された時に実施されるデ
バッグ機能である。“END”コマンドが認識される
と、アセンブラは、ステップ504でコードの次行を読
むために元に戻る。
【0028】他のすべてのデバッグコマンドは、それぞ
れのアドレス位置で処理されることになり、その結果、
通常のプログラムの実行からのブレークが発生する。デ
バッグコマンドの他の2つの基本的な形態、すなわち
“HALT”コマンドと“CONT”コマンドについて
は別に論じる。コマンドプロセッサ404は、抽出され
たデバッグコマンドが“HALT”で終わっているかど
うかをチェックする(509)。デバッグコマンドの最
後に“HALT”があると、コマンドプロセッサ404
は、最後に“halt”のあるブレークコマンドを生成
する(510)。このコマンドはコマンドファイルに書
き込まれ(513)、ソースプログラムにおけるデバッ
グコマンドの位置に対応するメモリでの相対アドレスを
含んでいる。シミュレータのローダによりオブジェクト
コードがメモリの指定されたアドレス空間にロードされ
るまでは実際のアドレスは存在せず、すべてのアドレス
はソースコードが開始される理論的なベースアドレスに
対する相対的なものに過ぎないことは、当業者には理解
されるであろう。“HALT”コマンドはオブジェクト
プログラムの実行を停止するように作用し、オーバーフ
ローや他の重大なエラー条件を示すために、しばしば用
いられている。
れのアドレス位置で処理されることになり、その結果、
通常のプログラムの実行からのブレークが発生する。デ
バッグコマンドの他の2つの基本的な形態、すなわち
“HALT”コマンドと“CONT”コマンドについて
は別に論じる。コマンドプロセッサ404は、抽出され
たデバッグコマンドが“HALT”で終わっているかど
うかをチェックする(509)。デバッグコマンドの最
後に“HALT”があると、コマンドプロセッサ404
は、最後に“halt”のあるブレークコマンドを生成
する(510)。このコマンドはコマンドファイルに書
き込まれ(513)、ソースプログラムにおけるデバッ
グコマンドの位置に対応するメモリでの相対アドレスを
含んでいる。シミュレータのローダによりオブジェクト
コードがメモリの指定されたアドレス空間にロードされ
るまでは実際のアドレスは存在せず、すべてのアドレス
はソースコードが開始される理論的なベースアドレスに
対する相対的なものに過ぎないことは、当業者には理解
されるであろう。“HALT”コマンドはオブジェクト
プログラムの実行を停止するように作用し、オーバーフ
ローや他の重大なエラー条件を示すために、しばしば用
いられている。
【0029】最後に、処理されているデバッグコマンド
がその終わりに“HALT”を含んでいない場合、それ
は“CONT”(continue、継続)タイプであ
り、コマンドプロセッサ404はブレークポイントコマ
ンドを生成し(512)、自動的にデバッグコマンドの
最後に“CONT”コマンドを追加する。次いで、シミ
ュレーションでの実行のために、実際のデバッグコマン
ド、相対アドレス位置、およびcontinue(継
続)コマンドをコマンドファイルに書き込む(51
3)。“CONT”コマンドは、ブレークが発生した所
からオブジェクトプログラムの実行を再開させるように
作用する。
がその終わりに“HALT”を含んでいない場合、それ
は“CONT”(continue、継続)タイプであ
り、コマンドプロセッサ404はブレークポイントコマ
ンドを生成し(512)、自動的にデバッグコマンドの
最後に“CONT”コマンドを追加する。次いで、シミ
ュレーションでの実行のために、実際のデバッグコマン
ド、相対アドレス位置、およびcontinue(継
続)コマンドをコマンドファイルに書き込む(51
3)。“CONT”コマンドは、ブレークが発生した所
からオブジェクトプログラムの実行を再開させるように
作用する。
【0030】アセンブラ400は、ソースプログラムが
完全に処理されてしまうまで、ステップ504で次行の
コードを読み込む。ソースコードのすべての行がアセン
ブルされると、アセンブラ400は、メモリ406に
(ステップ508で)記憶されている“END”コマン
ドをコマンドファイルの最後に追加する(514)。最
後に、アセンブラはオブジェクトコードファイルを生成
し(515)、他の通常の処理機能を実行し、その後
で、オブジェクトコードとコマンドファイルを、実行の
ために、シミュレータ/デバッガに出力する(51
6)。
完全に処理されてしまうまで、ステップ504で次行の
コードを読み込む。ソースコードのすべての行がアセン
ブルされると、アセンブラ400は、メモリ406に
(ステップ508で)記憶されている“END”コマン
ドをコマンドファイルの最後に追加する(514)。最
後に、アセンブラはオブジェクトコードファイルを生成
し(515)、他の通常の処理機能を実行し、その後
で、オブジェクトコードとコマンドファイルを、実行の
ために、シミュレータ/デバッガに出力する(51
6)。
【0031】図3のサンプルプログラムに戻って、コマ
ンドファイルを生成するプロセスを、サンプルソースコ
ードプログラム300に関連して説明する。アセンブラ
には、まず、埋め込みデバッグコマンドを含むソースコ
ード300がロードされる。最初の埋め込みデバッグコ
マンド308が処理のために識別される(505)。デ
コーダ402は、コメントフィールド識別子“/*”3
28の後に第2の識別子“%sim”330が続いてい
ることを認識するが、これはデバッグコマンドがこの位
置に含まれていることを示している。この埋め込みデバ
ッグコマンドは“END”コマンドであるため、メモリ
406に記憶され(508)、デバッグコマンドファイ
ルの終わりに追加されることになる(514)。同じよ
うにして、デコーダ402は埋め込みデバッグコマンド
310および312を認識し、コマンドプロセッサ40
4は、やはり、これらの“END”コマンドをメモリに
記憶する(ステップ508の繰り返し)。
ンドファイルを生成するプロセスを、サンプルソースコ
ードプログラム300に関連して説明する。アセンブラ
には、まず、埋め込みデバッグコマンドを含むソースコ
ード300がロードされる。最初の埋め込みデバッグコ
マンド308が処理のために識別される(505)。デ
コーダ402は、コメントフィールド識別子“/*”3
28の後に第2の識別子“%sim”330が続いてい
ることを認識するが、これはデバッグコマンドがこの位
置に含まれていることを示している。この埋め込みデバ
ッグコマンドは“END”コマンドであるため、メモリ
406に記憶され(508)、デバッグコマンドファイ
ルの終わりに追加されることになる(514)。同じよ
うにして、デコーダ402は埋め込みデバッグコマンド
310および312を認識し、コマンドプロセッサ40
4は、やはり、これらの“END”コマンドをメモリに
記憶する(ステップ508の繰り返し)。
【0032】デコーダ402は、次の埋め込みデバッグ
コマンド314を識別し、それが“END”コマンドで
も“HALT”コマンドでもないため、コマンドプロセ
ッサ404は、文字列“a1 is”と共に変数(ある
いはレジスタ)a1.hの値をプリントするブレークポ
イントコマンドを生成する(512)。このブレークポ
イントコマンドは、ソースファイルの次の命令のアドレ
ス位置334と共にコマンドファイルに追加される(5
13)。それで、このブレークポイントコマンドは、次
のプログラム命令の実行の前に実行される。加えて、
“CONT”(continue)コマンドがこの1個
のデバッグコマンド(この場合はprintコマンド)
に追加され、ブレークが発生した位置であるメモリ位置
(アドレス0x82)からプログラムの実行が再開され
るべきことを示す。同じように、3つの埋め込みデバッ
グコマンド316、318および320が、それぞれの
continueコマンド(512)と共に、又、実行
されるべき次の命令に対応する相対メモリ位置336と
共にコマンドファイルに追加される(513)。本発明
のアセンブラは、この場合のように複数のデバッグコマ
ンドが実際には同じ拡張コメントフィールドの全部分を
占めている場合でも、各埋め込みデバッグコマンドを別
々に処理する。
コマンド314を識別し、それが“END”コマンドで
も“HALT”コマンドでもないため、コマンドプロセ
ッサ404は、文字列“a1 is”と共に変数(ある
いはレジスタ)a1.hの値をプリントするブレークポ
イントコマンドを生成する(512)。このブレークポ
イントコマンドは、ソースファイルの次の命令のアドレ
ス位置334と共にコマンドファイルに追加される(5
13)。それで、このブレークポイントコマンドは、次
のプログラム命令の実行の前に実行される。加えて、
“CONT”(continue)コマンドがこの1個
のデバッグコマンド(この場合はprintコマンド)
に追加され、ブレークが発生した位置であるメモリ位置
(アドレス0x82)からプログラムの実行が再開され
るべきことを示す。同じように、3つの埋め込みデバッ
グコマンド316、318および320が、それぞれの
continueコマンド(512)と共に、又、実行
されるべき次の命令に対応する相対メモリ位置336と
共にコマンドファイルに追加される(513)。本発明
のアセンブラは、この場合のように複数のデバッグコマ
ンドが実際には同じ拡張コメントフィールドの全部分を
占めている場合でも、各埋め込みデバッグコマンドを別
々に処理する。
【0033】この抽出に続いて、デコーダ402は次の
埋め込みデバッグコマンド322を識別する。このデバ
ッグコマンドは“HALT”コマンドであり、上記のc
ontinueとは反対に、条件が満たされない場合h
altを実行するという結果になる。埋め込みデバッグ
コマンド322に応じて、コマンドプロセッサ404
は、ブレークポイントコマンドを生成し(510)、こ
の位置で文字列m0の値をチェックする。このブレーク
ポイントコマンドは、相対アドレス位置338と共にコ
マンドファイルに追加される。ソースコードプログラム
の残りの行も、ソースファイルの終わりに達するまで、
同様に処理される。アセンブラは、次いで、メモリ40
6に記憶されたendコマンドをコマンドファイルの終
わりに追加し(514)、オブジェクトコードファイル
を生成して(515)、そのオブジェクトコードファイ
ルをコマンドファイルと共にシミュレータ/デバッガお
よびソースコードエディタ416に出力する(51
6)。
埋め込みデバッグコマンド322を識別する。このデバ
ッグコマンドは“HALT”コマンドであり、上記のc
ontinueとは反対に、条件が満たされない場合h
altを実行するという結果になる。埋め込みデバッグ
コマンド322に応じて、コマンドプロセッサ404
は、ブレークポイントコマンドを生成し(510)、こ
の位置で文字列m0の値をチェックする。このブレーク
ポイントコマンドは、相対アドレス位置338と共にコ
マンドファイルに追加される。ソースコードプログラム
の残りの行も、ソースファイルの終わりに達するまで、
同様に処理される。アセンブラは、次いで、メモリ40
6に記憶されたendコマンドをコマンドファイルの終
わりに追加し(514)、オブジェクトコードファイル
を生成して(515)、そのオブジェクトコードファイ
ルをコマンドファイルと共にシミュレータ/デバッガお
よびソースコードエディタ416に出力する(51
6)。
【0034】図6は、コマンドファイルジェネレータ4
08により、図3の実施の形態のソースコード300か
ら生成されたコマンドファイル600を示している。コ
マンドファイル600は、ブレークポイントコマンド6
02、604および606と、“END”コマンド60
8、610および612を含んでいる。コマンド602
は、図3のデバッグコマンド314から生成されたブレ
ークポイントコマンドである。デコーダ402は、コマ
ンド314を読み込んで、文字列“/*”、“%si
m”および“*/”を抽出し、それにより、コマンド3
14はデバッグコマンドであると決定した。次いで、コ
マンドプロセッサ404は、これが“END”コマンド
であるかどうかチェックした。それが“END”コマン
ドではなかったため、コマンドプロセッサ404は、コ
マンド行314の終わりに“halt”があるかどうか
をチェックし、それが無かったため、コマンドプロセッ
サ404はブレークコマンド602を生成した。参照符
号614が指し示しているアドレス0x82(16進)
は、図3に示されたアドレス0x82に見出される命令
の実行の前に、このブレークポイントコマンドを実行す
べきことを示している。デバッグコマンド314は“E
ND”コマンドではく、又、その終わりに“halt”
を持っていなかったため、コマンドプロセッサ404
は、ブレークポイント命令602の終わりに、自動的に
“cont”を追加した。この“cont”があるた
め、デバッガはオブジェクトコードの実行を再開(すな
わち、継続)する。同様に、ブレークポイントコマンド
604および606が、デバッグコマンド316、31
8、320および322からそれぞれ生成される。
08により、図3の実施の形態のソースコード300か
ら生成されたコマンドファイル600を示している。コ
マンドファイル600は、ブレークポイントコマンド6
02、604および606と、“END”コマンド60
8、610および612を含んでいる。コマンド602
は、図3のデバッグコマンド314から生成されたブレ
ークポイントコマンドである。デコーダ402は、コマ
ンド314を読み込んで、文字列“/*”、“%si
m”および“*/”を抽出し、それにより、コマンド3
14はデバッグコマンドであると決定した。次いで、コ
マンドプロセッサ404は、これが“END”コマンド
であるかどうかチェックした。それが“END”コマン
ドではなかったため、コマンドプロセッサ404は、コ
マンド行314の終わりに“halt”があるかどうか
をチェックし、それが無かったため、コマンドプロセッ
サ404はブレークコマンド602を生成した。参照符
号614が指し示しているアドレス0x82(16進)
は、図3に示されたアドレス0x82に見出される命令
の実行の前に、このブレークポイントコマンドを実行す
べきことを示している。デバッグコマンド314は“E
ND”コマンドではく、又、その終わりに“halt”
を持っていなかったため、コマンドプロセッサ404
は、ブレークポイント命令602の終わりに、自動的に
“cont”を追加した。この“cont”があるた
め、デバッガはオブジェクトコードの実行を再開(すな
わち、継続)する。同様に、ブレークポイントコマンド
604および606が、デバッグコマンド316、31
8、320および322からそれぞれ生成される。
【0035】コマンド608は“END”コマンド30
8から生成される。コマンドプロセッサ404がこのコ
マンドを読み込むと、それを“END”コマンドとして
識別し、それにより、そのコマンドをメモリにセーブ
し、アセンブルが完了した時、コマンドファイル600
の終わりに追加したのである。同様に、コマンド610
および612は、デバッグコマンド310および312
からそれぞれ生成される。コマンド608、610およ
び612が、コマンドファイル600における最後の3
つのコマンドであることに注目してほしい。“END”
コマンドでないすべてのコマンド602〜606は“E
ND”コマンドの上に書かれている。
8から生成される。コマンドプロセッサ404がこのコ
マンドを読み込むと、それを“END”コマンドとして
識別し、それにより、そのコマンドをメモリにセーブ
し、アセンブルが完了した時、コマンドファイル600
の終わりに追加したのである。同様に、コマンド610
および612は、デバッグコマンド310および312
からそれぞれ生成される。コマンド608、610およ
び612が、コマンドファイル600における最後の3
つのコマンドであることに注目してほしい。“END”
コマンドでないすべてのコマンド602〜606は“E
ND”コマンドの上に書かれている。
【0036】先行技術においては、ユーザはコマンドフ
ァイル600を手作業で作成しなければならない。した
がって、アドレス614および616は、ロードされた
ファイルを調べた後にユーザによって決定される。ソー
スプログラムが修正され、ソースコード行が追加、削除
あるいは移動されると、必然的に、アドレス614およ
び616が修正されなければならない。そのような状況
では、ユーザは、ソースプログラム300が変更される
度にブレークポイント614および616のアドレスを
再計算し、コマンドファイル600を編集しなければな
らない。本発明は、ソースプログラム300に含まれる
ユーザが埋め込んだデバッグコマンドからコマンドファ
イル600を自動的に生成することにより、この問題を
解決したものである。
ァイル600を手作業で作成しなければならない。した
がって、アドレス614および616は、ロードされた
ファイルを調べた後にユーザによって決定される。ソー
スプログラムが修正され、ソースコード行が追加、削除
あるいは移動されると、必然的に、アドレス614およ
び616が修正されなければならない。そのような状況
では、ユーザは、ソースプログラム300が変更される
度にブレークポイント614および616のアドレスを
再計算し、コマンドファイル600を編集しなければな
らない。本発明は、ソースプログラム300に含まれる
ユーザが埋め込んだデバッグコマンドからコマンドファ
イル600を自動的に生成することにより、この問題を
解決したものである。
【0037】図7は、ソースコードの修正の影響を、先
行技術と本発明の両方において示したものである。左側
は、先行技術における、編集前と編集後のソースコード
プログラムの一部と、その結果コマンドファイルにもた
らされる影響(それはユーザによる手作業でのアドレス
更新を必要とする)を示している。右側は、同じソース
コードの修正を本発明により実行した場合の影響を示し
たものである。
行技術と本発明の両方において示したものである。左側
は、先行技術における、編集前と編集後のソースコード
プログラムの一部と、その結果コマンドファイルにもた
らされる影響(それはユーザによる手作業でのアドレス
更新を必要とする)を示している。右側は、同じソース
コードの修正を本発明により実行した場合の影響を示し
たものである。
【0038】ソースプログラム700において、アセン
ブリ言語コードの1行702が、例として示されてい
る。ソースコードプログラム700は、先行技術におい
てユーザが開発したプログラムである。このプログラム
700はアセンブリ言語コードだけを含んでおり、埋め
込みデバッグコマンドは全く含まれていない。メモリ位
置を表す相対行番号704が示されている。ここでの説
明のために、相対アドレス0x10(16進)が、この
特定の行番号704に結び付けられており、コードのこ
の特定の行が相対アドレス0x10(16進)にアセン
ブルされることを示している。行番号はソースプログラ
ム700あるいは750の一部ではなく、この例を説明
するだけの目的で示されている。一般的に、ソースコー
ドが編集される時には、新しいコード行が追加される
か、古いコードが削除されるか、あるいはその両方がな
され、又、時には、命令がこのプログラム内で移動され
る。この例では、先行技術と本発明のコマンドファイル
に及ぼす影響を示すために、ソースコード行が追加され
るものとする。
ブリ言語コードの1行702が、例として示されてい
る。ソースコードプログラム700は、先行技術におい
てユーザが開発したプログラムである。このプログラム
700はアセンブリ言語コードだけを含んでおり、埋め
込みデバッグコマンドは全く含まれていない。メモリ位
置を表す相対行番号704が示されている。ここでの説
明のために、相対アドレス0x10(16進)が、この
特定の行番号704に結び付けられており、コードのこ
の特定の行が相対アドレス0x10(16進)にアセン
ブルされることを示している。行番号はソースプログラ
ム700あるいは750の一部ではなく、この例を説明
するだけの目的で示されている。一般的に、ソースコー
ドが編集される時には、新しいコード行が追加される
か、古いコードが削除されるか、あるいはその両方がな
され、又、時には、命令がこのプログラム内で移動され
る。この例では、先行技術と本発明のコマンドファイル
に及ぼす影響を示すために、ソースコード行が追加され
るものとする。
【0039】ソースコードプログラム710はソースコ
ードプログラム700の修正版である。初めのソースコ
ードプログラムの相対アドレス0x10(704)にあ
った同じコード行702は、この行から上に新しい行が
追加されたため、今度は相対アドレス0x25(71
2)に位置している。コマンドファイル720は、ブレ
ークポイントコマンド722を含む、ユーザが作成した
コマンドファイルであり、ソースプログラム700に対
して生成されたものである。このブレークポイントコマ
ンド722を生成するために、ユーザは手作業でブレー
クポイント位置のアドレス724を計算しなければなら
ない。ユーザがソースコードプログラム700を編集
し、新しいプログラム710を作成した場合、ユーザ
は、今度は、手作業でコマンドファイル720を編集
し、ブレークポイントコマンド732を新しいブレーク
ポイント位置734に対応するように変更しなければな
らない。これは、手作業によりブレークポイントを生成
するという先行技術の体系では、ソースプログラムの変
更に適応できないからである。ソースプログラムの変更
が生じる度に、古いブレークポイントコマンドを保持し
たいユーザは、ソースプログラムにおける相対的な変化
を反映するために、古いブレークポイントに対応するア
ドレス位置を確認し、更新しなければならない。
ードプログラム700の修正版である。初めのソースコ
ードプログラムの相対アドレス0x10(704)にあ
った同じコード行702は、この行から上に新しい行が
追加されたため、今度は相対アドレス0x25(71
2)に位置している。コマンドファイル720は、ブレ
ークポイントコマンド722を含む、ユーザが作成した
コマンドファイルであり、ソースプログラム700に対
して生成されたものである。このブレークポイントコマ
ンド722を生成するために、ユーザは手作業でブレー
クポイント位置のアドレス724を計算しなければなら
ない。ユーザがソースコードプログラム700を編集
し、新しいプログラム710を作成した場合、ユーザ
は、今度は、手作業でコマンドファイル720を編集
し、ブレークポイントコマンド732を新しいブレーク
ポイント位置734に対応するように変更しなければな
らない。これは、手作業によりブレークポイントを生成
するという先行技術の体系では、ソースプログラムの変
更に適応できないからである。ソースプログラムの変更
が生じる度に、古いブレークポイントコマンドを保持し
たいユーザは、ソースプログラムにおける相対的な変化
を反映するために、古いブレークポイントに対応するア
ドレス位置を確認し、更新しなければならない。
【0040】プログラム750は、本発明において提供
される埋め込みデバッグコマンドを有するユーザが開発
したソースコードプログラムを示している。この場合
も、アセンブリ言語コードの1行752が、この例を説
明するために示されている。埋め込みデバッグコマンド
756が、相対アドレス0x10(16進)に対応する
位置756に示されており、その後にアセンブリ言語命
令752が続いている。本発明のアセンブラによる処理
のために、埋め込みデバッグコマンド756がソースコ
ード750に設けられている。ユーザにより埋め込まれ
たデバッグコマンド756は、文字列“/* %sim
>”により指定されている。プログラム760は、ソー
スコード750の編集版である。コードの同じ行752
および756は、新しいコードが追加されたため、相対
メモリ位置762(相対アドレス0x25)に位置して
いる。
される埋め込みデバッグコマンドを有するユーザが開発
したソースコードプログラムを示している。この場合
も、アセンブリ言語コードの1行752が、この例を説
明するために示されている。埋め込みデバッグコマンド
756が、相対アドレス0x10(16進)に対応する
位置756に示されており、その後にアセンブリ言語命
令752が続いている。本発明のアセンブラによる処理
のために、埋め込みデバッグコマンド756がソースコ
ード750に設けられている。ユーザにより埋め込まれ
たデバッグコマンド756は、文字列“/* %sim
>”により指定されている。プログラム760は、ソー
スコード750の編集版である。コードの同じ行752
および756は、新しいコードが追加されたため、相対
メモリ位置762(相対アドレス0x25)に位置して
いる。
【0041】ファイル770は、アセンブラによりソー
スプログラム750から生成されたコマンドファイルで
あり、ブレークポイントコマンド772および相対メモ
リアドレス774を含んでいる。ブレークポイントコマ
ンド772は、本発明のアセンブラにより、ソースプロ
グラム750の対応する埋め込みデバッグコマンド75
6を抽出した後に、生成される。ファイル780は、編
集されたソースプログラム760からアセンブラにより
生成されたコマンドファイルであり、ブレークポイント
コマンド782および相対アドレス784を含んでい
る。先に説明したように、アセンブラがコマンドファイ
ル780を生成しているので、ブレークポイントの位置
計算はすべてアセンブラ自身によって抽出プロセスにお
いてなされる。ユーザがソースプログラム750をソー
スプログラム760に修正し、それを再ロードすると、
埋め込みコマンドにより設定されるブレークポイント7
72は、正しい新アドレス位置を含むブレークポイント
782として再生成される。これにより、古いブレーク
ポイント772は、正しいソース行784に自動的に再
配置される。
スプログラム750から生成されたコマンドファイルで
あり、ブレークポイントコマンド772および相対メモ
リアドレス774を含んでいる。ブレークポイントコマ
ンド772は、本発明のアセンブラにより、ソースプロ
グラム750の対応する埋め込みデバッグコマンド75
6を抽出した後に、生成される。ファイル780は、編
集されたソースプログラム760からアセンブラにより
生成されたコマンドファイルであり、ブレークポイント
コマンド782および相対アドレス784を含んでい
る。先に説明したように、アセンブラがコマンドファイ
ル780を生成しているので、ブレークポイントの位置
計算はすべてアセンブラ自身によって抽出プロセスにお
いてなされる。ユーザがソースプログラム750をソー
スプログラム760に修正し、それを再ロードすると、
埋め込みコマンドにより設定されるブレークポイント7
72は、正しい新アドレス位置を含むブレークポイント
782として再生成される。これにより、古いブレーク
ポイント772は、正しいソース行784に自動的に再
配置される。
【0042】本発明はアセンブリ言語のソースコードに
おいて実現されたが、CやC++などの高級言語を含
め、他の言語にも同じく適用できる。図8は、本発明の
別の実施の形態を示すものである。上記においては、埋
め込みデバッグコマンドの方法をアセンブリ言語のソー
スコードに関連して説明した。同じ概念は、ソースコー
ドプログラムが高級言語で書かれている場合にも当ては
まる。デバッグコマンドを認識し、この明細書に開示し
た原則に従って自動的にコマンドファイルを生成するよ
うに、高級言語コンパイラを拡張する必要があるだけで
ある。
おいて実現されたが、CやC++などの高級言語を含
め、他の言語にも同じく適用できる。図8は、本発明の
別の実施の形態を示すものである。上記においては、埋
め込みデバッグコマンドの方法をアセンブリ言語のソー
スコードに関連して説明した。同じ概念は、ソースコー
ドプログラムが高級言語で書かれている場合にも当ては
まる。デバッグコマンドを認識し、この明細書に開示し
た原則に従って自動的にコマンドファイルを生成するよ
うに、高級言語コンパイラを拡張する必要があるだけで
ある。
【0043】プログラム800は高級言語で書かれたソ
ースコードプログラムである。このプログラムの行80
2は通常のソースステートメントであり、行804はデ
バッグコマンドを示している。先に、本発明のアセンブ
ラがデバッグコマンドを認識するという好適な実施の形
態に関連して説明した通り、デバッグコマンドを認識し
て、デバッグコマンドファイルを自動的に再生成するよ
うな修正された高級言語コンパイラを実現することがで
きる。
ースコードプログラムである。このプログラムの行80
2は通常のソースステートメントであり、行804はデ
バッグコマンドを示している。先に、本発明のアセンブ
ラがデバッグコマンドを認識するという好適な実施の形
態に関連して説明した通り、デバッグコマンドを認識し
て、デバッグコマンドファイルを自動的に再生成するよ
うな修正された高級言語コンパイラを実現することがで
きる。
【0044】以上、本発明者によってなされた発明を実
施の形態に基づき具体的に説明したが、本発明は前記実
施の形態に限定されるものではなく、その要旨を逸脱し
ない範囲で種々変更可能であることはいうまでもない。
施の形態に基づき具体的に説明したが、本発明は前記実
施の形態に限定されるものではなく、その要旨を逸脱し
ない範囲で種々変更可能であることはいうまでもない。
【0045】
【発明の効果】本願において開示される発明のうち、代
表的なものによって得られる効果を簡単に説明すれば、
以下のとおりである。
表的なものによって得られる効果を簡単に説明すれば、
以下のとおりである。
【0046】(1).ソースプログラムから導出されるオブ
ジェクトコードのシミュレーション実行の際に、デバッ
ガにより用いられるデバッグコマンドファイルを自動的
に生成することができる。
ジェクトコードのシミュレーション実行の際に、デバッ
ガにより用いられるデバッグコマンドファイルを自動的
に生成することができる。
【0047】(2).最新のコマンドファイルに格納される
デバッグコマンドを自動的に再生成し、基になるソース
コードを修正する結果として新しくなった任意のソース
コード位置に、それらデバッグコマンドを正確にリンク
することができる。
デバッグコマンドを自動的に再生成し、基になるソース
コードを修正する結果として新しくなった任意のソース
コード位置に、それらデバッグコマンドを正確にリンク
することができる。
【0048】(3).後のアセンブルにおいてデバッグコマ
ンドを容易に再生成するために、ソースプログラムにお
ける特定の位置にデバッグコマンドをリンクすることが
できる。
ンドを容易に再生成するために、ソースプログラムにお
ける特定の位置にデバッグコマンドをリンクすることが
できる。
【0049】(4).ソースコードプログラム行に埋め込ま
れたデバッグコマンドを識別することができる。
れたデバッグコマンドを識別することができる。
【0050】(5).アセンブルの際にソースプログラムか
ら埋め込みコマンドを抽出して、そのソースプログラム
から導出されるオブジェクトコードのシミュレーション
の際にデバッガで用いられるコマンドファイルを自動的
に生成することができる。
ら埋め込みコマンドを抽出して、そのソースプログラム
から導出されるオブジェクトコードのシミュレーション
の際にデバッガで用いられるコマンドファイルを自動的
に生成することができる。
【0051】(6).ソースプログラムから導出され、デバ
ッグコマンドあるいはそれに結び付けられるラベルを含
まない、アセンブルされたオブジェクトコードを提供す
ることができる。
ッグコマンドあるいはそれに結び付けられるラベルを含
まない、アセンブルされたオブジェクトコードを提供す
ることができる。
【図1a】デバッグコマンドを含むコマンドファイルを
生成する、先行技術のプロセスを示す図である。
生成する、先行技術のプロセスを示す図である。
【図1b】デバッグコマンドを含むコマンドファイルを
生成する、本発明の好適な実施の形態によるプロセスを
示す図である。
生成する、本発明の好適な実施の形態によるプロセスを
示す図である。
【図2】本発明の好適な実施の形態による、埋め込みデ
バッグコマンドを実現するソースコードプログラムの一
部を示す図である。
バッグコマンドを実現するソースコードプログラムの一
部を示す図である。
【図3】埋め込みデバッグコマンドを含むソースコード
プログラムのサンプルを示す図である。
プログラムのサンプルを示す図である。
【図4】本発明の好適な実施の形態によるアセンブラの
ブロック図である。
ブロック図である。
【図5】本発明の好適な実施の形態による、コマンドフ
ァイルを生成するプロセスのフローチャートである。
ァイルを生成するプロセスのフローチャートである。
【図6】図3の例のソースコードからアセンブラにより
生成されたコマンドファイルを示す図である。
生成されたコマンドファイルを示す図である。
【図7】先行技術と本発明の両方に及ぼす、ソースコー
ドの修正の効果を示す図である。
ドの修正の効果を示す図である。
【図8】多言語コマンドを組み込んだ、本発明の他の実
施の形態を示す図である。
施の形態を示す図である。
152 ソースコードプログラム 154 埋め込みデバッグコマンド 156 アセンブラ 158 デバッグコマンドファイル 160 ブレークポイントコマンド 162 オブジェクトコード 164 シミュレータ/デバッガおよびソースコードエ
ディタ 166 ユーザインタフェース 170 修正されたソースコード 400 アセンブラ 401 ソースコードファイル 402 デコーダ 404 コマンドプロセッサ 406 メモリモジュール 408 コマンドファイルジェネレータ 410 オブジェクトコードジェネレータ 412 オブジェクトコード 414 コマンドファイル 416 シミュレータ/デバッガおよびソースコードエ
ディタ
ディタ 166 ユーザインタフェース 170 修正されたソースコード 400 アセンブラ 401 ソースコードファイル 402 デコーダ 404 コマンドプロセッサ 406 メモリモジュール 408 コマンドファイルジェネレータ 410 オブジェクトコードジェネレータ 412 オブジェクトコード 414 コマンドファイル 416 シミュレータ/デバッガおよびソースコードエ
ディタ
Claims (6)
- 【請求項1】 コンピュータシステムにおいて、ソース
コードのシミュレーションの際に実行されるデバッグコ
マンドを含むデバッグコマンドファイルを自動的に生成
する方法であって、 (1)少なくとも1つのデバッグコマンドをソースプロ
グラムの少なくとも1行に埋め込むステップと、 (2)前記ソースプログラムをアセンブルするステップ
であって、(a)前記埋め込みデバッグコマンドを抽出
するステップ、(b)該埋め込みデバッグコマンドの各
々に対応するブレークポイントコマンドを生成するステ
ップ、(c)該ブレークポイントコマンドおよびそれに
対応するデバッグコマンドを前記デバッグコマンドファ
イルに書き込むことにより該コマンドファイルを作成す
るステップ、および(d)前記ソースプログラムからオ
ブジェクトコードを生成するステップ、を含むアセンブ
ルステップと、 (3)前記ソースプログラムの修正に際して、前記ブレ
ークポイントコマンドおよびそれに対応する埋め込みデ
バッグコマンドを前記デバックコマンドファイルから取
り除き、それにより、修正された該ソースプログラムの
再アセンブルの際に、該ソースプログラムのそれぞれ新
しい相対位置にある該埋め込みデバックコマンドに対応
する新しいブレークポイントコマンドを含む新しいコマ
ンドファイルを自動的に作成するステップと、を含むこ
とを特徴とするデバッグコマンドファイルを自動的に生
成する方法。 - 【請求項2】 ソースプログラムのシミュレーションに
関連して実行するために、デバッグコマンドファイルに
おいてブレークポイントを自動的に再生成する装置であ
って、 少なくとも1つの埋め込みデバッグコマンドを有するソ
ースプログラムと、 アセンブラであって、 前記埋め込みデバッグコマンドを前記ソースプログラム
から抽出するためのデコーダ、 前記ソースプログラムをオブジェクトコードにアセンブ
ルするためのオブジェクトファイルジェネレータ、およ
び前記デコーダにより抽出された前記埋め込みデバッグ
コマンドと該抽出された埋め込みデバッグコマンドに対
応するブレークポイントコマンドとを含むデバッグコマ
ンドファイルを作成するためのデバッグコマンドファイ
ルジェネレータ、を含むアセンブラと、 前記ソースプログラムの前記シミュレーションの際に、
前記デバッグコマンドファイルにおける前記ブレークポ
イントコマンドおよび前記埋め込みデバッグコマンドを
実行するためのデバッガと、を含み、 前記ソースプログラムに修正がなされると、それに続い
て、該ソースプログラムをシミュレーションの実行の前
に再アセンブルすることにより、前記ブレークポイント
コマンドおよび埋め込みデバッグコマンドを自動的に再
生成することを特徴とするデバッグコマンドファイルに
おいてブレークポイントを自動的に再生成する装置。 - 【請求項3】 請求項2記載のデバッグコマンドファイ
ルにおいてブレークポイントを自動的に再生成する装置
であって、前記ソースプログラムが高級言語で書かれて
いることを特徴とするデバッグコマンドファイルにおい
てブレークポイントを自動的に再生成する装置。 - 【請求項4】 請求項2記載のデバッグコマンドファイ
ルにおいてブレークポイントを自動的に再生成する装置
であって、前記埋め込みデバッグコマンドが、前記ソー
スプログラムとは異なる言語で書かれていることを特徴
とするデバッグコマンドファイルにおいてブレークポイ
ントを自動的に再生成する装置。 - 【請求項5】 請求項2記載のデバッグコマンドファイ
ルにおいてブレークポイントを自動的に再生成する装置
であって、前記埋め込みデバッグコマンドの実行を選択
的に許可あるいは禁止するためのコマンド行オプション
を含むことを特徴とするデバッグコマンドファイルにお
いてブレークポイントを自動的に再生成する装置。 - 【請求項6】 請求項2記載のデバッグコマンドファイ
ルにおいてブレークポイントを自動的に再生成する装置
であって、前記ソースプログラムが、コメントフィール
ドを有する行からなっており、該コメントフィールド
は、前記埋め込みデバッグコマンドと、該埋め込みデバ
ッグコマンドが存在することを示す特別な接頭語とを含
むことを特徴とするデバッグコマンドファイルにおいて
ブレークポイントを自動的に再生成する装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US36605094A | 1994-12-29 | 1994-12-29 | |
| US08/366,050 | 1994-12-29 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH08272648A true JPH08272648A (ja) | 1996-10-18 |
Family
ID=23441472
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7285382A Pending JPH08272648A (ja) | 1994-12-29 | 1995-11-01 | デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5815714A (ja) |
| JP (1) | JPH08272648A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000076094A (ja) * | 1998-09-03 | 2000-03-14 | Ricoh Co Ltd | シミュレータ |
| US7134115B2 (en) | 2002-02-07 | 2006-11-07 | Matsushita Electric Industrial Co., Ltd. | Apparatus, method, and program for breakpoint setting |
| JP2014146358A (ja) * | 2008-04-07 | 2014-08-14 | International Business Maschines Corporation | デバッガ・データ・プロセシング・システム、デバッギング方法およびコンピュータ・プログラム |
Families Citing this family (52)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2194021A1 (en) | 1996-12-24 | 1998-06-24 | Kevin Paul Hickman | Binary class library with debugging support |
| CA2194020C (en) * | 1996-12-24 | 2002-02-05 | Kevin Paul Hickman | Minimizing debug information for global types in compiled languages |
| US6061518A (en) * | 1997-11-25 | 2000-05-09 | International Business Machines Corporation | Data processing system and method for debugging a JavaScript program |
| US6161216A (en) * | 1998-04-29 | 2000-12-12 | Emc Corporation | Source code debugging tool |
| US6173440B1 (en) * | 1998-05-27 | 2001-01-09 | Mcdonnell Douglas Corporation | Method and apparatus for debugging, verifying and validating computer software |
| US7526468B2 (en) * | 1999-01-08 | 2009-04-28 | Computer Associates Think, Inc. | System and method for recursive path analysis of DBMS procedures |
| JP4260984B2 (ja) * | 1999-06-04 | 2009-04-30 | 株式会社東芝 | 情報処理装置および情報処理方法 |
| US6611924B1 (en) * | 1999-07-16 | 2003-08-26 | Lucent Technologies Inc. | Reducing code size of debug output statements |
| JP2001060161A (ja) * | 1999-08-24 | 2001-03-06 | Nec Ic Microcomput Syst Ltd | デバッグ装置、方法及び記録媒体 |
| HK1046049A1 (zh) | 1999-09-01 | 2002-12-20 | Intel Corporation | 用於多线程处理器的分支指令 |
| US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
| DE10104043A1 (de) * | 2000-02-23 | 2001-08-30 | Ibm | Die Schaffung der Möglichkeit, dass vorhandene Anwendungen andere Sprachen als ihre eingebauten Makrosprachen benutzen, ohne die vorhandene Anwendung zu ändern |
| US20020087948A1 (en) * | 2000-03-02 | 2002-07-04 | Jonathan Dzoba | Configurable debug system with proactive error handling |
| US6874140B1 (en) * | 2000-07-31 | 2005-03-29 | Microsoft Corporation | Debug annotations |
| US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
| US7020871B2 (en) * | 2000-12-21 | 2006-03-28 | Intel Corporation | Breakpoint method for parallel hardware threads in multithreaded processor |
| US20040205720A1 (en) * | 2001-04-30 | 2004-10-14 | Robert Hundt | Augmenting debuggers |
| US6868476B2 (en) | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
| US7225281B2 (en) | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
| US7216204B2 (en) | 2001-08-27 | 2007-05-08 | Intel Corporation | Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment |
| US7487505B2 (en) * | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
| US7257805B2 (en) * | 2001-11-09 | 2007-08-14 | International Business Machines Corporation | Restoring debugging breakpoints subsequent to program code modifications |
| US7610451B2 (en) | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
| US7437724B2 (en) | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
| EP1378832A1 (en) * | 2002-07-04 | 2004-01-07 | Sap Ag | Process and system for comfortable debugging of computer programs |
| EP1378835B1 (en) * | 2002-07-04 | 2015-12-30 | Sap Se | Process and system for comfortable debugging of computer programs |
| US7337275B2 (en) | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
| US8332197B2 (en) * | 2002-12-12 | 2012-12-11 | Pmc-Sierra Us, Inc. | Simulation of complex system architecture |
| US6941438B2 (en) | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
| GB0303270D0 (en) * | 2003-02-13 | 2003-03-19 | Renishaw Plc | A machine tool control process and apparatus therefor |
| US7234133B2 (en) * | 2003-05-20 | 2007-06-19 | Sap Aktiengesellschaft | Software expiry before delivery |
| US20050028036A1 (en) * | 2003-07-30 | 2005-02-03 | Kohsaku Shibata | Program debug apparatus, program debug method and program |
| KR100594305B1 (ko) * | 2004-12-17 | 2006-06-30 | 삼성전자주식회사 | 시리얼 ata 인터페이스를 이용하여 광학 디스크드라이버의 프로그램 코드를 업데이트하는 장치 및 그 방법 |
| US20060136608A1 (en) * | 2004-12-22 | 2006-06-22 | Gilbert Jeffrey D | System and method for control registers accessed via private operations |
| JP2006227681A (ja) * | 2005-02-15 | 2006-08-31 | Matsushita Electric Ind Co Ltd | デバッグ装置、デバッグ方法およびプログラム |
| US9146832B2 (en) * | 2005-10-14 | 2015-09-29 | Oracle International Corporation | Debugging functionality embedded in an application |
| US8239832B2 (en) * | 2007-05-25 | 2012-08-07 | Microsoft Corporation | In-process debugging using external debugging infrastructure |
| FR2942559B1 (fr) * | 2009-02-24 | 2016-05-20 | European Aeronautic Defence And Space Company - Eads France | Procede de protection du code source d'un programme d'ordinateur. |
| US20100251213A1 (en) * | 2009-03-24 | 2010-09-30 | Horizon Semiconductors Ltd. | Method for executing debug commands |
| US8438558B1 (en) | 2009-03-27 | 2013-05-07 | Google Inc. | System and method of updating programs and data |
| US20110137820A1 (en) * | 2009-12-09 | 2011-06-09 | Reisbich Julia | Graphical model-based debugging for business processes |
| US20110246965A1 (en) * | 2010-04-01 | 2011-10-06 | International Business Machines Corporation | Correcting document generation for policy compliance |
| US8719797B2 (en) | 2010-05-18 | 2014-05-06 | Blackberry Limited | System and method for debugging dynamically generated code of an application |
| US8572579B2 (en) * | 2010-08-19 | 2013-10-29 | Oracle International Corporation | Break on next called function or method in java debugger agent |
| US9367429B2 (en) * | 2012-12-21 | 2016-06-14 | Microsoft Technology Licensing, Llc | Diagnostics of declarative source elements |
| US10339229B1 (en) | 2013-05-31 | 2019-07-02 | Cadence Design Systems, Inc. | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system |
| US9690686B1 (en) * | 2014-03-31 | 2017-06-27 | Cadence Design Systems, Inc. | Method for setting breakpoints in automatically loaded software |
| US9152536B1 (en) * | 2014-05-19 | 2015-10-06 | International Business Machines Corporation | Validating correctness of expression evaluation within a debugger |
| WO2015183276A1 (en) * | 2014-05-29 | 2015-12-03 | Hewlett-Packard Development Company, L.P. | Isolating production environment debugging sessions |
| US11487561B1 (en) | 2014-12-24 | 2022-11-01 | Cadence Design Systems, Inc. | Post simulation debug and analysis using a system memory model |
| US10802852B1 (en) | 2015-07-07 | 2020-10-13 | Cadence Design Systems, Inc. | Method for interactive embedded software debugging through the control of simulation tracing components |
| CN109507991B (zh) * | 2018-12-25 | 2020-08-11 | 中国兵器装备集团自动化研究所 | 一种双轴伺服控制平台调试系统及方法 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5321828A (en) * | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
| US5265254A (en) * | 1991-08-14 | 1993-11-23 | Hewlett-Packard Company | System of debugging software through use of code markers inserted into spaces in the source code during and after compilation |
-
1995
- 1995-11-01 JP JP7285382A patent/JPH08272648A/ja active Pending
-
1997
- 1997-04-21 US US08/839,229 patent/US5815714A/en not_active Expired - Fee Related
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000076094A (ja) * | 1998-09-03 | 2000-03-14 | Ricoh Co Ltd | シミュレータ |
| US7134115B2 (en) | 2002-02-07 | 2006-11-07 | Matsushita Electric Industrial Co., Ltd. | Apparatus, method, and program for breakpoint setting |
| JP2014146358A (ja) * | 2008-04-07 | 2014-08-14 | International Business Maschines Corporation | デバッガ・データ・プロセシング・システム、デバッギング方法およびコンピュータ・プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| US5815714A (en) | 1998-09-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH08272648A (ja) | デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置 | |
| CN102279789B (zh) | 生产阶段嵌入式系统的调试系统及其调试方法 | |
| JP2002532804A (ja) | ハイブリッドコンピュータプログラミング環境 | |
| JP4874277B2 (ja) | 自動テスト実行システム | |
| EP0406028A2 (en) | Incremental compiler for source code development system | |
| CN100359485C (zh) | 嵌入式系统的测试装置及测试方法 | |
| KR0125605B1 (ko) | 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치 | |
| US6178547B1 (en) | Method and apparatus for generating non-redundant symbolic debug information in computer programs | |
| CN117785671A (zh) | 一种基于inline-hook patch的x86黑盒收集覆盖率方法和系统 | |
| CN114880212A (zh) | 调试系统及调试方法 | |
| CN112285542B (zh) | 一种面向fpga外部接口逻辑的调试与测试方法 | |
| CN115658033A (zh) | 一种rpa代码开发方法及系统 | |
| US20100251213A1 (en) | Method for executing debug commands | |
| JP2009515243A (ja) | ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法 | |
| JP3745968B2 (ja) | 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体 | |
| JPH08137684A (ja) | プログラム転送方法、プログラム開発システムならびにプログラム開発装置およびプログラム実行装置 | |
| JP3368795B2 (ja) | コンパイル制御方法、コンパイル装置及び記録媒体 | |
| CN115437671B (zh) | 一种嵌入式系统应用程序更新方法、装置及存储介质 | |
| JP5067705B2 (ja) | 異常系テスト支援装置、異常系テスト支援方法、及びプログラム | |
| JP2007193586A (ja) | プログラムテスト支援システム、方法及びプログラム | |
| KR0175469B1 (ko) | 칠프로그램 변수의 가시성 제어방법 | |
| JPH11232091A (ja) | データ処理方法および装置、情報記憶媒体 | |
| JP2001005688A (ja) | 並列プログラム用デバッグ支援装置 | |
| JPH05108404A (ja) | デバツガシステム | |
| JP2007004516A (ja) | 組込みシステムのプログラムデバッグ方法 |