JP3764405B2 - デバッグ装置及びデバッグ方法 - Google Patents
デバッグ装置及びデバッグ方法 Download PDFInfo
- Publication number
- JP3764405B2 JP3764405B2 JP2002152961A JP2002152961A JP3764405B2 JP 3764405 B2 JP3764405 B2 JP 3764405B2 JP 2002152961 A JP2002152961 A JP 2002152961A JP 2002152961 A JP2002152961 A JP 2002152961A JP 3764405 B2 JP3764405 B2 JP 3764405B2
- Authority
- JP
- Japan
- Prior art keywords
- identifier
- program
- stored
- command
- storage device
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、例えばシステムLSIの設計開発に利用される開発環境(development environment)に係り、特に、システムLSIの設計開発環境のデバッグ装置及びデバッグ方法に関する。
【0002】
【従来の技術】
マルチメディア応用のように、リアルタイム処理が必要な応用がある。リアルタイム処理を可能とするためには、キャッシュのリフィルによるオーバーヘッドを避ける必要がある。このため、マルチメディア応用に使用されるプロセッサは、命令キャッシュの他に命令メモリ(以下、IMEMと称す)を搭載しているものがある。
【0003】
図12に示すように、主記憶は、例えばシンクロナスDRAM(SDRAM)により構成されている。この主記憶は、例えば256Mビット程度の大きな容量を有している。また、IMEMは、例えば数十kビット程度の容量の単なるRAMであり、1命令サイクルで命令を取り出すことができ、高速動作が可能とされている。
【0004】
主記憶内には、複数の命令からなるプログラムコード(以下、単にコードと呼ぶ)が格納されている。この主記憶内の複数のコードは、IMEMのオーバーレイ領域に転送され、IMEMにおいて実行される。すなわち、IMEMは前述したように小容量のメモリである。このため、プログラム全体をIMEMのオーバーレイ領域に記憶することは困難となっている。したがって、プログラムを複数のコードに分割し、このコードをプログラムの実行に従ってオーバーレイ領域に転送して実行するようにしている。このため、オーバーレイ領域に記憶されているコードは、コードが転送される度に最新のコードに置き換えられる。
【0005】
例えば図12において、主記憶内にコード1とコード2が有り、コード1を実行する時、それがIMEMのオーバーレイ領域にコピーされる。また、コード2が実行される時、それがIMEMのオーバーレイ領域にコピーされる。このため、コード1はコード2にオーバーレイされる。したがって、IMEM上のアドレスAには、コード1の命令1が置かれている場合も有れば、コード2の命令2が置かれていることもある。IMEMの内容は、異なる複数のタスクによって置き換えられたり、同一タスクによっても置き換えられたりする。
【0006】
【発明が解決しようとする課題】
ところで、プログラムをデバッグする際、最も良く用いるデバッグ手段としてブレーク・ポイントがある。これは、実行がそのアドレスに至ろうとする時に実行を止める方法である。ところが、IMEM上で複数のコードがオーバーレイされている場合、設定したブレーク命令が実行されなかったり、間違ってブレーク命令が実行される場合がある。プログラムの実行としては、シミュレータによる実行と実デバイスによる実行があり、ブレーク命令が機能しないケースも以下のように様々有る。
【0007】
(1)シミュレータで実行している場合
通常、ブレーク・ポイントの実行時のアドレスは、シミュレータの内部領域に保存され、プログラム・カウンタ(PC)の値が、保存したブレーク・ポイントのアドレスと一致した時にブレークされる。しかし、前述したようにIMEM上には複数のコードが置き換えられる。このため、ブレークしたいアドレス以外のアドレスでブレークされることとなり、間違ってブレークされることがある。例えば、図12のコード1の命令1でブレークさせることにする。その場合、シミュレータはアドレスA(これを命令1の実行アドレスと言う)を保存する。しかし、コード1より先にコード2が実行されると、命令1のアドレスAには命令2が置き換えられている。このため、コード2の命令2でブレークされてしまう。つまり、意図しないところで、間違ってブレークが発生することとなる。
【0008】
(2)実デバイスで実行している場合
実デバイスのブレーク手段としては、ハード・ブレークとソフト・ブレークの2種類が有る。ハード・ブレークの動作は、前述したシミュレータの場合と類似している。すなわち、ブレーク・ポイントの実行時のアドレスがハードウェア、例えばアドレス・ブレーク・レジスタに保存される。プログラム・カウンタ(PC)の値がアドレス・ブレーク・レジスタに保存されたアドレスと一致した場合、ブレークされる。この場合、シミュレータの場合と同様に、間違ってブレークが発生することがある。
【0009】
一方、図13は、ソフト・ブレークの例を示している。ソフト・ブレークの場合、例えばプログラムを書き換えることによりブレークを発生させる。例えば図13(a)に示す命令1にてブレークさせる場合、先ず、図13(b)に示すように、命令1がデバッグ・モニタ領域に退避され、図13(c)に示すように、命令1の代わりにdbreak命令(デバッグ割込を発生する命令)が設定される。すなわち、命令1からdbreak命令にプログラムが書き換えられる。この後、dbreak命令が実行されると、以後の命令実行が中断され、デバッグ・ハンドラ又はモニタに制御が移る。この後、デバッグ・ハンドラ又はモニタにより、命令1が元のアドレスに戻される。しかし、IMEM上で複数のコードがオーバーレイされている場合、上記ソフト・ブレークが実行されない場合が有る。
【0010】
例えば図14(a)に示すように、IMEMに格納されているコード1の命令1でブレークさせる場合を考える。この場合、図14(b)に示すように、IMEMのアドレスAに有る命令1がdbreak命令に置き換えられる。しかし、その後、図14(c)に示すように、コード1がコード2にオーバーレイされると、前記dbreak命令は命令2に置き換わってしまう。この後、図14(d)に示すように、再度コード1がコード2にオーバーレイされた場合、IMEM上のコード1のアドレスAにdbreak命令は無くなってしまう。このため、プログラム・カウンタの出力値がアドレスAに至ると、命令1が実行されてしまいブレークされないこととなる。
【0011】
このように、従来のデバッガは、意図したアドレスでブレークさせることができず、間違ったアドレスでブレークすることがあり、効率良くプログラムをデバッグすることが困難であった。
【0012】
本発明は、上記課題を解決するためになされたものであり、その目的とするところは、プログラムコードがオーバーレイされる場合において、ブレークさせるべきアドレスにおいて確実にブレークさせることができるとともに、間違ったアドレスでブレークすることを防止でき、効率良くプログラムをデバッグすることが可能なデバッグ装置及びデバッグ方法を提供しようとするものである。
【0013】
【課題を解決するための手段】
本発明のデバッグ装置の態様は、識別子により識別された複数のプログラムコードを格納する第1の記憶装置と、複数のバンクを有し、前記バンクの各々は、少なくとも1つの記憶領域を有し、この記憶領域に前記第1の記憶装置に格納された前記複数のプログラムコードのうち、実行されるプログラムコードが格納される第2の記憶装置と、前記第2の記憶装置の少なくとも1つの前記記憶領域に格納される前記プログラムコードのそれぞれの前記識別子を変数領域名に対応して記憶する変数領域と、入力されたコマンドにより指定されたアドレスにおいて、前記コマンドにより設定された識別子が、前記コマンドによって設定された変数領域名により示された前記変数領域に記憶された識別子と一致した場合、複数のプログラムコードのうち対応するプログラムコードの実行をブレークさせる制御部とを具備している。
【0014】
本発明のデバッグ方法の態様は、識別子により識別された複数のプログラムコードを格納する第1の記憶装置と、複数のバンクを有し、前記バンクの各々は、少なくとも1つの記憶領域を有し、この記憶領域に前記第1の記憶装置に格納された前記複数のプログラムコードのうち、実行されるプログラムコードが格納される第2の記憶装置と、前記第2の記憶装置の少なくとも1つの前記記憶領域に格納される前記プログラムコードのそれぞれの前記識別子を変数領域名に対応して記憶する変数領域と、入力されたコマンドにより設定されたアドレスにおいて、前記コマンドにより設定された識別子、及び変数領域名と前記変数領域に前記変数領域名に対応して記憶された識別子とを比較する制御部と、DMAコントローラとを具備するデバッグ装置によるデバッグ方法であって、前記DMAコントローラにより、前記第1の記憶装置に記憶された複数のプログラムコードのうちから実行すべきプログラムコードを前記第2の記憶装置の前記複数のバンクに設定された少なくとも1つの前記記憶領域のうちの1つに転送するとき、前記制御部により、前記記憶領域に転送されるプログラムコードの前記識別子を変数領域名に対応して設けられた複数の前記変数領域のうちの1つに記憶させ、前記制御部は、プログラム・カウンタの出力値と入力された前記コマンドにより設定されたアドレスとを比較し、前記比較の結果、プログラム・カウンタの出力値と前記コマンドにより設定されたアドレスが一致した場合、前記コマンドに設定された前記変数領域を示す識別子が、前記コマンドによって設定された変数領域名により示された前記変数領域に記憶された識別子と一致した場合、前記プログラムコードの実行をブレークさせる。
【0017】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【0018】
(第1の実施形態)
図1は、第1の実施形態に適用されるデバッグ装置の全体構成の一例を示している。基板1には、プロセッサのチップ2が配置されている。このチップ2は、JTAG(Joint Test Action Group)ポート3を介してJTAGコントローラ4に接続されている。このJTAGコントローラ4は、パーソナルコンピュータ(又はワークステーション)5に接続されている。このパーソナルコンピュータ5にはチップ2に組み込まれるプログラムのデバッグを制御するデバッガ6、及びプログラムをシミュレートするシミュレータ7が記憶されている。
【0019】
図2は、前記チップ2に収容されているプロセッサの概略構成を示している。CPU11は命令メモリとしてのIMEM12を内蔵している。CPU11はバス13に接続されている。バス13には、SDRAMC(SDRAMコントローラ)14を介して主記憶としてのSDRAM15が接続されている。このSDRAM15は例えば256Mビット程度の大きな容量を有しており、例えばチップ2の外部に配置されている。さらに、バス13には、前記IMEM12をSDRAM15との間でデータの転送を制御するDMAC(DMAコントローラ)16が接続されている。前記IMEM12は、例えば1命令サイクルで命令を取り出すことができる例えば数十kビット程度の容量を有する高速なRAMにより構成されている。
【0020】
次に、図3、4を参照して図1、図2の具体的な構成について説明する。尚、図3、4において、図1、2と同一部分には同一符号を付す。
【0021】
先ず、図3を用いて、オーバーレイされるコードについて説明する。本実施形態において、オーバーレイされるコードは、2種類のアドレスを有している。図3に示すように、コードが実行される前は比較的低速なメモリ、本実施形態では、SDRAMに置かれている。この時のアドレスを配置アドレスと呼ぶ。図3において、アドレス1は配置アドレスを示している。このコード1は、実行時にIMEMに格納される。この時のアドレスをコード1の実行アドレスという。図3に示すアドレスAは、コード1における命令1の実行アドレスの例である。この実施形態では、1つのコードが複数の実行アドレスを持たない。つまり、IMEMの別の実行アドレスに格納されないと仮定する。
【0022】
図4は、図1、図2の構成を具体的に示している。SDRAM15には制御プログラムとしてのOS(Operating System)と複数のタスク1、タスク2、…のコードが格納されている。一方、IMEM12は、例えば2つのバンクに分割されている。バンク1には、OSのうちの常駐部がコピーされている。さらに、IMEM12は、例えば4つのオーバーレイ領域1、2、3、4を有している。オーバーレイ領域及びタスクの数は任意であり、少なくとも1つあればよい。オーバーレイ領域1、2はバンク1に配置され、オーバーレイ領域3、4は、バンク2に配置されている。これらオーバーレイ領域毎に、各タスクのコードが置き換えられる。
【0023】
前記SDARM15内のタスク1のコードは、コード1−1、コード1−2−1〜コード1−4−2に分けられている。各コードは、実行前にIMEM12の対応するオーバーレイ領域にコピーされる。すなわち、コード1−1はオーバーレイ領域1にコピーされ、コード1−2−1と1−2−2はオーバーレイ領域2にコピーされる。また、コード1−3はオーバーレイ領域3にコピーされ、コード1−4−1と1−4−2はオーバーレイ領域4にコピーされる。つまり、オーバーレイ領域2は、コード1−2−1と1−2−2に共有され、オーバーレイ領域4は、コード1−4−1と1−4−2に共有される。各タスクのコードは、例えばプログラマにより予め設定される。
【0024】
各コードは、識別子としてのIDを有している。このIDは、例えば16ビット長であり、先頭の8ビットにはタスクの識別子が記録され、残りの8ビットにはタスク内でユニークな識別子が記録されている。例えば、コード1−1のIDは0x0101であり、コード1−2−1のIDは0x0102である。各コードのIDは、言語ツールにより設定される。
【0025】
また、各オーバーレイ領域に対応して、変数領域OVR1、2、3、4が設けられている。すなわち、変数領域OVR1、2、3、4は、それぞれオーバーレイ領域1、2、3、4に対応している。この変数領域OVR1、2、3、4は、どのコードがIMEM12のどのオーバーレイ領域にコピーされているかを示している。例えばコード1−1がオーバーレイ領域1にコピーされている場合、変数領域OVR1には、コード1−1のID0x0101が格納される。この変数領域OVR1―4は、例えばデバッガ、シミュレータ、OS、タスクのどれからも参照可能とされている。前記ID、及び変数領域OVR1−4は、例えばSDRAM15内に記憶されている。
【0026】
本実施形態において、変数領域OVR1、2、3、4は、オペレーティングシステムの中核を構成し、IMEM12に常駐されるカーネル又はタスク管理プログラムにより、先ず更新される。例えば現在タスク2が実行されている状態において、カーネルがタスク2から、タスク1を切り替える場合、カーネルが先ず変数領域OVR1を0x0101に変更する。この後、SDRAM15のコード1−1をIMEM12のオーバーレイ領域1にコピーする。この後、タスク1は、例えばコード1−3をオーバーレイ領域3にコピーする。この場合、先ず、変数領域OVR3が0x0104に変更される。この後、DMAC16が起動され、コード1−3がオーバーレイ領域3にコピーされる。オーバーレイ領域1とオーバーレイ領域3は、異なるバンクに配置されている。このため、コード1−1の実行とコード1−3のDMAによる転送は並行に実行される。なお、各コードは、プログラムの構成単位としてのセクションを構成しているものとする。
【0027】
次に、ブレーク・ポイントの設定方法について説明する。ブレーク・ポイントは、デバッガ6を起動した状態で、パーソナルコンピュータ(又はワークステーション)5の例えばキーボードより入力される。すなわち、ブレーク・ポイントは、キーボードより入力されたブレーク・コマンドにより設定される。
【0028】
図5は、ブレーク・コマンドの入力形式を示している。図5に示すブレーク・コマンドにおいて、“dbg>break”の後にブレークしたい実行アドレス、オーバーレイ領域を示す変数領域名とIDを指定する。図5に示す例の場合、実行アドレスがアドレスA、変数領域名がOVR1、IDが0x0101である。この記述の意味は、プログラム・カウンタの出力値が実行アドレスAと一致した場合、変数領域名により指定されたオーバーレイ領域1に、IDにより定められたコードがある場合にブレークすることを表している。
【0029】
図6は、図4に示すシミュレータ7でデバッグする場合の動作を示している。シミュレータ7で実行する場合、デバッガ6からシミュレータ7に、前記ブレーク条件(実行アドレス、変数領域名、ID)が供給される。シミュレータ7はこのブレーク条件を保持する。シミュレータは命令を実行しながら、先ず、シミュレータが有するプログラム・カウンタ(PC)の値と実行アドレスとを比較する(ST1)。これらが一致した場合、設定した変数領域名と実際の変数同士が一致しているか、及び設定したIDと実際のID同士が一致するかを比較する(ST2)。すなわち、例えば図5に示す例において、変数領域OVR1の値がコード1−1のID(0x0101)に等しいかどうかを比較する。これらが一致した場合、ブレークする(ST3)。
【0031】
尚、変数領域名とIDはデバッガ6が保持しても良い。また、シミュレータが直接変数領域OVR1−4を参照する構成とすることも可能である。
【0032】
さらに、上記説明では、先ず、プログラム・カウンタ(PC)の値と実行アドレスとを比較し、これらが一致した場合、設定した変数領域名と実際の変数同士が一致しているか、及び設定したIDと実際のID同士が一致するかを比較している。しかし、この比較順序を逆としてもよい。すなわち、先ず、設定した変数領域名と実際の変数同士が一致しているか、及び設定したIDと実際のID同士が一致するかを比較し、これらが一致した場合、プログラム・カウンタ(PC)の値と実行アドレスとを比較してもよい。
【0033】
次に、図7、図8を参照して実デバイスでデバッグする場合の動作について説明する。
【0034】
図7は、本実施例におけるデバッガ用オブジェクトを示している。図7に示すように、デバッガ用実行プログラムにおいて、各セクション(コード)は、セクションの先頭に対応する配置アドレスと実行アドレスをデバッグ情報として有している。前記配置アドレスはセクションがSDRAM15に記憶されているときのセクションの先頭アドレスを示している。前記実行アドレスはセクションがIMEM12に記憶されているときのセクションの先頭アドレスを示している。ユーザにより、図5に示すブレーク条件が入力されると、先ず、図8(a)に示すIMEM12のアドレスAに有る命令1がデバッガ6の図示せぬモニタ領域に退避される。すなわち、ブレーク・コマンドのブレークしたい実行アドレスに基づいてIMEM12のアドレスAに有る命令1がデバッガ6の図示せぬモニタ領域に退避される。
【0035】
この後、図8(b)に示すように、アドレスAにブレーク命令としてのdbreak命令が書き込まれる。これとともに、SDRAM15に記憶されているコード1の命令1がdbreak命令により上書きされる。
【0036】
SDRAM15における命令1の配置アドレスは、次のようにして求められる。デバッガはブレーク・コマンドの実行アドレスに基づき、その実行アドレスが属するコードのデバッガ用オブジェクトを取得する。このデバッガ用オブジェクトよりセクションの先頭の配置アドレスを知る。この配置アドレスにセクション内における配置アドレスから命令1までのオフセット(相対アドレス)を加えることにより、SDRAM15におけるアドレス1を得ることができる。
【0037】
このように、IMEM12の実行アドレスとSDRAM15の配置アドレスの両方にdbreak命令が書き込まれている。このため、IMEM12のコード1が別のコードにより置き換えられ、dbreak命令が別の命令により上書きされた場合においても、コード1が実行される時、SDRAM15からIMEM12にコード1が再度コピーされる。この結果、dbreak命令もIMEM上に再度コピーされる。したがって、IMEM12において、dbreak命令が消えることがないため、アドレスAにおいて確実にブレークできる。
【0038】
上記第1の実施形態によれば、各コードにIDを設定し、IMEM12のオーバーレイ領域にコピーされているコードを変数領域OVR1−4に記憶されたコードIDにより管理している。さらに、ブレーク・ポイントを設定するブレーク・コマンドは、ブレークさせる実行アドレスに対応して、変数領域名、IDを有している。したがって、シミュレータでデバッグする場合、IMEM12にコピーされているコードが別のコードにより置き換えられた場合、ブレーク・コマンドに設定された変数領域名及びIDと、変数領域の変数領域名及びIDとが不一致となる。このため、ブレークされない。また、ブレーク・コマンドに設定されたコードを実行する場合、対応するコードは、SDRAM15からIMEM12にコピーされる。このとき、変数領域の変数領域名とIDは、ブレーク・コマンドに設定されたそれと一致する。したがって、コードがオーバーレイされている場合においても、設定したアドレスにおいて確実にブレークできる。
【0039】
また、実デバイスによりデバッグするとき、IMEM12に記憶されたコードの実行アドレスと、SDRAM15に記憶されている同一のコードの配置アドレスの両方にブレーク命令を書き込んでいる。このため、IMEM12に記憶されたコードが別のコードにより置き換えられた場合においても、ブレーク命令を消失することがない。したがって、ブレーク命令を設定したアドレスにおいて確実にブレークさせることができる。
【0040】
さらに、変数領域は、複数の領域を有している。このため、デバッグ領域が複数個設定されている場合においても、確実に所要のアドレスでブレークできる。
【0041】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
【0042】
前記第1の実施形態は、カーネルとタスクが変数領域OVR1−4の内容を更新するとした。これに対して、第2の実施形態は、DMAC(DMAコントローラ)16が、変数領域OVR1−4の内容を更新する。このような構成とすることにより、ユーザが変数領域OVR1−4の更新を考慮しなくてすむようになる。
【0043】
この場合、DMAC16のハードウェアが、変数領域OVR1−4の内容を更新する方法と、DMAC16を起動させるための関数を設け、この関数によりソフトウェアによって変数領域OVR1−4の内容を更新する方法が有る。
【0044】
また、シミュレータに、変数領域OVR1−4の内容を更新する機能を持たせることも考えられる。しかし、この場合、実デバイスでブレークさせることはできない。
【0045】
上記第2の実施形態によれば、DMAC16により変数領域OVR1−4の内容を更新することにより、ユーザはユーザが設定したオーバーレイを実行する際、変数領域OVR1−4を変更する必要がない。このため、ユーザの負担を軽減することができる。
【0046】
(第3の実施形態)
図9(a)(b)は、本発明の第3の実施形態を示している。
【0047】
図9(a)に示すように、例えばデバッガが、ソースプログラムからコード及び各コードに対応するIDを有するテーブルを生成するようにしてもよい。このような構成とした場合、ユーザはブレーク・コマンドを入力するだけでよく、一層、ユーザの負担を軽減できる。
【0048】
また、図9(b)に示すように、例えばコンパイラが、ソースプログラムからコード及び各コードに対応するIDを有するテーブルを生成するようにしてもよい。このような構成とした場合も上記と同様に、ユーザはブレーク・コマンドを入力するだけでよく、ユーザの負担を軽減できる。
【0049】
(第4の実施形態)
上記第1乃至第3の実施形態において、ブレーク・コマンドは、キーボードから入力した。しかし、これに限定されるものではない。
【0050】
図10は、本発明の第4の実施形態を示すものであり、GUI(Graphics User Interface)を用いてブレーク・コマンドを入力する例を示している。パーソナルコンピュータやワークステーションのディスプレイ31には、例えばデバッガ6のソース・ウィンドウ32が表示されている。このソース・ウィンドウ32には、C言語又は、アセンブラ言語により記載されたソースプログラムが表示されている。このソースプログラムは、例えば配置アドレス又は実行アドレスと、命令とにより構成されている。配置アドレスを表示するか、実行アドレスを表示するかは、ユーザにより任意に設定可能とされている。
【0051】
また、配置アドレスを表示したソースプログラムと、実行アドレスを表示したソースプログラムとを別々のウィンドウに表示することができる。例えば図10に示すウィンドウ321は、配置アドレスを含むソースプログラムを示し、ウィンドウ322は、実行アドレスを含むソースプログラムを示している。さらに、ウィンドウ321とウィンドウ322のいずれか一方を表示すること、ウィンドウ321とウィンドウ322の両方を同時に表示することが可能とされている。また、どのオーバーレイ領域のソースプログラムを表示するかも選択可能とされている。
【0052】
ソース・ウィンドウ32の近傍には、デバッガ6の動作を指示する複数のアイコン33、34、35が表示されている。このうち、アイコン35は、ブレーク・コマンドの生成を促すアイコンである。
【0053】
図11は、デバッガ6の概略動作を示している。図10に示す表示状態において、ソース・ウィンドウ321又は322に表示されているソースプログラムの所要の行にカーソル36を移動し、アイコン35をクリックすると(ST11)、図5に示すブレーク・コマンドが自動的に生成される。すなわち、デバッガ6は、図7に示すデバッガ用実行プログラムのデバッグ情報から実行アドレス、変数領域名、IDを求め(ST12)、これらから前記ブレーク・コマンドを生成する(ST13)。この時、ソース・ウィンドウが配置アドレスを表示している場合、デバッグ情報から実行アドレスが取得され、ブレーク・コマンドに組み込まれる。なお、この実施形態は、前記ブレーク・コマンドそのものを生成する場合に限らず、前記ブレーク・コマンドに相当する情報を生成してもよい。
【0054】
上記第4の実施形態によれば、ユーザは、ディスプレイ31に表示されたソースプログラムの所要の行にカーソルを移動し、ブレーク・コマンド生成用のアイコン35をクリックすればよい。したがって、ユーザは、変数領域名及びIDを認識している必要がないため、操作性を一層向上できる。
【0055】
その他、本発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【0056】
【発明の効果】
以上、詳述したように本発明によれば、プログラムコードがオーバーレイされる場合において、ブレークさせるべきアドレスにおいて確実にブレークさせることができるとともに、間違ったアドレスでブレークすることを防止でき、効率良くプログラムをデバッグすることが可能なデバッグ装置及びデバッグ方法を提供できる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に適用されるデバッグ装置の一例を示す構成図。
【図2】図1の一部を示す構成図。
【図3】オーバーレイされるコードを説明するために示す図。
【図4】図1、図2の構成を具体的に示す構成図。
【図5】ブレーク・コマンドの入力形式を示す図。
【図6】シミュレータでデバッグする場合の動作を示すフローチャート。
【図7】本実施例におけるデバッガ用オブジェクトを示す図。
【図8】図8(a)、図8(b)は、実デバイスでデバッグする場合の動作を説明するために示す図。
【図9】図9(a)、図9(b)は、本発明の第3の実施形態を示すものであり、コード及びIDの生成方法の他の例を説明するために示す図。
【図10】本発明の第4の実施形態を示すものであり、GUIを用いてブレーク・コマンドを入力する例を示す図。
【図11】図10の動作を示すフローチャート。
【図12】従来のデバッガの動作を示す図。
【図13】図13(a)乃至図13(c)は、従来のソフト・ブレークの例を示す図。
【図14】図14(a)乃至図14(d)は、従来のデバッガの動作を示す図。
【符号の説明】
2…チップ、
5…パーソナルコンピュータ(又はワークステーション)、
6…デバッガ、
11…CPU、
12…IMEM(命令メモリ)、
13…バス、
14…SDMAC(SDRAMコントローラ)、
15…SDRAM(主記憶)、
16…DMAC(DMAコントローラ)、
ID…識別子、
1−1、1−2−1〜1−4−2…コード、
OVR1、2、3、4…変数領域。
Claims (13)
- 識別子により識別された複数のプログラムコードを格納する第1の記憶装置と、
複数のバンクを有し、前記バンクの各々は、少なくとも1つの記憶領域を有し、この記憶領域に前記第1の記憶装置に格納された前記複数のプログラムコードのうち、実行されるプログラムコードが格納される第2の記憶装置と、
前記第2の記憶装置の少なくとも1つの前記記憶領域に格納される前記プログラムコードのそれぞれの前記識別子を変数領域名に対応して記憶する変数領域と、
入力されたコマンドにより指定されたアドレスにおいて、前記コマンドにより設定された識別子が、前記コマンドによって設定された変数領域名により示された前記変数領域に記憶された識別子と一致した場合、複数のプログラムコードのうち対応するプログラムコードの実行をブレークさせる制御部と
を具備することを特徴とするデバッグ装置。 - 前記複数のプログラムコードは、少なくとも1つの前記プログラムコードからなるタスクに含まれ、前記識別子は、前記タスクの識別子と、タスク内のプログラムコードの識別子を含むことを特徴とする請求項1記載のデバッグ装置。
- 前記変数領域に格納された識別子は、前記制御部が制御プログラムのカーネル又はタスク管理プログラムを用いて更新することを特徴とする請求項2記載のデバッグ装置。
- 前記第1の記憶装置に記憶されたプログラムコードを前記第2の記憶装置に転送するDMAコントローラをさらに具備することを特徴とする請求項2記載のデバッグ装置。
- 前記変数領域に格納された識別子は、前記プログラムコードをデバッグするデバッガを記憶した前記制御部が参照することを特徴とする請求項2記載のデバッグ装置。
- 前記変数領域の識別子は、前記プログラムコードの実行を試すシミュレータを記憶した前記制御部が直接参照することを特徴とする請求項2記載のデバッグ装置。
- 識別子により識別された複数のプログラムコードを格納する第1の記憶装置と、
複数のバンクを有し、前記バンクの各々は、少なくとも1つの記憶領域を有し、この記憶領域に前記第1の記憶装置に格納された前記複数のプログラムコードのうち、実行されるプログラムコードが格納される第2の記憶装置と、
前記第2の記憶装置の少なくとも1つの前記記憶領域に格納される前記プログラムコードのそれぞれの前記識別子を変数領域名に対応して記憶する変数領域と、
入力されたコマンドにより設定されたアドレスにおいて、前記コマンドにより設定された識別子、及び変数領域名と前記変数領域に前記変数領域名に対応して記憶された識別子とを比較する制御部と、
DMAコントローラとを具備するデバッグ装置によるデバッグ方法であって、
前記DMAコントローラにより、前記第1の記憶装置に記憶された複数のプログラムコードのうちから実行すべきプログラムコードを前記第2の記憶装置の前記複数のバンクに設定された少なくとも1つの前記記憶領域のうちの1つに転送するとき、前記制御部により、前記記憶領域に転送されるプログラムコードの前記識別子を変数領域名に対応して設けられた複数の前記変数領域のうちの1つに記憶させ、
前記制御部は、プログラム・カウンタの出力値と入力された前記コマンドにより設定されたアドレスとを比較し、
前記比較の結果、プログラム・カウンタの出力値と前記コマンドにより設定されたアドレスが一致するとともに、前記コマンドに設定された前記変数領域を示す識別子が、前記コマンドによって設定された変数領域名により示された前記変数領域に記憶された識別子と一致した場合、前記プログラムコードの実行をブレークさせることを特徴とするデバッグ方法。 - 前記制御部は、前記第1の記憶装置から前記第2の記憶装置にプログラムコードを転送する前に、前記第1の記憶装置に記憶された各プログラムコードに前記識別子を設定することを特徴とする請求項7記載のデバッグ方法。
- 前記変数領域の識別子は、前記制御部が制御プログラムのカーネル又はタスク管理プログラムを用いて更新することを特徴とする請求項7記載のデバッグ方法。
- 前記変数領域の識別子は、前記DMAコントローラがプログラムコードの転送に対応して更新することを特徴とする請求項7記載のデバッグ方法。
- プログラムコード及び各プログラムコードに対応する識別子は、ソースプログラムからデバッガを記憶した制御部が生成することを特徴とする請求項7又記載のデバッグ方法。
- プログラムコード及び各プログラムコードに対応する識別子は、ソースプログラムからコンパイラが生成することを特徴とする請求項7記載のデバッグ方法。
- 前記制御部は、前記プログラム・カウンタの出力値と入力された前記コマンドに設定されたアドレスとを比較する前に、ディスプレイ上にソースプログラム、及び前記コマンドの生成を促すアイコンを表示し、
前記アイコンの操作に応じて、前記ディスプレイ上に表示されたソースプログラムの指定された部分に対応するアドレス、及び前記識別子に基づき前記コマンド又は前記コマンドに相当する情報を生成することを特徴とする請求項7記載のデバッグ方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002152961A JP3764405B2 (ja) | 2002-05-27 | 2002-05-27 | デバッグ装置及びデバッグ方法 |
US10/208,839 US7043717B2 (en) | 2002-05-27 | 2002-08-01 | Debugging apparatus and method |
EP02016970A EP1367490A3 (en) | 2002-05-27 | 2002-08-02 | Debugging apparatus and method |
TW091123684A TWI241523B (en) | 2002-05-27 | 2002-10-15 | Debugging device and debugging method |
KR10-2002-0066440A KR100526384B1 (ko) | 2002-05-27 | 2002-10-30 | 디버그 장치 및 디버그 방법 |
CNB021482519A CN1231836C (zh) | 2002-05-27 | 2002-10-31 | 排错装置及排错方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002152961A JP3764405B2 (ja) | 2002-05-27 | 2002-05-27 | デバッグ装置及びデバッグ方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003345624A JP2003345624A (ja) | 2003-12-05 |
JP3764405B2 true JP3764405B2 (ja) | 2006-04-05 |
Family
ID=29417159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002152961A Expired - Fee Related JP3764405B2 (ja) | 2002-05-27 | 2002-05-27 | デバッグ装置及びデバッグ方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7043717B2 (ja) |
EP (1) | EP1367490A3 (ja) |
JP (1) | JP3764405B2 (ja) |
KR (1) | KR100526384B1 (ja) |
CN (1) | CN1231836C (ja) |
TW (1) | TWI241523B (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4202673B2 (ja) * | 2002-04-26 | 2008-12-24 | 株式会社東芝 | システムlsi開発環境生成方法及びそのプログラム |
US7634640B2 (en) * | 2002-08-30 | 2009-12-15 | Infineon Technologies Ag | Data processing apparatus having program counter sensor |
US8020148B2 (en) * | 2002-09-23 | 2011-09-13 | Telefonaktiebolaget L M Ericsson (Publ) | Bi-directional probing and testing of software |
US20050060690A1 (en) * | 2003-09-15 | 2005-03-17 | Kuo-Jung Tung | Microprocessor system with software emulation processed by auxiliary hardware |
KR100725502B1 (ko) * | 2005-09-09 | 2007-06-08 | 삼성전자주식회사 | 전자장치, 전자장치 시스템 및 전자장치의 제어방법 |
JP2009043061A (ja) * | 2007-08-09 | 2009-02-26 | Oki Electric Ind Co Ltd | デバッグ装置及びデバッグ方法 |
JP5163230B2 (ja) * | 2008-03-31 | 2013-03-13 | 富士通株式会社 | 検証プログラム、該プログラムを記録した記録媒体、検証装置、および検証方法 |
KR101636521B1 (ko) * | 2010-03-26 | 2016-07-06 | 삼성전자주식회사 | 코드 오버레이 생성 장치 및 방법 |
US8572579B2 (en) * | 2010-08-19 | 2013-10-29 | Oracle International Corporation | Break on next called function or method in java debugger agent |
CN104346274B (zh) * | 2013-07-29 | 2017-06-06 | 国际商业机器公司 | 程序调试器及一种程序的调试方法 |
US20170147471A1 (en) * | 2014-05-29 | 2017-05-25 | Hewlett Packard Enterprise Development Lp | Isolating production environment debugging sessions |
TWI751706B (zh) * | 2020-09-16 | 2022-01-01 | 宏碁股份有限公司 | 自動產生開發解決方案的方法及裝置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57108942A (en) | 1980-12-25 | 1982-07-07 | Fujitsu Ltd | Address stop system for overlay program |
JPS57137951A (en) | 1981-02-18 | 1982-08-25 | Nec Corp | Data processor |
JPS58112149A (ja) | 1981-12-25 | 1983-07-04 | Hitachi Ltd | オ−バ−レイプログラムのアドレス変換方式 |
JPH02300943A (ja) | 1989-05-16 | 1990-12-13 | Nec Corp | デバッグサポート方式 |
JPH03113648A (ja) | 1989-09-28 | 1991-05-15 | Mitsubishi Electric Corp | プログラムデバツグ方式 |
JPH0464139A (ja) | 1990-07-04 | 1992-02-28 | Toshiba Corp | プログラムローディング装置 |
JPH04145544A (ja) | 1990-10-05 | 1992-05-19 | Nec Corp | デバッグ装置 |
JP2869379B2 (ja) | 1996-03-15 | 1999-03-10 | 三菱電機株式会社 | プロセッサ合成システム及びプロセッサ合成方法 |
JP2856152B2 (ja) | 1996-05-30 | 1999-02-10 | 日本電気株式会社 | カーネルデバッガにおけるソフトウェアブレークポイント管理方式 |
JPH1185565A (ja) * | 1997-09-12 | 1999-03-30 | Yaskawa Electric Corp | Cpuのデバッグ方法およびそのシステム |
JP3671667B2 (ja) * | 1998-03-31 | 2005-07-13 | セイコーエプソン株式会社 | マイクロコンピュータ、電子機器及びデバッグシステム |
EP0992906B1 (en) | 1998-10-06 | 2005-08-03 | Texas Instruments Inc. | Apparatus and method for software breakpoint in a delay slot |
JP2000250777A (ja) | 1999-02-25 | 2000-09-14 | Canon Inc | 情報処理装置と情報処理方法、及び記憶媒体 |
US6412106B1 (en) * | 1999-06-16 | 2002-06-25 | Intervoice Limited Partnership | Graphical system and method for debugging computer programs |
JP2001034504A (ja) * | 1999-07-19 | 2001-02-09 | Mitsubishi Electric Corp | ソースレベルデバッガ |
JP2001282572A (ja) | 2000-03-29 | 2001-10-12 | Canon Inc | プログラムデバッグ装置および方法 |
KR100337149B1 (ko) | 2000-07-05 | 2002-05-18 | 권 기 홍 | 프로그램 테스트 및 디버깅이 용이한 중앙처리장치 |
US6766511B1 (en) * | 2000-07-10 | 2004-07-20 | International Business Machines Corporation | Apparatus and method for performing symbolic resolution of modules using static representations of a trace |
JP2002041285A (ja) * | 2000-07-28 | 2002-02-08 | Toshiba Corp | データ処理装置およびデータ処理方法 |
JP2002073370A (ja) | 2000-08-25 | 2002-03-12 | Nec Microsystems Ltd | デバッグ支援装置およびその装置によるデバッグ方法 |
KR100802606B1 (ko) * | 2001-04-13 | 2008-02-13 | 엘지전자 주식회사 | 데이터의 천이 상태에 따른 디버깅 장치 및 방법 |
US6836884B1 (en) * | 2001-06-04 | 2004-12-28 | Microsoft Corporation | Method and system for editing software programs |
US20030074650A1 (en) * | 2001-10-17 | 2003-04-17 | Tankut Akgul | Debugger operating system for embedded systems |
US6892325B2 (en) * | 2001-11-27 | 2005-05-10 | International Business Machines Corporation | Method for displaying variable values within a software debugger |
-
2002
- 2002-05-27 JP JP2002152961A patent/JP3764405B2/ja not_active Expired - Fee Related
- 2002-08-01 US US10/208,839 patent/US7043717B2/en not_active Expired - Lifetime
- 2002-08-02 EP EP02016970A patent/EP1367490A3/en not_active Withdrawn
- 2002-10-15 TW TW091123684A patent/TWI241523B/zh not_active IP Right Cessation
- 2002-10-30 KR KR10-2002-0066440A patent/KR100526384B1/ko active IP Right Grant
- 2002-10-31 CN CNB021482519A patent/CN1231836C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1231836C (zh) | 2005-12-14 |
KR20030091640A (ko) | 2003-12-03 |
TWI241523B (en) | 2005-10-11 |
KR100526384B1 (ko) | 2005-11-08 |
CN1462938A (zh) | 2003-12-24 |
US20030221188A1 (en) | 2003-11-27 |
JP2003345624A (ja) | 2003-12-05 |
EP1367490A2 (en) | 2003-12-03 |
US7043717B2 (en) | 2006-05-09 |
EP1367490A3 (en) | 2008-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101770665B1 (ko) | 데이터 처리장치의 디버깅 | |
US7836430B2 (en) | Reversing execution of instructions in a debugger | |
US5355498A (en) | Method and apparatus for booting a computer system without loading a device driver into memory | |
US7950001B2 (en) | Method and apparatus for instrumentation in a multiprocessing environment | |
US20050216701A1 (en) | Automatic configuration of a microprocessor | |
Wulf et al. | Overview of the Hydra operating system development | |
JP3764405B2 (ja) | デバッグ装置及びデバッグ方法 | |
US9092570B2 (en) | Memory management for remote software debuggers and methods | |
TW200813838A (en) | Method and apparatus for handling exceptions during binding to native code | |
US20100050157A1 (en) | System and process for debugging object-oriented programming code | |
TWI599876B (zh) | 開機自我測試中的除錯方法以及使用該方法的裝置 | |
US8612720B2 (en) | System and method for implementing data breakpoints | |
US20110126175A1 (en) | Debugging method and debugging device using hardware breakpoints | |
EP3602307B1 (en) | Enabling breakpoints on entire data structures | |
US7293207B2 (en) | Method for testing memory in a computer system utilizing a CPU with either 32-bit or 36-bit memory addressing | |
JP2008140124A (ja) | データ処理装置 | |
JPH0410081B2 (ja) | ||
JPS6113615B2 (ja) | ||
JPS61184643A (ja) | 仮想計算機の起動制御方式 | |
JP2001051965A (ja) | 情報処理装置の試験方法及び記録媒体 | |
JP3859063B2 (ja) | 仮想計算機の構成情報アクセス制御方法 | |
JP2000322289A (ja) | 制御装置エミュレーション方式及び制御装置エミュレーション方法及び制御装置エミュレーション方法を計算機に実現させるためのプログラムを記憶した計算機読取可能な記録媒体 | |
JP2008310487A (ja) | プログラム、例外処理方法、コンピュータ、携帯電話およびテレビ受像装置 | |
JP5447841B2 (ja) | 情報処理装置、デバッグ情報取得方法、およびデバッグ情報取得プログラム | |
Kesteloot | Porting BSD UNIX to a New Platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040420 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040817 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041018 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050607 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050805 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20050902 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051219 |
|
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: 20060117 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060119 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100127 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110127 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120127 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130127 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130127 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140127 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |