JP2002366378A - プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体 - Google Patents

プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体

Info

Publication number
JP2002366378A
JP2002366378A JP2001169972A JP2001169972A JP2002366378A JP 2002366378 A JP2002366378 A JP 2002366378A JP 2001169972 A JP2001169972 A JP 2001169972A JP 2001169972 A JP2001169972 A JP 2001169972A JP 2002366378 A JP2002366378 A JP 2002366378A
Authority
JP
Japan
Prior art keywords
instruction
program
target device
address
debugging
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
JP2001169972A
Other languages
English (en)
Inventor
Shinichiro Mikami
慎一郎 三上
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2001169972A priority Critical patent/JP2002366378A/ja
Publication of JP2002366378A publication Critical patent/JP2002366378A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 JTAGなどのデバッグ機能を備えたCPU
を搭載する組み込みシステムに対してリモート・デバッ
グを行う。 【解決手段】 デバッグ装置は、ターゲット・ボードと
接続するJTAGインターフェース回路と、ユーザが新
しい命令の挿入を指示するGUI制御部と、挿入先のア
ドレスと、元の命令と、挿入命令とを保管する挿入命令
管理テーブルと、ターゲット・ボード上でプログラムが
逐次実行されて該当アドレスに到達したことに応答し
て、対応する挿入命令を挿入命令管理テーブルから読み
出して、ターゲット装置にロードするJTAGインター
フェース制御部とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサ上で実
行されるソフトウェア・プログラムをデバッグするため
のデバッグ装置及びデバッグ方法、並びに記憶媒体に係
り、特に、組み込みシステムにおいてリモート・デバッ
グを行うプログラムのデバッグ装置及びデバッグ方法、
並びに記憶媒体に関する。
【0002】更に詳しくは、本発明は、JTAGなどの
デバッグ機能を備えたCPUを搭載した組み込みシステ
ムのためのプログラムをデバッグするデバッグ装置及び
デバッグ方法、並びに記憶媒体に係り、JTAGなどの
デバッグ機能を備えたCPUを搭載した組み込みシステ
ム上で既に稼働中のプログラムに対して一時的にコード
を追加するプログラムのデバッグ装置及びデバッグ方
法、並びに記憶媒体に関する。
【0003】
【従来の技術】いわゆるコンピュータ処理は、プロセッ
サ上で所定のソフトウェア・プログラムを実行するとい
う形式で実現される。
【0004】ソフトウェア・プログラムは、一般に、人
間が読んで理解できる高級言語を用いてプログラム開発
され、その成果物としてのソース・コードをコンピュー
タ上で実行可能な形式に変換すなわちコンパイル処理さ
れたものが、所定のメモリ・エリア上にロードされ、プ
ロセッサにより実行される。
【0005】また、プログラム開発の過程では、一般
に、プログラム・コード中の誤りを修正したり、バージ
ョン変更を行うためのデバッグ作業が行われる。最近で
は、機器に組み込まれる形式で使用されるソフトウェア
・プログラムのために、機器とはネットワーク接続され
た他の端末上でデバッグ作業を行うという「リモート・
デバッグ」なる手法が採用されている。
【0006】リモート・デバッグとは2台のマシンを使
い、片方でプログラムを実行し、もう片方でそれを監視
する形式でデバッグを行う。リモート・デバッグを行う
ためには、デバッグ対象となるプログラムが組み込まれ
た実装機(ターゲット)と同じプラットフォームをデバ
ッグ作業を行う開発機(ホスト)が備えている必要があ
る。
【0007】組み込みソフトウェアをソース・コードが
見得る状態でデバッグすることができるソース・レベル
・デバッガが当業界では既に知られている。例えば、デ
バッガに表示されたソース・コードの途中にユーザがコ
ードを追加しておくことで、既にターゲット上で動作し
ているプログラムの動作を一時的に追加することができ
る。
【0008】図8には、JTAGと呼ばれるデバッグ機
能を備えたCPU(Central Processing Unit)を搭載
した組み込みシステムにおけるリモート・デバッグの機
能を模式的に図解している。
【0009】JTAGデバッグ機能は、プログラム・カ
ウンタが所定のタグに到達したことをホストに通知する
仕組みを提供する。同図に示す組み込みシステムでは、
まず、追加されたソース・コードをコンパイルした後、
ターゲット上の空きメモリにこのコードを配置してお
く。また、コード追加個所にタグを挿入しておく。そし
て、ターゲットはプログラム実行が進展して、プログラ
ム・カウンタがこのタグに到達すると、その旨をホスト
に通知することができる。一方のホストは、この通知に
応答して、ターゲット側でのプログラム実行に割り込み
をかけて、空きメモリに配置しておいたコードへジャン
プさせる。そして、そのコードを実行後、元のアドレス
へプログラムの実行を復帰させる。
【0010】しかしながら、上述したようなデバッグ手
法では、以下に示す問題点がある。すなわち、
【0011】(1)コードを追加する度にターゲット上
のメモリを消費し、本来(すなわち最終的な製品上で
は)必要のないメモリ・エリアがプログラム開発時にの
み必要となる。 (2)追加されたコード個所の実行が、関数コールのよ
うな形態であるため、キャッシュを使用している場合
は、その命令(JMP命令)やデータがキャッシュに残
ってしまう。
【0012】
【発明が解決しようとする課題】本発明の目的は、組み
込みシステムにおいてリモート・デバッグを行うことが
できる、優れたデバッグ装置及びデバッグ方法、並びに
記憶媒体を提供することにある。
【0013】本発明の更なる目的は、JTAGなどのデ
バッグ機能を備えたCPUを搭載した組み込みシステム
においてリモート・デバッグを行うことができる、優れ
たデバッグ装置及びデバッグ方法、並びに記憶媒体を提
供することにある。
【0014】本発明の更なる目的は、JTAGなどのデ
バッグ機能を備えたCPUを搭載した組み込みシステム
上で既に稼働中のプログラムに一時的にコードを追加す
ることができる、優れたデバッグ装置及びデバッグ方
法、並びに記憶媒体を提供することにある。
【0015】
【課題を解決するための手段及び作用】本発明は、上記
課題を参酌してなされたものであり、その第1の側面
は、ターゲット装置上に組み込まれたプログラムをリモ
ートでデバッグを行うデバッグ装置であって、前記ター
ゲット装置とのデータ通信を行うインターフェース手段
と、元のプログラム・コードに新しい命令の挿入を指示
する手段と、新しい命令を挿入するアドレスと、該アド
レスにおける元の命令と、挿入する命令とを保管する挿
入命令管理テーブルと、前記ターゲット装置上でプログ
ラムが逐次実行されて該当アドレスに到達したことに応
答して、対応する挿入命令を前記挿入命令管理テーブル
から読み出して、前記ターゲット装置にロードする制御
手段と、を具備することを特徴とするプログラムのデバ
ッグ装置である。
【0016】本発明の第1の側面に係るプログラムのデ
バッグ装置によれば、例えばJTAGのようなデバッグ
機能を備えたCPUを搭載したソフトウェア組み込み型
のターゲット装置に対して、好適にリモート・デバッグ
を行うことができる。
【0017】すなわち、デバッグ機能を備えるCPU命
令実行機構に対して、デバッグ装置からターゲット装置
に命令をロードして、実行させることにより、ターゲッ
ト装置上のメモリを追加消費することなく、既にターゲ
ット装置上で稼動中のプログラムに一時的にコードを追
加することができる。
【0018】また、挿入されるコードは、CPUのデバ
ッグ・モジュール内の命令実行機構を用いて実行される
ので、キャッシュに影響を与えずに挿入コードを実行す
ることができ、デバッグから復帰時にデータがキャッシ
ュに残ってしまうという不都合が回避される。
【0019】ターゲット装置における命令実行機構であ
るCPUは、例えば、JTAGのようなデバッグ・モジ
ュールを装備しており、DBREAK命令によりプログ
ラムの実行を停止してデバッグ・モードに遷移するとと
もに、DRET命令によりデバッグ・モードから復帰し
てプログラムの実行を再開するようになっている。
【0020】したがって、デバッグ装置側の前記制御手
段は、ターゲット装置の新しい命令を挿入するアドレス
にDBREAK命令を書き込むことによって、ターゲッ
ト装置が逐次プログラムを実行して新たに命令を挿入す
るアドレスに到達した時点で、プログラム実行を停止し
て、デバッグ・モードに遷移させることができる。ま
た、ターゲット装置上で挿入命令をすべて実行した後
に、DRET命令をターゲット装置にロードすること
で、デバッグ・モードから復帰してプログラム実行を再
開させることができる。
【0021】また、ターゲット装置は、JTAGに従っ
たデバッグ・モジュールを装備していてもよい。このタ
イプのデバッグ・モジュールは、デバッグ・モードか否
かを示す状態レジスタと、デバッグ・モード時における
停止したアドレスを示すアドレス・レジスタと、デバッ
グ・モードから復帰時に実行する命令を示す命令レジス
タを含み、デバッグ・モード下でプログラムを実行する
ことができる。
【0022】このような場合、デバッグ装置側の制御手
段は、前記デバッグ・モジュールの状態をチェックする
ことでターゲット装置のデバッグ・モードを検知するこ
とができる。
【0023】また、デバッグ装置側の制御手段は、ター
ゲット装置がデバッグ・モードに遷移したことを検知す
ると、前記デバッグ・モジュールより停止したアドレス
を取得するとともに、前記挿入命令管理テーブルから当
該アドレスについての挿入命令を読み出して、前記デバ
ッグ・モジュールにロードしてターゲット装置上で実行
せしめることができる。
【0024】また、本発明の第2の側面は、ターゲット
装置上に組み込まれたプログラムをリモートでデバッグ
を行うデバッグ方法であって、元のプログラム・コード
への新しい命令の挿入に指示に従って、新しい命令を挿
入するアドレスと、該アドレスにおける元の命令と、挿
入する命令とを関連付けて保管するステップと、前記タ
ーゲット装置の新しい命令を挿入するアドレスに、プロ
グラム実行を停止させるためのDBREAK命令を書き
込むステップと、を具備することを特徴とするプログラ
ムのデバッグ方法である。
【0025】本発明の第2の側面に係るデバッグ方法に
よれば、ターゲット装置がプログラムを逐次実行して、
新しい命令を挿入するアドレスに到達した時点で、DB
REAK命令によって、プログラム実行を停止させ、タ
ーゲット装置をデバッグ・モードに遷移させることがで
きる。また、デバッグ・モード下で、当該アドレスに対
応する挿入命令を読み出して、ターゲット装置にロード
し、実行させることができる。
【0026】また、本発明の第3の側面は、ターゲット
装置上に組み込まれたプログラムをリモートでデバッグ
を行うデバッグ方法であって、前記ターゲット装置上で
プログラムが逐次実行されて、新しい命令を挿入するア
ドレスに到達したことに応答して、前記ターゲット装置
上でのプログラム実行を停止するステップと、該当アド
レスにおける挿入命令を所定の保管場所から読み出し
て、前記ターゲット装置上にロードし実行させるステッ
プと、該当アドレスにおけるすべての挿入命令の実行を
終了した後、前記ターゲット装置でのプログラム実行を
再開させるステップと、を具備することを特徴とするプ
ログラムのデバッグ方法である。
【0027】本発明の第3の側面に係るプログラムのデ
バッグ方法によれば、例えばJTAGのようなデバッグ
機能を備えたCPUを搭載したソフトウェア組み込み型
のターゲット装置に対して、好適にリモート・デバッグ
を行うことができる。
【0028】すなわち、デバッグ機能を備えるCPU命
令実行機構に対して、デバッグ装置より命令をロードし
て、実行させることにより、ターゲット装置上のメモリ
を追加消費することなく、既にターゲット装置上で稼動
中のプログラムに一時的にコードを追加することができ
る。
【0029】また、挿入されるコードは、CPUのデバ
ッグ・モジュール内の命令実行機構を用いて実行される
ので、キャッシュに影響を与えずに挿入コードを実行す
ることができ、デバッグから復帰時にデータがキャッシ
ュに残ってしまうという不都合が回避される。
【0030】また、本発明の第4の側面は、ターゲット
装置上に組み込まれたプログラムをリモートでデバッグ
を行う処理をコンピュータ・システム上で実行するよう
に記述されたコンピュータ・ソフトウェアをコンピュー
タ可読形式で物理的に格納した記憶媒体であって、前記
コンピュータ・ソフトウェアは、元のプログラム・コー
ドへの新しい命令の挿入に指示に従って、新しい命令を
挿入するアドレスと、該アドレスにおける元の命令と、
挿入する命令とを関連付けて保管するステップと、前記
ターゲット装置の新しい命令を挿入するアドレスに、プ
ログラム実行を停止させるためのDBREAK命令を書
き込むステップと、を具備することを特徴とする記憶媒
体である。
【0031】また、本発明の第5の側面は、ターゲット
装置上に組み込まれたプログラムをリモートでデバッグ
を行う処理をコンピュータ・システム上で実行するよう
に記述されたコンピュータ・ソフトウェアをコンピュー
タ可読形式で物理的に格納した記憶媒体であって、前記
コンピュータ・ソフトウェアは、前記ターゲット装置上
でプログラムが逐次実行されて、新しい命令を挿入する
アドレスに到達したことに応答して、前記ターゲット装
置上でのプログラム実行を停止するステップと、該当ア
ドレスにおける挿入命令を所定の保管場所から読み出し
て、前記ターゲット装置上にロードし実行させるステッ
プと、該当アドレスにおけるすべての挿入命令の実行を
終了した後、前記ターゲット装置でのプログラム実行を
再開させるステップと、を具備することを特徴とする記
憶媒体である。
【0032】本発明の第4及び第5の各側面に係る記憶
媒体は、例えば、様々なプログラム・コードを実行可能
な汎用コンピュータ・システムに対して、コンピュータ
・ソフトウェアをコンピュータ可読な形式で提供する媒
体である。このような媒体は、例えば、CD(Compact
Disc)やFD(Floppy Disk)、MO(Magneto-Optical
disc)などの着脱自在で可搬性の記憶媒体である。ある
いは、ネットワーク(ネットワークは無線、有線の区別
を問わない)などの伝送媒体などを経由してコンピュー
タ・ソフトウェアを特定のコンピュータ・システムに提
供することも技術的に可能である。
【0033】このような記憶媒体は、コンピュータ・シ
ステム上で所定のコンピュータ・ソフトウェアの機能を
実現するための、コンピュータ・ソフトウェアと記憶媒
体との構造上又は機能上の協働的関係を定義したもので
ある。換言すれば、本発明の第4及び第5の各側面に係
る記憶媒体を介して所定のコンピュータ・ソフトウェア
をコンピュータ・システムにインストールすることによ
って、コンピュータ・システム上では協働的作用が発揮
され、本発明の第2及び第3の各側面に係るプログラム
のデバッグ方法と同様の作用効果を得ることができる。
【0034】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0035】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施例を詳解する。
【0036】図1には、本発明の1つの実施形態に係る
デバッグ・システムの構成を概略的に示している。同図
に示すように、このデバッグ・システムは、デバッグ処
理を行うホスト・コンピュータ1と、JTAGインター
フェース回路2と、デバッグ対象となるターゲット・ボ
ード3とで構成される。
【0037】ホスト・コンピュータ1とJTAGインタ
ーフェース回路2は、例えば、パラレル・ケーブル6に
て接続されている。また、JTAGインターフェース回
路2とターゲット・ボード3は、JTAG専用ケーブル
7で接続されている。
【0038】ホスト・コンピュータ1上では、デバッガ
4が動作している。本実施形態では、デバッガ4は、J
TAGインターフェース回路2を介して、ターゲット・
ボード3上のJTAGデバッグ・モジュール5と通信を
行うことができる。
【0039】JTAGインターフェース回路2は、ホス
ト・コンピュータ1との通信方式を、JTAGインター
フェースによる通信方式に変換することができる。
【0040】ターゲット・ボード3上には、JTAGデ
バッグ・モジュール5を備えたCPU(Central Proces
sing Unit)8と、メモリ19が搭載されている。CP
U8は、実行プログラム・コードをロードしたり、作業
データを一時記憶するために、メモリ19を使用するこ
とができる。
【0041】JTAGインターフェース回路2と接続さ
れているJTAG専用ケーブル7は、ターゲット・ボー
ド3上の配線9を介してCPU8のJTAGデバッグ・
モジュール5に接続されている。
【0042】図1に示すような構成により、ユーザは、
ホスト・コンピュータ1上で動作するデバッガ4より、
JTAGインターフェース回路2を介して、ターゲット
・ボード3上のメモリ19にプログラム・コードをロー
ドして、さらにプログラム実行、デバッグなどの基本的
な操作を行うことができる。
【0043】図2には、デバッガ4及びJTAGデバッ
グ・モジュール5の詳細な構成、並びに両者の関係を図
解している。
【0044】図示の通り、デバッガ4は、GUI(Grap
hical User Interface)制御部10と、挿入命令管理テ
ーブル11と、JTAGインターフェース制御部12と
を備えている。
【0045】GUI制御部10は、コンピュータ・シス
テムがシミュレートされたデスクトップと無数のアイコ
ンをホスト・コンピュータ1のディスプレイ画面上に用
意して、マウス(図示しない)などを利用したグラフィ
ック・ベースでのユーザ入力環境を提供する。本実施形
態では、GUI制御部10は、ユーザがデバッグしたい
命令をディスプレイ画面上に表示することができ、ま
た、ユーザからの入力を受容して、元のプログラム・コ
ードの行間に新たに一時的に実行したい命令が挿入され
た様子を画面表示することができる。
【0046】図3には、新たなコードが挿入される前の
元のプログラム・コードを表示したデバッグ・ウィンド
ウ画面の様子を示している。また、図4には、プログラ
ム・コードの行間に実行したい命令が新たに一時的に挿
入されたデバッグ・ウィンドウ画面の様子を示してい
る。GUI制御部10によれば、ユーザは、図3に示す
ようなウィンドウ17を利用して、新たにコードを追加
したい個所をマウスで直接指示して、挿入命令を入力す
ることができる。
【0047】CPU8は、コア部13と、JTAGデバ
ッグ・モジュール部5とを備えている。
【0048】コア部13は、CPU8の一般的な演算処
理機能を実装したモジュールである。本実施形態では、
コア部13は、デバッグ・モードに入るためのDBRE
AK命令、及び、デバッグ・モードから復帰するDRE
T命令を実行することができる。
【0049】また、JTAGデバッグ・モジュール5
は、DBREAK発生アドレス保持レジスタ(DEP
C)15、CPU命令保持レジスタ(MON_INS
T)14、制御レジスタ(DRCNTL)16を持ち、
DRCNTLレジスタ16を操作することにより、MO
N_INSTレジスタ14に書き込まれている命令の実
行を行う、といった一般的な機能を備えている。
【0050】MON_INSTレジスタ14には、デバ
ッグ・モードに遷移したときの命令が書き込まれる。ま
た、DEPCレジスタ15には、デバッグ・モードから
抜ける命令がおかれたときに再開される場所(アドレ
ス)が書き込まれる。また、DRCNTLレジスタ16
は、MON_INSTレジスタ14に書き込まれた命令
の実行タイミングを制御するためのフラグである。
【0051】次いで、デバッガ4上で、GUI制御部1
0により挿入された命令を実行するための処理手順につ
いて説明する。
【0052】ユーザが命令を挿入すると、デバッガ4
は、挿入したアドレスを調べて、ターゲット・ボード3
上の該当するアドレスにある命令を読み出して、デバッ
ガ4内の記憶領域にある挿入命令管理テーブル11に保
存する。図4に示す例では、アドレスは0x110、命
令は命令Eである。
【0053】このとき、挿入命令管理テーブル11に
は、その命令があったアドレス、及び、ユーザが入力し
た挿入命令18も保存される。
【0054】図5には、挿入命令管理テーブル11の構
成を模式的に示している。同図に示すように、挿入命令
管理テーブル11は、ユーザが命令の挿入を指示したア
ドレス毎にエントリが設けられる。各エントリは、挿入
場所のアドレスと、該当するアドレスにあった元の命令
と、挿入された命令を書き込むためのそれぞれのフィー
ルドが用意されている。
【0055】次に、ユーザが命令の挿入を指示した当該
アドレスに、DBREAK命令を書き込む。
【0056】ターゲット・ボード3上で、ターゲット・
プログラムが逐次実行されて、当該アドレスに到達して
DBREAK命令を実行すると、CPU8は停止して、
デバッグ・モードに遷移する。
【0057】デバッガ4側では、定期的にJTAGデバ
ッグ・モジュール5の状態をチェックしており、ターゲ
ット・ボード3がデバッグ・モードに突入したことを知
ることができる。すなわち、デバッガ4は、ターゲット
・ボード3がデバッグ・モードに入ったことを検知する
と、DEPCレジスタ15から停止したアドレスを取得
して、挿入命令管理テーブル11に保持している各エン
トリが持つアドレスとの比較を行う。
【0058】挿入命令管理テーブル11中にアドレスが
一致したエントリがある場合には、そのエントリから挿
入命令18を順次読み出して、JTAGデバッグ・モジ
ュール5にロードして、ターゲット・ボード3上で実行
させる。
【0059】挿入命令18のすべての実行を終了した
ら、次に、当初そのアドレスにあった命令(図4に示す
例では、命令E)をロードして、実行する。
【0060】その後、デバッガ4は、JTAGデバッグ
・モジュール5のDEPCレジスタ15に保持されてい
るデバッグ・モード突入時のアドレス値をインクリメン
トする。これは、デバッグ・モードから復帰した際に、
再度デバッグ・モードに入る命令を実行してしまうこと
を避けるためである。
【0061】最後に、DRET命令をJTAGデバッグ
・モジュール5のMON_INSTレジスタ14にロー
ドし、実行して、ターゲット・ボード3を通常の動作モ
ードに復帰させる。
【0062】図6には、ホスト・コンピュータ1上でG
UI制御部10を介してユーザから挿入命令の指示が行
われたときに、ホスト・コンピュータ1が行う処理手順
を、フローチャートの形式で示している。
【0063】すなわち、ユーザが、図3に示すようなG
UI制御部10が提供するウィンドウ画面上で、命令を
挿入すると(ステップS1)、デバッガ4は、挿入した
アドレスを調べて、ターゲット・ボード3上の該当する
アドレスにある命令を読み出して、デバッガ4内の記憶
領域にある挿入命令管理テーブル11に保存する(ステ
ップS2)。
【0064】挿入命令管理テーブル11は、図5に示し
たように、ユーザが命令の挿入を指示したアドレス毎に
エントリが設けられ、各エントリは、挿入場所のアドレ
スと、該当するアドレスにあった元の命令と、挿入され
た命令を書き込むためのそれぞれのフィールドが用意さ
れている。したがって、ステップS2では、その命令が
あったアドレス、及び、ユーザが入力した挿入命令も保
存される。
【0065】次いで、ユーザが命令の挿入を指示した当
該アドレスに、DBREAK命令を書き込む(ステップ
S3)。このようにDBREAK命令を書き込んでおく
ことにより、ターゲット・ボード3上でプログラムが逐
次実行されて、該当するアドレスに到達すると、DBR
EAKの実行により、CPU8を停止して、ターゲット
・ボード3をデバッグ・モードに遷移させることができ
る。
【0066】図7には、ターゲット・プログラムを実行
中のターゲット・ボード3に対して、ユーザから指示さ
れた挿入命令を一時的に追加するための処理手順をフロ
ーチャートの形式で示している。
【0067】ターゲット・ボード3上で、ターゲット・
プログラムが逐次実行されて、当該アドレスに到達して
DBREAK命令を実行すると(ステップS11)、C
PU8は停止して、デバッグ・モードに遷移する(ステ
ップS12)。
【0068】デバッガ4側では、定期的にJTAGデバ
ッグ・モジュール5の状態をチェックしており、ターゲ
ット・ボード3がデバッグ・モードに突入したことを知
ることができる。すなわち、デバッガ4は、ターゲット
・ボード3がデバッグ・モードに入ったことを検知する
と、DEPCレジスタ15から停止したアドレスを取得
する(ステップS13)。
【0069】次いで、挿入命令管理テーブル11に保持
している各エントリが持つアドレスとの比較を行う。そ
して、挿入命令管理テーブル11中にアドレスが一致し
たエントリがある場合には、そのエントリから挿入命令
18を順次読み出して(ステップS14)、JTAGデ
バッグ・モジュール5にロードして、ターゲット・ボー
ド3上で実行させる(ステップS15)。
【0070】最後に、DRET命令をJTAGデバッグ
・モジュール5のMON_INSTレジスタ14にロー
ドし、実行して、ターゲット・ボード3を通常の動作モ
ードに復帰させる(ステップS16)。
【0071】上述した一連の処理により、ユーザが一時
的に挿入したい命令をターゲット・ボード3上で実行す
ることが可能となる、という点を充分理解されたい。
【0072】なお、ホスト・コンピュータ1とJTAG
インターフェース回路2の接続は、上述と同様の機能を
実現することができれば、パラレル・インターフェース
6には限定されない。また、ホスト・コンピュータ1が
JTAGインターフェース回路2の機能を内蔵すること
ができる場合には、デバッグの対象となるターゲット・
ボード3をホスト・コンピュータ1に直接接続すること
ができる。
【0073】GUI制御部10は、ユーザからの挿入命
令の入力を受け付けるとともに、その結果を反映させて
ユーザに視覚的にフィードバックすることが目的であ
る。言い換えれば、同様の機能を提供できる場合には、
GUI環境下で挿入命令の入力や表示を行うことに限定
される必要はない。
【0074】デバッガ4は、JTAGデバッグ・モジュ
ール5の状態を知るために、定期的にチェックを行う
が、割り込み要求などのJTAGデバッグ・モジュール
5からの自律的な通知手段がある場合には、これに置き
換えることができる。
【0075】[追補]以上、特定の実施例を参照しなが
ら、本発明について詳解してきた。しかしながら、本発
明の要旨を逸脱しない範囲で当業者が該実施例の修正や
代用を成し得ることは自明である。すなわち、例示とい
う形態で本発明を開示してきたのであり、限定的に解釈
されるべきではない。本発明の要旨を判断するために
は、冒頭に記載した特許請求の範囲の欄を参酌すべきで
ある。
【0076】
【発明の効果】以上詳記したように、本発明によれば、
組み込みシステムにおいてリモート・デバッグを行うこ
とができる、優れたデバッグ装置及びデバッグ方法、並
びに記憶媒体を提供することができる。
【0077】また、本発明によれば、JTAGなどのデ
バッグ機能を備えたCPUを搭載した組み込みシステム
においてリモート・デバッグを行うことができる、優れ
たデバッグ装置及びデバッグ方法、並びに記憶媒体を提
供することができる。
【0078】また、本発明によれば、JTAGなどのデ
バッグ機能を備えたCPUを搭載した組み込みシステム
上で既に稼働中のプログラムに一時的にコードを追加す
ることができる、優れたデバッグ装置及びデバッグ方
法、並びに記憶媒体を提供することができる。
【0079】本発明に係るデバッグ装置及びデバッグ方
法、並びに記憶媒体によれば、ターゲット上のメモリに
挿入コードをおく必要がなくなり、デバッグ時だけのた
めの追加のメモリも不要となる。
【0080】また、挿入コードはJTAGデバッグ・モ
ジュール内の命令実行機構を用いて実行されるので、キ
ャッシュに影響を与えずに実行することができる。
【図面の簡単な説明】
【図1】本発明の1つの実施形態に係るデバッグ・シス
テムの構成を概略的に示した図である。
【図2】デバッガ4及びJTAGデバッグ・モジュール
5の詳細な構成、並びに両者の関係を示した図である。
【図3】新たなコードが挿入される前の元のプログラム
・コードを表示したデバッグ・ウィンドウ画面の様子を
示した図である。
【図4】プログラム・コードの行間に実行したい命令が
新たに一時的に挿入されたデバッグ・ウィンドウ画面の
様子を示した図である。
【図5】挿入命令管理テーブル11の構成を模式的に示
した図である。
【図6】ホスト・コンピュータ1上でGUI制御部10
を介してユーザから挿入命令の指示が行われたときにホ
スト・コンピュータ1が実行する処理手順を示したフロ
ーチャートである。
【図7】ターゲット・プログラムを実行中のターゲット
・ボード3に対して、ユーザから指示された挿入命令を
一時的に追加するための処理手順を示したフローチャー
トである。
【図8】JTAGと呼ばれるデバッグ機能を備えたCP
U(Central Processing Unit)を搭載した組み込みシ
ステムにおけるリモート・デバッグの機能を模式的に示
した図である。
【符号の説明】
1…ホスト・コンピュータ 2…JTAGインターフェース回路 3…ターゲット・ボード 4…デバッガ 5…JTAGデバッグ・モジュール 6…パラレル・ケーブル 7…JTAG専用ケーブル 8…CPU 9…配線 10…GUI制御部 11…挿入命令管理テーブル 12…JTAGインターフェース制御部 13…コア部 19…メモリ

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】ターゲット装置上に組み込まれたプログラ
    ムをリモートでデバッグを行うデバッグ装置であって、 前記ターゲット装置とのデータ通信を行うインターフェ
    ース手段と、 元のプログラム・コードに新しい命令の挿入を指示する
    手段と、 新しい命令を挿入するアドレスと、該アドレスにおける
    元の命令と、挿入する命令とを保管する挿入命令管理テ
    ーブルと、 前記ターゲット装置上でプログラムが逐次実行されて該
    当アドレスに到達したことに応答して、対応する挿入命
    令を前記挿入命令管理テーブルから読み出して、前記タ
    ーゲット装置にロードする制御手段と、を具備すること
    を特徴とするプログラムのデバッグ装置。
  2. 【請求項2】前記ターゲット装置は、DBREAK命令
    によりプログラムの実行を停止してデバッグ・モードに
    遷移するとともに、DRET命令によりデバッグ・モー
    ドから復帰してプログラムの実行を再開する、ことを特
    徴とする請求項1に記載のプログラムのデバッグ装置。
  3. 【請求項3】前記制御手段は、前記ターゲット装置の新
    しい命令を挿入するアドレスにDBREAK命令を書き
    込むとともに、挿入命令の実行後にDRET命令を前記
    ターゲット装置にロードする、ことを特徴とする請求項
    2に記載のプログラムのデバッグ装置。
  4. 【請求項4】前記ターゲット装置は、デバッグ・モード
    か否かを示す状態レジスタと、デバッグ・モード時にお
    ける停止したアドレスを示すアドレス・レジスタと、デ
    バッグ・モードから復帰時に実行する命令を示す命令レ
    ジスタを含み、デバッグ・モード下でプログラムを実行
    するデバッグ・モジュールを備える、ことを特徴とする
    請求項1に記載のプログラムのデバッグ装置。
  5. 【請求項5】前記制御手段は、前記デバッグ・モジュー
    ルの状態をチェックすることで前記ターゲット装置のデ
    バッグ・モードを検知する、ことを特徴とする請求項4
    に記載のプログラムのデバッグ装置。
  6. 【請求項6】前記制御手段は、前記ターゲット装置がデ
    バッグ・モードに遷移したことを検知すると、前記デバ
    ッグ・モジュールより停止したアドレスを取得するとと
    もに、前記挿入命令管理テーブルから当該アドレスにつ
    いての挿入命令を読み出して、前記デバッグ・モジュー
    ルにロードして前記ターゲット装置上で実行せしめる、
    ことを特徴とする請求項4に記載のプログラムのデバッ
    グ装置。
  7. 【請求項7】ターゲット装置上に組み込まれたプログラ
    ムをリモートでデバッグを行うデバッグ方法であって、 元のプログラム・コードへの新しい命令の挿入に指示に
    従って、新しい命令を挿入するアドレスと、該アドレス
    における元の命令と、挿入する命令とを関連付けて保管
    するステップと、 前記ターゲット装置の新しい命令を挿入するアドレス
    に、プログラム実行を停止させるためのDBREAK命
    令を書き込むステップと、を具備することを特徴とする
    プログラムのデバッグ方法。
  8. 【請求項8】ターゲット装置上に組み込まれたプログラ
    ムをリモートでデバッグを行うデバッグ方法であって、 前記ターゲット装置上でプログラムが逐次実行されて、
    新しい命令を挿入するアドレスに到達したことに応答し
    て、前記ターゲット装置上でのプログラム実行を停止す
    るステップと、 該当アドレスにおける挿入命令を所定の保管場所から読
    み出して、前記ターゲット装置上にロードし実行させる
    ステップと、 該当アドレスにおけるすべての挿入命令の実行を終了し
    た後、前記ターゲット装置でのプログラム実行を再開さ
    せるステップと、を具備することを特徴とするプログラ
    ムのデバッグ方法。
  9. 【請求項9】前記ターゲット装置は、デバッグ・モード
    か否かを示す状態レジスタと、デバッグ・モード時にお
    ける停止したアドレスを示すアドレス・レジスタと、デ
    バッグ・モードから復帰時に実行する命令を示す命令レ
    ジスタを含み、デバッグ・モード下でプログラムを実行
    するデバッグ・モジュールを備える、ことを特徴とする
    請求項8に記載のプログラムのデバッグ方法。
  10. 【請求項10】ターゲット装置上に組み込まれたプログ
    ラムをリモートでデバッグを行う処理をコンピュータ・
    システム上で実行するように記述されたコンピュータ・
    ソフトウェアをコンピュータ可読形式で物理的に格納し
    た記憶媒体であって、前記コンピュータ・ソフトウェア
    は、 元のプログラム・コードへの新しい命令の挿入に指示に
    従って、新しい命令を挿入するアドレスと、該アドレス
    における元の命令と、挿入する命令とを関連付けて保管
    するステップと、 前記ターゲット装置の新しい命令を挿入するアドレス
    に、プログラム実行を停止させるためのDBREAK命
    令を書き込むステップと、を具備することを特徴とする
    記憶媒体。
  11. 【請求項11】ターゲット装置上に組み込まれたプログ
    ラムをリモートでデバッグを行う処理をコンピュータ・
    システム上で実行するように記述されたコンピュータ・
    ソフトウェアをコンピュータ可読形式で物理的に格納し
    た記憶媒体であって、前記コンピュータ・ソフトウェア
    は、 前記ターゲット装置上でプログラムが逐次実行されて、
    新しい命令を挿入するアドレスに到達したことに応答し
    て、前記ターゲット装置上でのプログラム実行を停止す
    るステップと、 該当アドレスにおける挿入命令を所定の保管場所から読
    み出して、前記ターゲット装置上にロードし実行させる
    ステップと、 該当アドレスにおけるすべての挿入命令の実行を終了し
    た後、前記ターゲット装置でのプログラム実行を再開さ
    せるステップと、を具備することを特徴とする記憶媒
    体。
JP2001169972A 2001-06-05 2001-06-05 プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体 Pending JP2002366378A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001169972A JP2002366378A (ja) 2001-06-05 2001-06-05 プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001169972A JP2002366378A (ja) 2001-06-05 2001-06-05 プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体

Publications (1)

Publication Number Publication Date
JP2002366378A true JP2002366378A (ja) 2002-12-20

Family

ID=19011972

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001169972A Pending JP2002366378A (ja) 2001-06-05 2001-06-05 プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体

Country Status (1)

Country Link
JP (1) JP2002366378A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008147741A3 (en) * 2007-05-25 2009-02-19 Microsoft Corp In-process debugging using external debugging infrastructure
US7979745B2 (en) 2007-03-15 2011-07-12 Renesas Electronics Corporation On-chip debug emulator, debugging method, and microcomputer
US8555120B2 (en) 2010-04-30 2013-10-08 Samsung Electronics Co., Ltd. Target device providing debugging function and test system comprising the same

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979745B2 (en) 2007-03-15 2011-07-12 Renesas Electronics Corporation On-chip debug emulator, debugging method, and microcomputer
WO2008147741A3 (en) * 2007-05-25 2009-02-19 Microsoft Corp In-process debugging using external debugging infrastructure
US8239832B2 (en) 2007-05-25 2012-08-07 Microsoft Corporation In-process debugging using external debugging infrastructure
US8555120B2 (en) 2010-04-30 2013-10-08 Samsung Electronics Co., Ltd. Target device providing debugging function and test system comprising the same
US8819506B2 (en) 2010-04-30 2014-08-26 Samsung Electronics Co., Ltd. Target device providing debugging function and test system comprising the same

Similar Documents

Publication Publication Date Title
US7536605B2 (en) Injection of software faults into an operational system
US5978584A (en) Debugging apparatus for debugging a program by changing hardware environments without changing program operation state
CN100555218C (zh) 用于改善片上仿真系统中高级语言的仿真速度的装置和方法
JP2753500B2 (ja) 多重アーキテクチャ環境内で特にコードのデバッグを行う改良したソフトウェア・デバッグ・システムと方法
US8903703B2 (en) Dynamically adjusting speed versus accuracy of computer platform simulation
US9128837B2 (en) Providing customizable, process-specific just-in-time debugging in an operating system
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
US8997049B1 (en) Method and system for debugging of compiled code using an interpreter
US7093165B2 (en) Debugging Method
JP5270330B2 (ja) マルチコアマイコンシステムのシミュレーション方法及びシミュレーション装置
US20100153786A1 (en) Processor, multiprocessor, and debugging method
US20080127118A1 (en) Method and system for dynamic patching of software
JP2000020349A (ja) プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体
TW200903338A (en) Transactional debugger for a transactional memory system
JP3206641B2 (ja) マイコンシステムのデバッグ方法、デバッグ装置及びデバッグプログラムを記録した記録媒体
JP2008135008A (ja) プログラムモジュール検証方式
JP2002366378A (ja) プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体
JP2012123726A (ja) シミュレーション装置及びシミュレーションプログラム
CN112559336A (zh) 自适应调试异构计算芯片的方法、装置、系统及主板芯片
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
WO2006093762A1 (en) Computer platform simulation
JPH1165885A (ja) ソフトウェアディバッグ装置及びソフトウェアディバッグ方法
JP2912269B2 (ja) デバッグシステムおよびその方法
JPH05250221A (ja) シミュレータ実行方式