JP2002014844A - デバッグ方法及び記録媒体 - Google Patents

デバッグ方法及び記録媒体

Info

Publication number
JP2002014844A
JP2002014844A JP2000198991A JP2000198991A JP2002014844A JP 2002014844 A JP2002014844 A JP 2002014844A JP 2000198991 A JP2000198991 A JP 2000198991A JP 2000198991 A JP2000198991 A JP 2000198991A JP 2002014844 A JP2002014844 A JP 2002014844A
Authority
JP
Japan
Prior art keywords
interrupt
instruction
virtual
address
handler
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
Application number
JP2000198991A
Other languages
English (en)
Inventor
Hiromi Fukuda
宏美 福田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2000198991A priority Critical patent/JP2002014844A/ja
Publication of JP2002014844A publication Critical patent/JP2002014844A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 この発明は、任意のアドレスで割り込みを発
生され、割り込み発生時におけるシステムの動作を十分
に検証することを課題とする。 【解決手段】 この発明は、仮想割り込みの発生アドレ
スと割り込み番号が設定されたデバッグ例外発生命令を
生成し、このデバッグ例外発生命令を仮想割り込みを発
生させるアドレスに置かれた命令に置き換えて仮想割り
込みを発生させるように構成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロコンピュ
ータの割り込み機能をデバッグするデバッグ方法、及び
この方法をコンピュータに実行させるプログラムを記録
したコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】マイクロコンピュータの割り込み機能を
使用した従来のシステムでは、プログラムが実行されて
いる時に発生する割り込み要求の発生タイミングにより
システムの動作が変わってしまう。また、実行されるプ
ログラムにおいて割り込みが発生するタイミングは様々
である。このため、システムのソフトウェアを開発する
際に、不具合のないソフトウェアを作成するためには、
開発するプログラムにおいて、様々なタイミングで割り
込みを発生させ、割り込み発生時のシステムの様々な動
作を確実に検証する必要がある。しかしながら、システ
ムに割り込みを発生させるために、割り込み信号を意図
したタイミングで外部からシステムに入力することは極
めて困難であった。すなわち、割り込み信号を外部から
入力するタイミングを、特定のアドレスの命令の実行時
に同期させることは不可能であった。このため、割り込
みが発生した時のシステムの動作を確実に検証すること
は困難であった。
【0003】
【発明が解決しようとする課題】以上説明したように、
従来のソフトウェアの開発時には、任意のアドレスに対
応した命令の実行に同期して、割り込み処理を発生させ
ることは極めて困難であった。このため、割り込み発生
時におけるシステムの動作を十分に検証することができ
ず、ソフトウェア開発の障害となっていた。
【0004】そこで、この発明は、上記に鑑みてなされ
たものであり、その目的とするところは、任意のアドレ
スで割り込みを発生され、割り込み発生時におけるシス
テムの動作を十分に検証することができるデバッグ方法
及び記録媒体を提供することにある。
【0005】
【課題を解決するための手段】上記目的を達成するため
に、課題を解決するための第1の手段は、割り込みを発
生させるメインプログラムに対して、仮想割り込みを発
生させたい発生アドレスと前記仮想割り込みの割り込み
番号を指定する第1のステップと、前記第1のステップ
で指定された割り込み番号が設定されてデバッグ例外を
発生させるデバッグ例外発生命令を生成する第2のステ
ップと、前記仮想割り込みを発生させる前記メインプロ
グラムのアドレスにそれまで置かれていた命令を、前記
第2のステップで生成された前記デバッグ例外発生命令
に置き換える第3のステップと、前記メインプログラム
が実行されて、前記仮想割り込みを発生させたい発生ア
ドレスに置かれた前記デバッグ例外発生命令が実行され
ると、デバッグ例外が発生してデバッグ例外ハンドラが
実行され、前記デバッグ例外発生命令に設定された割り
込み番号を参照して前記仮想割り込みの発生を判別し、
前記仮想割り込みを発生させる第4のステップとを有す
ることを特徴とする。
【0006】第2の手段は、割り込みを発生させるメイ
ンプログラムに対して、仮想割り込みを発生させたい発
生アドレスと前記仮想割り込みの割り込み番号を指定す
る第1のステップと、前記第1のステップで指定された
割り込み番号が設定されてデバッグ例外を発生させるデ
バッグ例外発生命令を生成する第2のステップと、前記
仮想割り込みを発生させる前記メインプログラムのアド
レスにそれまで置かれていた命令を、前記第2のステッ
プで生成された前記デバッグ例外発生命令に置き換える
第3のステップと、割り込みハンドラのハードウェアア
クセスを伴う命令をnop命令に置き換える際に、前記
ハードウェアアクセスを伴う命令が置かれた前記割り込
みハンドラの置き換え対象アドレスを指定する第4のス
テップと、前記割り込みハンドラに置かれた割り込み要
因を判別するレジスタの読み出し命令を、前記割り込み
要因を判別するレジスタの値を他のレジスタに書き込む
処理を実行させるルーチンに分岐する分岐命令に置き換
える際に、前記読み出し命令が置かれた前記割り込みハ
ンドラの置き換え対象アドレスを指定する第5のステッ
プと、前記メインプログラムが実行されて、前記仮想割
り込みを発生させたい発生アドレスに置かれた前記デバ
ッグ例外発生命令が実行されると、デバッグ例外が発生
してデバッグ例外ハンドラが実行され、前記デバッグ例
外発生命令に設定された割り込み番号を参照して前記仮
想割り込みの発生を判別し、前記仮想割り込みを発生さ
せる第6のステップと、前記第6のステップで発生した
前記仮想割り込みが許可されているか否かを判別する第
7のステップと、前記第7のステップで前記仮想割り込
みが許可されていると判別された場合には、各種レジス
タを更新設定し、前記第4及び第5のステップで指定さ
れた置き換え対象アドレスにおける命令の置き換え作業
を行う第8のステップと、前記割り込みハンドラを実行
し、前記割り込みハンドラの終了後に置き換えられた命
令を元に戻して前記仮想割り込みが発生したアドレスに
戻る第9のステップとを有することを特徴とする。
【0007】第3の手段は、仮想割り込みの割り込み番
号と、該割り込み番号の割り込みの発生/不発生を示す
判定ビットが書き込まれる仮想割り込みレジスタを備
え、割り込みを発生させるメインプログラムに対して、
仮想割り込みを発生させたい発生アドレスと前記仮想割
り込みの割り込み番号を指定する第1のステップと、前
記第1のステップで指定された前記仮想割り込みの割り
込み番号を前記仮想割り込みレジスタに設定する設定命
令を生成する第2のステップと、前記仮想割り込みを発
生させる前記メインプログラムのアドレスにそれまで置
かれていた命令を、前記第2のステップで生成された設
定命令に置き換える第3の第3のステップと、割り込み
ハンドラのハードウェアアクセスを伴う命令をnop命
令に置き換える際に、前記ハードウェアアクセスを伴う
命令が置かれた前記割り込みハンドラの置き換え対象ア
ドレスを指定する第4のステップと、前記割り込みハン
ドラに置かれた割り込み要因を判別するレジスタの読み
出し命令を、前記割り込み要因を判別するレジスタの値
を他のレジスタに書き込む処理を実行させるルーチンに
分岐する分岐命令に置き換える際に、前記読み出し命令
が置かれた前記割り込みハンドラの置き換え対象アドレ
スを指定する第5のステップと、前記メインプログラム
が実行されて、前記仮想割り込みを発生させたい発生ア
ドレスに置かれた前記設定命令が実行されると、前記仮
想割り込みレジスタに割り込み番号が書き込まれる第6
のステップと、前記第6のステップで前記仮想割り込み
レジスタに書き込まれた割り込み番号の割り込みが許可
されているか否かを判別する第7のステップと、割り込
みが許可されている場合には、前記仮想割り込みレジス
タの判定ビットを発生にセットし、仮想割り込みを発生
する第8のステップと、仮想割り込み用のハンドラが実
行され、前記仮想割り込みレジスタの判定ビットを参照
して前記仮想割り込みの発生を判別する第9のステップ
と、前記仮想割り込みが発生すると各種レジスタを更新
設定し、前記第4及び第5のステップで指定された置き
換え対象アドレスにおける命令の置き換え作業を行う第
10のステップと、前記割り込みハンドラを実行し、前
記割り込みハンドラの終了後に置き換えられた命令を元
に戻して前記仮想割り込みが発生したアドレスに戻る第
11のステップとを有することを特徴とする。
【0008】第4の手段は、割り込みを発生させるメイ
ンプログラムに対して、仮想割り込みを発生させたい発
生アドレスと前記仮想割り込みの割り込み番号を指定す
る第1のステップと、前記第1のステップで指定された
割り込み番号が設定されてデバッグ例外を発生させるデ
バッグ例外発生命令を生成する第2のステップと、前記
仮想割り込みを発生させる前記メインプログラムのアド
レスにそれまで置かれていた命令を、前記第2のステッ
プで生成された前記デバッグ例外発生命令に置き換える
第3のステップと、前記メインプログラムが実行され
て、前記仮想割り込みを発生させたい発生アドレスに置
かれた前記デバッグ例外発生命令が実行されると、デバ
ッグ例外が発生してデバッグ例外ハンドラが実行され、
前記デバッグ例外発生命令に設定された割り込み番号を
参照して前記仮想割り込みの発生を判別し、前記仮想割
り込みを発生させる第4のステップとをコンピュータに
実行させるプログラムを記録したことを特徴とする。
【0009】第5の手段は、割り込みを発生させるメイ
ンプログラムに対して、仮想割り込みを発生させたい発
生アドレスと前記仮想割り込みの割り込み番号を指定す
る第1のステップと、前記第1のステップで指定された
割り込み番号が設定されてデバッグ例外を発生させるデ
バッグ例外発生命令を生成する第2のステップと、前記
仮想割り込みを発生させる前記メインプログラムのアド
レスにそれまで置かれていた命令を、前記第2のステッ
プで生成された前記デバッグ例外発生命令に置き換える
第3のステップと、割り込みハンドラのハードウェアア
クセスを伴う命令をnop命令に置き換える際に、前記
ハードウェアアクセスを伴う命令が置かれた前記割り込
みハンドラの置き換え対象アドレスを指定する第4のス
テップと、前記割り込みハンドラに置かれた割り込み要
因を判別するレジスタの読み出し命令を、前記割り込み
要因を判別するレジスタの値を他のレジスタに書き込む
処理を実行させるルーチンに分岐する分岐命令に置き換
える際に、前記読み出し命令が置かれた前記割り込みハ
ンドラの置き換え対象アドレスを指定する第5のステッ
プと、前記メインプログラムが実行されて、前記仮想割
り込みを発生させたい発生アドレスに置かれた前記デバ
ッグ例外発生命令が実行されると、デバッグ例外が発生
してデバッグ例外ハンドラが実行され、前記デバッグ例
外発生命令に設定された割り込み番号を参照して前記仮
想割り込みの発生を判別し、前記仮想割り込みを発生さ
せる第6のステップと、前記第6のステップで発生した
前記仮想割り込みが許可されているか否かを判別する第
7のステップと、前記第7のステップで前記仮想割り込
みが許可されていると判別された場合には、各種レジス
タを更新設定し、前記第4及び第5のステップで指定さ
れた置き換え対象アドレスにおける命令の置き換え作業
を行う第8のステップと、前記割り込みハンドラを実行
し、前記割り込みハンドラの終了後に置き換えられた命
令を元に戻して前記仮想割り込みが発生したアドレスに
戻る第9のステップとをコンピュータに実行させるプロ
グラムを記録したことを特徴とする。
【0010】第6の手段は、仮想割り込みの割り込み番
号と、該割り込み番号の割り込みの発生/不発生を示す
判定ビットが書き込まれる仮想割り込みレジスタを備
え、割り込みを発生させるメインプログラムに対して、
仮想割り込みを発生させたい発生アドレスと前記仮想割
り込みの割り込み番号を指定する第1のステップと、前
記第1のステップで指定された前記仮想割り込みの割り
込み番号を前記仮想割り込みレジスタに設定する設定命
令を生成する第2のステップと、前記仮想割り込みを発
生させる前記メインプログラムのアドレスにそれまで置
かれていた命令を、前記第2のステップで生成された設
定命令に置き換える第3の第3のステップと、割り込み
ハンドラのハードウェアアクセスを伴う命令をnop命
令に置き換える際に、前記ハードウェアアクセスを伴う
命令が置かれた前記割り込みハンドラの置き換え対象ア
ドレスを指定する第4のステップと、前記割り込みハン
ドラに置かれた割り込み要因を判別するレジスタの読み
出し命令を、前記割り込み要因を判別するレジスタの値
を他のレジスタに書き込む処理を実行させるルーチンに
分岐する分岐命令に置き換える際に、前記読み出し命令
が置かれた前記割り込みハンドラの置き換え対象アドレ
スを指定する第5のステップと、前記メインプログラム
が実行されて、前記仮想割り込みを発生させたい発生ア
ドレスに置かれた前記設定命令が実行されると、前記仮
想割り込みレジスタに割り込み番号が書き込まれる第6
のステップと、前記第6のステップで前記仮想割り込み
レジスタに書き込まれた割り込み番号の割り込みが許可
されているか否かを判別する第7のステップと、割り込
みが許可されている場合には、前記仮想割り込みレジス
タの判定ビットを発生にセットし、仮想割り込みを発生
する第8のステップと、仮想割り込み用のハンドラが実
行され、前記仮想割り込みレジスタの判定ビットを参照
して前記仮想割り込みの発生を判別する第9のステップ
と、前記仮想割り込みが発生すると各種レジスタを更新
設定し、前記第4及び第5のステップで指定された置き
換え対象アドレスにおける命令の置き換え作業を行う第
10のステップと、前記割り込みハンドラを実行し、前
記割り込みハンドラの終了後に置き換えられた命令を元
に戻して前記仮想割り込みが発生したアドレスに戻る第
11のステップとをコンピュータに実行させるプログラ
ムを記録したことを特徴とする。
【0011】
【発明の実施の形態】以下、図面を用いてこの発明の実
施形態を説明する。
【0012】図1はこの発明の一実施形態に係るデバッ
グ方法を採用した割り込みエミュレーションシステムの
構成を示す図であり、図2は図1に示すシステムにおけ
る割り込みエミュレーション処理のフローチャートを示
す図である。
【0013】まず始めに、この実施形態においてエミュ
レートされる割り込み処理を、通常の動作時に実行する
プロセッサシステムについて、図3〜図7を参照して説
明する。図3は割り込み処理を実行するプロセッサシス
テムの構成を示す図であり、図4は図3に示すシステム
における割り込み発生時の動作を示すフローチャートで
ある。図3において、システムは、割り込み要求を受け
るプロセッサコア1と、割り込み要求を制御する割り込
みコントローラ(IRC)2を備え、プロセッサコア1
は、図5に示すようにプロセッサコア1の状態を示すS
tatus(ステータス)レジスタ11と、図6に示す
ように割り込みに関する情報を保持するCause(コ
ーズ)レジスタ12を備え、割り込みコントローラ2
は、割り込みレベルレジスタ21と割り込みマスクレジ
スタ22を備えて構成されている。
【0014】このような構成において、割り込み信号I
NT_NOが外部からシステムに入力されると、図4に
示すように割り込みコントローラ(IRC)2とSta
tusレジスタ11を調べて、発生した割り込み要求の
割り込み番号が許可されているか否かが判定される(ス
テップS41、S42、S43)。許可されていない場
合には、割り込みは発生せず通常の処理を続行する。一
方、許可されている場合には、プロセッサコア1に割り
込みを通知し、以下に示すように各種レジスタを更新設
定して(ステップS44)、割り込みハンドラを実行す
る。
【0015】Causeレジスタ:IP[3:0]に割
り込み要因番号INT_NOを設定。 PC :割り込みハンドラ開始アドレスを
設定。
【0016】EPC :割り込み発生アドレ
ス(図7のアドレス(1))を保存。 Statusレジスタ:動作モード切り替え。
【0017】Cacheレジスタ:動作モード切り替
え。
【0018】図7に割り込みハンドラの処理手順を示
す。図7において、割り込みハンドラでは、Cause
レジスタのIP[3:0]フィールドを読み出して割り
込み番号を判別し(ステップS71)、各種レジスタを
退避した後(ステップS72)、割り込み要因のネゲー
トなど各割り込みに応じた処理を行う(ステップS7
3)。割り込み処理が終了すると、退避したレジスタを
復帰させる(ステップS74)。割り込みハンドラの最
後のRFE命令は、StatusレジスタやCache
レジスタを割り込み発生前の状態に戻し、プログラムカ
ウンタ(PC)にEPCレジスタに保存した割り込み発
生アドレスを設定する。この命令の実行により、元のメ
インプログラムが再開される。
【0019】次に、図1、図2に戻って、この実施形態
の割り込みエミュレーションについて説明する。図1に
おいて、システム上で実行されるプログラムは、メイン
プログラム3に加えてデバッグ例外ハンドラ4と割り込
みハンドラ5であり、これらのプログラムの実行にあた
って操作者(ユーザ)からのコマンド入力に基づいてデ
バッガ6との間で通信が行われてメモリのアクセスが行
われる。この実施形態では、外部から与えられる信号に
基づいて割り込みを発生させるのではなく、割り込みを
仮想的に発生させるために、システムに予め備えられ
た、デバッグ例外を発生させる例えばSDBBP命令を
使用する。図8にSDBBP命令のフォーマットを示
す。システム上でSDBBP命令を実行するとデバッグ
例外を発生し、以下に示すように各種レジスタを更新す
る。
【0020】PC :デバッグ例外ハンド
ラ開始アドレスを設定。
【0021】DEPC :デバッグ例外発生ア
ドレスを保存。
【0022】Debug :デバッグ例外発生状
態を保存。DBDビットは、分岐遅延スロットでデバッ
グ例外が発生すると1にセットされる。
【0023】デバッグ例外ハンドラ4は、割り込みエミ
ュレーション処理と一般デバッグ例外処理から構成され
る。仮想割り込み発生用のSDBBP命令を実行した場
合には(ステップS1)、割り込みエミュレーション処
理が実行され(ステップS3)、それ以外は一般デバッ
グ例外処理が実行される(ステップS2)。一般デバッ
グ例外処理は、デバッガ6と通信してメモリの読み出し
や書き込み処理を行う。デバッグ例外ハンドラ4の最後
のDERET命令は、システムに既存の命令で、DEP
Cに保存したアドレスをプログラムカウンタ(PC)に
設定する。これにより、一般デバッグ例外処理では元の
メインプログラムが再開され、割り込みエミュレーショ
ン処理では割り込みハンドラ5が実行される。
【0024】次に、図2を参照して、割り込みエミュレ
ーションの各処理の詳細を説明する。
【0025】まず、デバッガ6のユーザインタフェース
にて下記コマンド入力を行い前処理を行う(ステップS
201)。前処理は、一般デバッグ例外が発生した状態
で行う。前処理の最初の処理(前処理1)として、仮想
割り込み発生ポイントの設定を行う。デバッガ6のユー
ザインタフェースにおいて仮想割り込み発生アドレスと
割り込み番号(INT_NO)を引数として、仮想割り
込み発生ポイントの設定コマンドを入力する。デバッガ
6はSDBBP命令のcodeフィールドに割り込み番
号INT_NOを設定した命令を生成する。一般デバッ
グ例外処理では、仮想割り込み発生アドレスとして指定
されたアドレスの命令をこの命令と書き換える。
【0026】次に、nop命令置き換えアドレスの指定
を行う(前処理2)。割り込みハンドラ5では、割り込
み要因のネゲート処理を行う(図7に示すステップS7
3の(2))。このような処理はハードウェアアクセス
を伴い、割り込みエミュレーション時には実行したくな
い。そこで、仮想割り込み発生後に実行される割り込み
エミュレーション処理では、このような命令をnop命
令に置きかえる。前処理2では置き換え対象アドレスを
デバッガ6に入力し、一般デバッグ例外処理はこのアド
レスを保存する。
【0027】次に、Cause_setルーチンへのジ
ャンプ命令置き換えアドレスの指定を行う(前処理
3)。割り込みが発生した場合には、割り込みハンドラ
5ではCauseレジスタ11を読み出して割り込み要
因を判別する(図7に示すステップS71の(3))。
しかし、Causeレジスタ12は割り込みコントロー
ラ2から入力される信号を保持しており、ソフトウェア
的には書き換え不可能である。そこで、仮想割り込みの
発生後の割り込みハンドラ5では、デスティネーション
レジスタにCauseレジスタ12の値を直接書き込む
ために、図9に示すCause_setルーチンの処理
を実行させる。このため、仮想割り込み発生後に実行さ
れる割り込みエミュレーション処理において、割り込み
ハンドラ5のCauseレジスタ読み出し命令をCau
se_setルーチンへのジャンプ命令に置き換える。
Cause_setルーチンへジャンプする命令自体は
デバッガ6が保有している。前処理3は置き換え対象ア
ドレスをデバッガ6に入力し、一般デバッグ例外処理は
このアドレスを保存する。
【0028】このようにして前処理が終了してプログラ
ムを実行し(ステップS202)、プログラムカウンタ
が仮想割り込み発生ポイントに到達するとデバッグ例外
が発生する(ステップS203)。デバッグ例外ハンド
ラ4では、DEPCに保存されたアドレスを参照してS
DBBPフィールドを読み出し、仮想割り込みの発生で
あるか、又はそれ以外の一般デバッグ例外であるかを判
別する(ステップS204)。仮想割り込みが発生して
いない場合には、デバッガ6との通信により一般デバッ
グ例外処理が行われ(ステップS205)、例外処理が
終了してDERET命令が実行されると(ステップS2
06)、仮想割り込み発生アドレスへジャンプし、元の
メインプログラムの実行が再開される。
【0029】一方、仮想割り込みが発生した場合には、
割り込みエミュレーション処理により割り込みコントロ
ーラ2の割り込みレベルレジスタ21と割り込みマスク
レジスタ22、Statusレジスタ11のIEcビッ
トとIP[3:0]ビットを読み出して、割り込み番号
INT_NOが許可されているか否かを判定する(ステ
ップS207)。許可されていない場合には、ステップ
S206に進む。一方、許可されている場合には、各種
レジスタの値を更新設定し(ステップS208)、また
前処理2、3で指定した割り込みハンドラ内命令の置き
換え作業を行う(ステップS208)。また、前処理1
で仮想割り込み発生ポイントに置いたSDBBP命令を
元の命令に書き戻す(ステップS210)。DERET
命令を実行すると(ステップS211)、プログラムカ
ウンタはDEPCに保存された割り込みハンドラ開始ア
ドレスに設定され、割り込みハンドラ5が実行される。
【0030】割り込みハンドラ5が実行されて(ステッ
プS212)、割り込みハンドラ5の最後でRFE命令
を実行すると(ステップS213)、EPCに保存した
Int_resetルーチンへジャンプする。Int_
resetルーチンでは前処理2で指定したアドレスの
命令を元に戻し(ステップS214)、仮想割り込み発
生アドレスへジャンプする(ステップS215)。これ
により、元のメインプログラムの実行が再開される。
【0031】このように、上記実施形態においては、仮
想割り込みの発生ポイントの設定機能により、割り込み
発生タイミングをプログラムの特定アドレス実行時と同
期させることが可能となり、任意アドレスでの割り込み
処理をエミュレーションすることができる。
【0032】また、割り込みエミュレーション処理のた
めにソフトウェア開発者がデバッガ6に入力する必要が
あるのは、前処理1の仮想割り込みの発生ポイントの設
定、前処理2のnop命令置き換えアドレスの指定、前
処理3のCause_setルーチンジャンプ命令の置
き換えアドレス指定の3つのコマンドのみである。した
がって、ユーザは割り込みハンドラ5を直接書き換える
必要がなく、簡単に割り込みエミュレーションが行え
る。
【0033】次に、この発明の他の実施形態を説明す
る。
【0034】この実施形態の特徴とするところは、上記
実施形態に比べて、デバッグ例外を発生させる命令を実
行させることに代えて、新たに図10に示す仮想割り込
み用(INTBreak)レジスタ7を設け、このIN
TBreakレジスタ7に割り込み番号INT_NOを
ソフトウェアで書き込むことにより仮想割り込みを発生
させるようにしたことにある。なお、エミュレーション
する割り込み処理は、先の実施形態の割り込み処理と同
じものとする。
【0035】図10において、INT_Breakレジ
スタ7のIP[3:0]には、エミュレーションする割
り込みの割り込み番号INT_NOをソフトウェアで書
き込むことができる。INTBreakレジスタ7にI
P[3:0]に値が書き込まれると、システムは先の実
施形態の図4に示すと同様に、割り込みコントローラ2
とStatusレジスタ11を調べて割り込み番号IN
T_NOが許可されているか否かをハードウェアにより
判定する。割り込みが許可されている場合は、仮想割り
込みを発生し、INTBreakレジスタ7のBrビッ
トを“1”にセットする。仮想割り込み発生時に更新さ
れるその他のレジスタは、先の実施形態で説明したP
C、DEPC、Debugの既存のデバッグ例外と同じ
とする。また、DERET命令は、従来のプログラムカ
ウンタにDEPCレジスタに保存した値を設定する機能
に追加して、INTBreakレジスタ7のBrビット
の0クリア機能を有する。
【0036】デバッガやデバッグ例外ハンドラの構成
は、先の実施形態の図1に示す構成とと同様であるが、
仮想割り込みの発生には、INTBreakレジスタ7
を使用する。デバッグ例外ハンドラ4は、先の実施形態
と同様に一般デバッグ例外処理(ステップS2)と割り
込みエミュレーション処理(ステップS3)とから構成
される。
【0037】次に、図11の割り込みエミュレーション
処理のフローチャートを参照して、INTBreakレ
ジスタ7を使用した割り込みエミュレーション処理につ
いて説明する。
【0038】まず、前処理2、3として、先の実施形態
の前処理2、3と同様に、割り込みハンドラ内のnop
命令に置きかえるアドレスとCause_setルーチ
ンへのジャンプ命令に置きかえるアドレスを指定する
(ステップS1101)。実際の置き換えは、仮想割り
込み発生後の割り込みの発生後の割り込みエミュレーシ
ョン処理で行う。また、前処理1として、デバッガ6に
仮想割り込みの発生アドレスと割り込み番号(INT_
NO)を引数として仮想割り込みの発生ポイントの設定
コマンドを入力する(ステップS1101)。デバッガ
6はINTBreakレジスタ7のIP[3:0]に割
り込み番号INT_NOを書きこむ命令(addiu$
INTBreak,$0,INT_NO)を作成する。
一般デバッグ例外処理はデバッガ6からのコマンドを受
けて、仮想割り込みの発生ポイントとして指定されたア
ドレスの命令をこのINTBreakレジスタ設定命令
に置きかえる。
【0039】このような前処理が終了して、メインプロ
グラムが実行されると(ステップS1102)、仮想割
り込みの発生ポイントでINTBreakレジスタ7の
IP[3:0]に割り込み番号INT_NOが書き込ま
れる(ステップS1103)。システムは割り込み番号
INT_NOが許可されているか否かを判定し(ステッ
プS1104)、許可されている場合には、INTBr
eakレジスタ7のBrビットを“1”にセットして
(ステップS1105)、仮想割り込みを発生する(ス
テップS1106)。デバッグ例外ハンドラ4では、I
NTBreakレジスタ7のBrビットをチェックし
て、仮想割り込みの発生か一般デバッグ例外かを判定す
る(ステップS1107)。仮想割り込みが発生してい
ない場合には、一般デバッグ例外処理が行われ(ステッ
プS1108)、処理の最後にDERET命令が実行さ
れ(ステップS1109)、元のメインプログラムの実
行に戻る(ステップS1102)。
【0040】一方、仮想割り込みが発生した場合には、
各種レジスタの更新を行う(ステップS1110)。そ
の後、前処理2、3で指定した割り込みハンドラ内の命
令をそれぞれnop命令やCause_setルーチン
へのジャンプ命令に置きかえる(ステップS111
1)。また、前処理1で設定した仮想割り込みの発生ポ
イントの命令を元の命令に書き戻し(ステップS111
2)、さらにINTBreakレジスタ7のIP[3:
0]フィールドをクリアする。続いて、DERET命令
が実行されて(ステップS1113)、プログラムカウ
ンタはDEPCに保存した割り込みハンドラ開始アドレ
スに設定され、割り込みハンドラ5が実行される(ステ
ップS1114)。割り込みハンドラ5の最後でRFE
命令を実行すると(ステップS1115)、EPCに保
存したInt_resetルーチンへジャンプする。I
nr_resetルーチンでは、前処理2で指定したア
ドレスの命令を元に戻し(ステップS1116)、仮想
割り込み発生アドレスへジャンプする。これにより、元
のメインプログラムの実行が再開される(ステップS1
102)。
【0041】このように、この実施形態にあっては、先
の実施形態のようにデバッグ例外を発生させる命令が備
えられていないシステムであっても、仮想割り込み専用
のレジスタを設けることにより、先の実施形態で得られ
る効果と同様の効果を得ることが可能となる。
【0042】なお、上述した任意アドレスで割り込み処
理をエミュレーションするデバッグ方法を実現するため
のプログラムは、記録媒体に保存することができる。こ
の記録媒体をコンピュータシステムによって読み込ま
せ、プログラムを実行してコンピュータを制御しながら
上述したデバッグ方法を実現することができる。ここ
で、記録媒体とは、メモリ装置、磁気ディスク装置、光
ディスク装置等、プログラムを記録してコンピュータが
読み取ることができる装置が含まれる。
【0043】
【発明の効果】以上説明したように、この発明によれ
ば、外部からハードウェア的な割り込み信号を入力する
ことなく、任意のアドレスで割り込みを発生させること
が可能となる。さらに、任意のアドレスで割り込みを発
生し、割り込みハンドラを直接書き換えることなく、容
易に割り込みエミュレーションを実行することが可能と
なり、割り込み処理を十分に検証することができる。
【図面の簡単な説明】
【図1】この発明の一実施形態に係るデバッグ方法を採
用した割り込みエミュレーションシステムの構成を示す
図である。
【図2】図1に示すシステムにおける割り込みエミュレ
ーション処理のフローチャートを示す図である。
【図3】割り込み処理を実行するプロセッサシステムの
構成を示す図である。
【図4】図3における割り込み処理のフローチャートを
示す図である。
【図5】Statusレジスタの構成を示す図である。
【図6】Causeレジスタの構成を示す図である。
【図7】割り込みハンドラの処理例を示す図である。
【図8】SDBBP命令の構成を示す図である。
【図9】Cause_setルーチンの処理を示す図で
ある。
【図10】この発明の他の実施形態に係るデバッグ方法
を採用した割り込みエミュレーションに使用されるレジ
スタの構成を示す図である。
【図11】図10に示すレジスタを使用した割り込みエ
ミュレーションのフローチャートを示す図である。
【符号の説明】
1 プロセッサコア 2 割り込みコントローラ 3 メインプログラム 4 デバッグ例外ハンドラ 5 割り込みハンドラ 6 デバッガ 7 INTBreakレジスタ 11 Statusレジスタ 12 Causeレジスタ 21 割り込みレベルレジスタ 22 割り込みマスクレジスタ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 割り込みを発生させるメインプログラム
    に対して、仮想割り込みを発生させたい発生アドレスと
    前記仮想割り込みの割り込み番号を指定する第1のステ
    ップと、 前記第1のステップで指定された割り込み番号が設定さ
    れてデバッグ例外を発生させるデバッグ例外発生命令を
    生成する第2のステップと、 前記仮想割り込みを発生させる前記メインプログラムの
    アドレスにそれまで置かれていた命令を、前記第2のス
    テップで生成された前記デバッグ例外発生命令に置き換
    える第3のステップと、 前記メインプログラムが実行されて、前記仮想割り込み
    を発生させたい発生アドレスに置かれた前記デバッグ例
    外発生命令が実行されると、デバッグ例外が発生してデ
    バッグ例外ハンドラが実行され、前記デバッグ例外発生
    命令に設定された割り込み番号を参照して前記仮想割り
    込みの発生を判別し、前記仮想割り込みを発生させる第
    4のステップとを有することを特徴とするデバッグ方
    法。
  2. 【請求項2】 割り込みを発生させるメインプログラム
    に対して、仮想割り込みを発生させたい発生アドレスと
    前記仮想割り込みの割り込み番号を指定する第1のステ
    ップと、 前記第1のステップで指定された割り込み番号が設定さ
    れてデバッグ例外を発生させるデバッグ例外発生命令を
    生成する第2のステップと、 前記仮想割り込みを発生させる前記メインプログラムの
    アドレスにそれまで置かれていた命令を、前記第2のス
    テップで生成された前記デバッグ例外発生命令に置き換
    える第3のステップと、 割り込みハンドラのハードウェアアクセスを伴う命令を
    nop命令に置き換える際に、前記ハードウェアアクセ
    スを伴う命令が置かれた前記割り込みハンドラの置き換
    え対象アドレスを指定する第4のステップと、 前記割り込みハンドラに置かれた割り込み要因を判別す
    るレジスタの読み出し命令を、前記割り込み要因を判別
    するレジスタの値を他のレジスタに書き込む処理を実行
    させるルーチンに分岐する分岐命令に置き換える際に、
    前記読み出し命令が置かれた前記割り込みハンドラの置
    き換え対象アドレスを指定する第5のステップと、 前記メインプログラムが実行されて、前記仮想割り込み
    を発生させたい発生アドレスに置かれた前記デバッグ例
    外発生命令が実行されると、デバッグ例外が発生してデ
    バッグ例外ハンドラが実行され、前記デバッグ例外発生
    命令に設定された割り込み番号を参照して前記仮想割り
    込みの発生を判別し、前記仮想割り込みを発生させる第
    6のステップと、 前記第6のステップで発生した前記仮想割り込みが許可
    されているか否かを判別する第7のステップと、 前記第7のステップで前記仮想割り込みが許可されてい
    ると判別された場合には、各種レジスタを更新設定し、
    前記第4及び第5のステップで指定された置き換え対象
    アドレスにおける命令の置き換え作業を行う第8のステ
    ップと、 前記割り込みハンドラを実行し、前記割り込みハンドラ
    の終了後に置き換えられた命令を元に戻して前記仮想割
    り込みが発生したアドレスに戻る第9のステップとを有
    することを特徴とするデバッグ方法。
  3. 【請求項3】 仮想割り込みの割り込み番号と、該割り
    込み番号の割り込みの発生/不発生を示す判定ビットが
    書き込まれる仮想割り込みレジスタを備え、 割り込みを発生させるメインプログラムに対して、仮想
    割り込みを発生させたい発生アドレスと前記仮想割り込
    みの割り込み番号を指定する第1のステップと、 前記第1のステップで指定された前記仮想割り込みの割
    り込み番号を前記仮想割り込みレジスタに設定する設定
    命令を生成する第2のステップと、 前記仮想割り込みを発生させる前記メインプログラムの
    アドレスにそれまで置かれていた命令を、前記第2のス
    テップで生成された設定命令に置き換える第3の第3の
    ステップと、 割り込みハンドラのハードウェアアクセスを伴う命令を
    nop命令に置き換える際に、前記ハードウェアアクセ
    スを伴う命令が置かれた前記割り込みハンドラの置き換
    え対象アドレスを指定する第4のステップと、 前記割り込みハンドラに置かれた割り込み要因を判別す
    るレジスタの読み出し命令を、前記割り込み要因を判別
    するレジスタの値を他のレジスタに書き込む処理を実行
    させるルーチンに分岐する分岐命令に置き換える際に、
    前記読み出し命令が置かれた前記割り込みハンドラの置
    き換え対象アドレスを指定する第5のステップと、 前記メインプログラムが実行されて、前記仮想割り込み
    を発生させたい発生アドレスに置かれた前記設定命令が
    実行されると、前記仮想割り込みレジスタに割り込み番
    号が書き込まれる第6のステップと、 前記第6のステップで前記仮想割り込みレジスタに書き
    込まれた割り込み番号の割り込みが許可されているか否
    かを判別する第7のステップと、 割り込みが許可されている場合には、前記仮想割り込み
    レジスタの判定ビットを発生にセットし、仮想割り込み
    を発生する第8のステップと、 仮想割り込み用のハンドラが実行され、前記仮想割り込
    みレジスタの判定ビットを参照して前記仮想割り込みの
    発生を判別する第9のステップと、 前記仮想割り込みが発生すると各種レジスタを更新設定
    し、前記第4及び第5のステップで指定された置き換え
    対象アドレスにおける命令の置き換え作業を行う第10
    のステップと、 前記割り込みハンドラを実行し、前記割り込みハンドラ
    の終了後に置き換えられた命令を元に戻して前記仮想割
    り込みが発生したアドレスに戻る第11のステップとを
    有することを特徴とするデバッグ方法。
  4. 【請求項4】 割り込みを発生させるメインプログラム
    に対して、仮想割り込みを発生させたい発生アドレスと
    前記仮想割り込みの割り込み番号を指定する第1のステ
    ップと、 前記第1のステップで指定された割り込み番号が設定さ
    れてデバッグ例外を発生させるデバッグ例外発生命令を
    生成する第2のステップと、 前記仮想割り込みを発生させる前記メインプログラムの
    アドレスにそれまで置かれていた命令を、前記第2のス
    テップで生成された前記デバッグ例外発生命令に置き換
    える第3のステップと、 前記メインプログラムが実行されて、前記仮想割り込み
    を発生させたい発生アドレスに置かれた前記デバッグ例
    外発生命令が実行されると、デバッグ例外が発生してデ
    バッグ例外ハンドラが実行され、前記デバッグ例外発生
    命令に設定された割り込み番号を参照して前記仮想割り
    込みの発生を判別し、前記仮想割り込みを発生させる第
    4のステップとをコンピュータに実行させるプログラム
    を記録したコンピュータ読み取り可能な記録媒体。
  5. 【請求項5】 割り込みを発生させるメインプログラム
    に対して、仮想割り込みを発生させたい発生アドレスと
    前記仮想割り込みの割り込み番号を指定する第1のステ
    ップと、 前記第1のステップで指定された割り込み番号が設定さ
    れてデバッグ例外を発生させるデバッグ例外発生命令を
    生成する第2のステップと、 前記仮想割り込みを発生させる前記メインプログラムの
    アドレスにそれまで置かれていた命令を、前記第2のス
    テップで生成された前記デバッグ例外発生命令に置き換
    える第3のステップと、 割り込みハンドラのハードウェアアクセスを伴う命令を
    nop命令に置き換える際に、前記ハードウェアアクセ
    スを伴う命令が置かれた前記割り込みハンドラの置き換
    え対象アドレスを指定する第4のステップと、 前記割り込みハンドラに置かれた割り込み要因を判別す
    るレジスタの読み出し命令を、前記割り込み要因を判別
    するレジスタの値を他のレジスタに書き込む処理を実行
    させるルーチンに分岐する分岐命令に置き換える際に、
    前記読み出し命令が置かれた前記割り込みハンドラの置
    き換え対象アドレスを指定する第5のステップと、 前記メインプログラムが実行されて、前記仮想割り込み
    を発生させたい発生アドレスに置かれた前記デバッグ例
    外発生命令が実行されると、デバッグ例外が発生してデ
    バッグ例外ハンドラが実行され、前記デバッグ例外発生
    命令に設定された割り込み番号を参照して前記仮想割り
    込みの発生を判別し、前記仮想割り込みを発生させる第
    6のステップと、 前記第6のステップで発生した前記仮想割り込みが許可
    されているか否かを判別する第7のステップと、 前記第7のステップで前記仮想割り込みが許可されてい
    ると判別された場合には、各種レジスタを更新設定し、
    前記第4及び第5のステップで指定された置き換え対象
    アドレスにおける命令の置き換え作業を行う第8のステ
    ップと、前記割り込みハンドラを実行し、前記割り込み
    ハンドラの終了後に置き換えられた命令を元に戻して前
    記仮想割り込みが発生したアドレスに戻る第9のステッ
    プとをコンピュータに実行させるプログラムを記録した
    コンピュータ読み取り可能な記録媒体。
  6. 【請求項6】 仮想割り込みの割り込み番号と、該割り
    込み番号の割り込みの発生/不発生を示す判定ビットが
    書き込まれる仮想割り込みレジスタを備え、 割り込みを発生させるメインプログラムに対して、仮想
    割り込みを発生させたい発生アドレスと前記仮想割り込
    みの割り込み番号を指定する第1のステップと、 前記第1のステップで指定された前記仮想割り込みの割
    り込み番号を前記仮想割り込みレジスタに設定する設定
    命令を生成する第2のステップと、前記仮想割り込みを
    発生させる前記メインプログラムのアドレスにそれまで
    置かれていた命令を、前記第2のステップで生成された
    設定命令に置き換える第3の第3のステップと、 割り込みハンドラのハードウェアアクセスを伴う命令を
    nop命令に置き換える際に、前記ハードウェアアクセ
    スを伴う命令が置かれた前記割り込みハンドラの置き換
    え対象アドレスを指定する第4のステップと、 前記割り込みハンドラに置かれた割り込み要因を判別す
    るレジスタの読み出し命令を、前記割り込み要因を判別
    するレジスタの値を他のレジスタに書き込む処理を実行
    させるルーチンに分岐する分岐命令に置き換える際に、
    前記読み出し命令が置かれた前記割り込みハンドラの置
    き換え対象アドレスを指定する第5のステップと、 前記メインプログラムが実行されて、前記仮想割り込み
    を発生させたい発生アドレスに置かれた前記設定命令が
    実行されると、前記仮想割り込みレジスタに割り込み番
    号が書き込まれる第6のステップと、 前記第6のステップで前記仮想割り込みレジスタに書き
    込まれた割り込み番号の割り込みが許可されているか否
    かを判別する第7のステップと、 割り込みが許可されている場合には、前記仮想割り込み
    レジスタの判定ビットを発生にセットし、仮想割り込み
    を発生する第8のステップと、 仮想割り込み用のハンドラが実行され、前記仮想割り込
    みレジスタの判定ビットを参照して前記仮想割り込みの
    発生を判別する第9のステップと、 前記仮想割り込みが発生すると各種レジスタを更新設定
    し、前記第4及び第5のステップで指定された置き換え
    対象アドレスにおける命令の置き換え作業を行う第10
    のステップと、 前記割り込みハンドラを実行し、前記割り込みハンドラ
    の終了後に置き換えられた命令を元に戻して前記仮想割
    り込みが発生したアドレスに戻る第11のステップとを
    コンピュータに実行させるプログラムを記録したコンピ
    ュータ読み取り可能な記録媒体。
JP2000198991A 2000-06-30 2000-06-30 デバッグ方法及び記録媒体 Pending JP2002014844A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000198991A JP2002014844A (ja) 2000-06-30 2000-06-30 デバッグ方法及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000198991A JP2002014844A (ja) 2000-06-30 2000-06-30 デバッグ方法及び記録媒体

Publications (1)

Publication Number Publication Date
JP2002014844A true JP2002014844A (ja) 2002-01-18

Family

ID=18697076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000198991A Pending JP2002014844A (ja) 2000-06-30 2000-06-30 デバッグ方法及び記録媒体

Country Status (1)

Country Link
JP (1) JP2002014844A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268298A (ja) * 2005-03-23 2006-10-05 Nec Corp デバッグ方法及びデバッグ装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268298A (ja) * 2005-03-23 2006-10-05 Nec Corp デバッグ方法及びデバッグ装置

Similar Documents

Publication Publication Date Title
US4879646A (en) Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging
JP2749528B2 (ja) エラー解析用のトレーサシステム
EP3785124B1 (en) Memory validity states in time-travel debugging
JP2753500B2 (ja) 多重アーキテクチャ環境内で特にコードのデバッグを行う改良したソフトウェア・デバッグ・システムと方法
KR20140013005A (ko) 단일 스텝 실행을 이용한 코드 진단
JP2000020349A (ja) プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体
JPH0728670A (ja) 情報処理装置
US5963741A (en) Information processor which rewrites instructions in program to dynamically change program structure and method therefor
JPH0810437B2 (ja) 仮想計算機システムのゲスト実行制御方式
JP2817786B2 (ja) シミュレーション装置及びシミュレーション方法
CN111324948A (zh) 模拟方法及模拟系统
JP2002014844A (ja) デバッグ方法及び記録媒体
JP2003114809A (ja) シミュレーション装置及びシミュレーション方法
JPH1196006A (ja) 情報処理装置
JPH096647A (ja) 逆実行デバッグシステム
JP2552738B2 (ja) データ処理装置
WO2024069730A1 (ja) デバッグ装置及びデバッグ方法
JPH0561717A (ja) プログラムデバツグ装置
JP2697230B2 (ja) デバッグ支援装置
JP3381253B2 (ja) シミュレーション装置
JPH08320813A (ja) プログラムシミュレータ装置及びプログラムデバッグ方法
JPS59103158A (ja) デイジタル信号処理プログラムデバツグ方式
JP2020525957A (ja) コンテキスト・データ管理
JPH1040131A (ja) プログラムデバッグ方法
JPH02181236A (ja) デバッグ装置