JP2003131902A - ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム - Google Patents

ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム

Info

Publication number
JP2003131902A
JP2003131902A JP2001326792A JP2001326792A JP2003131902A JP 2003131902 A JP2003131902 A JP 2003131902A JP 2001326792 A JP2001326792 A JP 2001326792A JP 2001326792 A JP2001326792 A JP 2001326792A JP 2003131902 A JP2003131902 A JP 2003131902A
Authority
JP
Japan
Prior art keywords
debugging
execution
execution instruction
program
instruction
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
JP2001326792A
Other languages
English (en)
Inventor
Atsushi Kageshima
淳 影島
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 JP2001326792A priority Critical patent/JP2003131902A/ja
Priority to US10/279,347 priority patent/US7093165B2/en
Publication of JP2003131902A publication Critical patent/JP2003131902A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Abstract

(57)【要約】 【課題】 時間の概念を考慮したデバッグを行うことが
可能となる。 【解決手段】 デバッグの対象であるハードウェアシス
テム100に対してシミュレーションを行うハードウェ
アシミュレータ4に接続され、そのハードウェアシミュ
レータ4から実行プログラムの時間を含むサイクルレベ
ル実行情報を獲得するシミュレーション情報獲得手段1
0、そのサイクルレベル実行情報に基づいて、ハードウ
ェアシステム100上で実行するプログラム2のデバッ
グ時の1ステップ実行指示時に対する処理幅を任意に設
定してデバッグするデバッグ処理手段11を備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソフトウェア開発
において使用されるデバッガに関し、特にハードウェア
/ソフトウェア協調シミュレーション環境で用いられる
パイプライン処理を考慮したソフトウェアデバッガ、シ
ステムレベルデバッガ、デバッグ方法、及びデバッグプ
ログラムに関するものである。
【0002】
【従来の技術】ハードウェア製造前のシステム設計段階
でのハードウェアシステムとそのハードウェアシステム
上で動作するソフトウェアを含む機能検証において、ソ
フトウェア実行時の挙動や不具合の発見、修正作業(デ
バッグ:debug)を行うために使用するツールとしてソ
フトウェアデバッガが知られている。ソフトウェアデバ
ッガは、CやPascalといった高級言語で書かれたプログ
ラムをコンパイルされる前のソースコードを用いてデバ
ッグを行う。このソフトウェアデバッガでは、ソースコ
ード上の指定した行に停止位置(ブレークポイント:br
eak point)を設定したり、あるいはソースコード上で
使われているレジスタ値や各種変数の内容の確認などを
行なうことができる。従来、このソフトウェアデバッガ
は、ソフトウェア単体で高級言語レベルのプログラムを
実行した場合を対象とした命令レベルでのデバッグしか
存在しなかった。これは、プログラムのファンクション
的な不具合や、実行時の挙動を調べるだけなら、高級言
語レベルの命令単位での情報さえ得られれば十分であっ
たためである。このため、デバッガ上の各種設定はすべ
て高級言語レベルの命令単位であり、また、デバッガ自
体、高級言語レベルの命令単位以外は設定することがで
きなかった。例えば、デバッグ時に表示される情報は高
級言語レベルの命令単位であり、その命令の実行時に表
示されるプログラム・カウンタ、ステップ幅等もすべて
高級言語レベルの命令単位であった。そして、与えられ
るブレークポイントも高級言語レベルの命令実行時とい
う設定方法が取られていた。
【0003】
【発明が解決しようとする課題】しかしながら、ハード
ウェアとソフトウェアとを組み合わせたシステムレベル
の環境でデバッグが行われるようになってくると、従来
の高級言語レベルの命令単位では不十分となってくる。
例えば、CPU外部からの割り込みを考慮した場合のソ
フトウェアのデバッグを行う際には、実行命令がアセン
ブリレベルでなければ正確なデバッグは行えない。ま
た、ソフトウェアの実行時間を短くして、性能を向上さ
せたい場合には、サイクル単位まで考慮したデバッグを
行わなければならない。このように、アセンブリレベル
の命令単位やサイクル(cycle)単位でのデバッグが必
要となってきた。すなわち、CPU内部の動作のみを考
慮したデバッグではなく、時間の概念がある外部ハード
ウェアシステムの影響を考慮に入れたデバッグが行うこ
とが必要であり、デバッガが表示する命令レベルも、よ
りハードウェアに近いアセンブリレベルでの表示が必要
である。しかし、従来のデバッガのようなプログラム・
カウンタの表示方法、ステップ幅及びブレイクポイント
の設定方法等では、時間という概念がなかったため、十
分なデバッグを行うことができないという問題があっ
た。
【0004】そこで、本発明は上記問題に鑑みてなされ
たもので、ハードウェア/ソフトウェアを組み合わせた
システムレベル上で、サイクルレベルでのデバッグを行
う際に、時間を考慮に入れたデバッグを行うことを可能
とするソフトウェアデバッガ、システムレベルデバッ
ガ、デバッグ方法、及びデバッグプログラムを提供する
ことを目的とする。
【0005】
【課題を解決するための手段】本発明の第1の特徴は、
デバッグの対象であるハードウェアシステムに対してシ
ミュレーションを行うハードウェアシミュレータに接続
され、ハードウェアシミュレータから実行プログラムの
時間を含むサイクルレベル実行情報を獲得するシミュレ
ーション情報獲得手段、そのサイクルレベル実行情報に
基づいて、ハードウェアシステム上で実行するプログラ
ムのデバッグ時のプログラム・カウンタのステップ幅を
任意に設定してデバッグするデバッグ処理手段を備える
ソフトウェアデバッガであることを要旨とする。ここ
で、「ステップ幅」とは、1ステップ実行時(実行指示
時)の処理幅のことをいう。
【0006】このソフトウェアデバッガによれば、時間
の概念を考慮したデバッグを行うことが可能となる。
【0007】本発明の第2の特徴は、デバッグの対象で
あるハードウェアシステムに接続され、ハードウェアシ
ステムに対してシミュレーションを行うハードウェアシ
ミュレータ、ハードウェアシステムに接続され、ハード
ウェアシミュレータから実行プログラムの時間を含むサ
イクルレベル実行情報を獲得する手段、サイクルレベル
実行情報に基づいて、ハードウェアシステム上で実行す
るプログラムのデバッグ時のプログラム・カウンタのス
テップ幅を任意に設定してデバッグする手段を有するソ
フトウェアデバッガとを備えるシステムレベルデバッガ
であることを要旨とする。
【0008】このシステムレベルデバッガによれば、時
間の概念を考慮に入れてデバッグを行うことが可能とな
る。
【0009】本発明の第3の特徴は、デバッグの対象で
あるハードウェアシステムに対してシミュレーションを
行うハードウェアシミュレータから実行プログラムの時
間を含むサイクルレベル実行情報を獲得するステップ、
サイクルレベル実行情報に基づいて、ハードウェアシス
テム上で実行するプログラムのデバッグ時のプログラム
・カウンタのステップ幅を任意に設定してデバッグする
ステップを備えるデバッグ方法であることを要旨とす
る。
【0010】このデバッグ方法によれば、時間の概念を
考慮したデバッグを行うことが可能となる。
【0011】本発明の第4の特徴は、デバッグの対象で
あるハードウェアシステムに対してシミュレーションを
行うハードウェアシミュレータとともに使用されるソフ
トウェアデバッガを制御するプログラムであって、シミ
ュレーション情報獲得手段に対して、ハードウェアシミ
ュレータから実行プログラムの時間を含む情報を獲得さ
せる命令、デバッグ処理手段に対して、情報に基づい
て、ハードウェアシステム上で実行するプログラムのデ
バッグ時のプログラム・カウンタのステップ幅を任意に
設定させる命令を与えるデバッグプログラムであること
を要旨とする。
【0012】本発明に係るデバッグプログラムは、ソフ
トウェアデバッガに接続されているプログラム記憶装置
に保存される。このデバッグプログラムを読み出すこと
により、シミュレーション情報獲得手段にハードウェア
シミュレータからハードウェアシミュレーション情報を
獲得させることができ、デバッグ処理手段に、ハードウ
ェアシミュレーション情報に基づいて、ハードウェアシ
ステム上で実行するプログラムのデバッグ時のプログラ
ム・カウンタのステップ幅を任意に設定させることが可
能となる。
【0013】
【発明の実施の形態】次に、図面を参照して、本発明の
実施の形態を説明する。以下の図面の記載において、同
一又は類似の部分は同一又は類似の符号を付している。
ただし、図面は模式的なものであり、各寸法の比率等は
現実のものとは異なることに留意すべきである。従っ
て、具体的な寸法等は以下の説明を参酌して判断すべき
ものである。また図面相互間においても互いの寸法の関
係や比率が異なる部分が含まれていることは勿論であ
る。
【0014】(第1の実施の形態)図1は、本発明の第
1の実施の形態に係るソフトウェアデバッガ1の実行環
境を示す図である。図1に示すように、第1の実施の形
態に係るシステムレベルデバッガ8は、ソフトウェアデ
バッガ1と、ハードウェアシステム100に接続される
ハードウェアシミュレータ4とから構成される。デバッ
グの対象であるプログラム2は、ハードウェアシステム
100における中央演算処理装置(CPU)3で実行さ
れる。CPU3を含むシステム(ターゲットシステム)
100全体の動作はハードウェアシミュレータ4でシミ
ュレーションされる。ソフトウェアデバッガ1は、ハー
ドウェアシミュレータ4に接続され、CPU3上で実行
されるプログラム2に対してデバッグを行う。プログラ
ム2は、アプリケーション、OS、デバイスドライバ等
のソフトウェアである。ソフトウェアデバッガ1は、処
理制御部20、その処理制御部20に接続された表示装
置15、入力装置16、データ記憶装置17、プログラ
ム記憶装置18とから構成されている。処理制御部20
は、シミュレーション情報獲得手段10、デバッグ処理
手段11を具備している。表示装置15は、モニタなど
の画面を指し、液晶表示装置(LCD)、発光ダイオー
ド(LED)パネル、エレクトロルミネッサンス(E
L)パネル等が使用可能である。入力装置16は、キー
ボード、マウス等の機器を指す。入力装置16から入力
操作が行われると対応するキー情報が処理制御部20に
伝達される。データ記憶装置17は、処理制御部20に
おける処理において、計算途中や解析途中のデータを一
時的に保存する。プログラム記憶装置18は、パイプラ
イン情報の獲得、獲得情報の表示等を処理制御部20に
実行させるためのプログラムを保存している。第1の実
施の形態に係るソフトウェアデバッガ1の処理制御部2
0に内蔵されたシミュレーション情報獲得手段10は、
ハードウェアシミュレータ4から、ハードウェアシミュ
レータ情報、例えば、実行中のプログラム(ソースコー
ド)のアドレス情報(プログラム・カウンタ)、命令コ
ード、パイプラインステージ、レジスタ値等を獲得す
る。処理制御部20に内蔵されたデバッグ処理手段11
は、シミュレーション情報獲得手段10により獲得され
たハードウェアシミュレーション情報に基づいて、ハー
ドウェアシステム100上で実行するプログラムのデバ
ッグ時のプログラム・カウンタのステップ幅を任意に設
定してデバッグする。
【0015】図2は、本発明の第1の実施の形態に係る
デバッグの対象であるターゲットシステム(ハードウェ
アシステム)100の構成図である。図2に示すよう
に、第1の実施の形態に係るターゲットシステム100
は、デバッグ対象であるプログラムを実行する中央演算
処理装置(CPU)3、1サイクル(cycle)でロード
(load)/ストア(store)可能な命令キャッシュ5、
及びデータキャッシュ6、ロード/ストアに5サイクル
必要なメインメモリ7から構成されている。このターゲ
ットシステム100では、CPU3がメインメモリ7に
アクセスする際、一度に4つの命令、及びデータがそれ
ぞれ命令キャッシュ5、データキャッシュ6へ読み込ま
れるものとする。これにより、キャッシュミス時には4
命令毎にメモリアクセスが発生し、キャッシュミス時以
外はキャッシュから読み込む処理を行うことになる。ま
た、プログラムが実行される前の時点においては、実行
命令は全てメインメモリ7上に置かれ、データはデータ
キャッシュ6上に置かれているものとする。CPU3
は、フェッチ(Fetch)/デコード(decode)/実行(e
xecute)/メモリ・アクセス(memory)/レジスタ書き
込み(write)からなる5段のパイプラインステージを
持つ縮小命令セット・コンピュータ(RISC:Reduce
d Instruction Set Computer)とする。なお、このター
ゲットシステム100で用いられるCPU3はRISC
としたが、複雑命令セット・コンピュータ(CISC:
Complex Instruction Set Computer)としてもよい。こ
のCPU3上で実行される実行命令は、ロード(ld)、
ストア(sd)、加算(add)、乗算(mult)とする。そ
れぞれのパイプラインステージでは、以下の処理が実行
されるものとする。すなわち、 フェッチステージ:実行命令のCPUへの読み込み; デコードステージ:実行命令のデコード; 実行ステージ:演算; メモリステージ:ロード・ストア命令実行時にデータ
キャッシュアクセス; レジスタ書き込みステージ:レジスタへの書き込み
(実行命令「ld」によってロードされたデータもこの
タイミングでレジスタへ書き込まれる。) である。
【0016】図3は、本発明の第1の実施の形態に係る
ソフトウェアデバッガ1上で実行させるためのプログラ
ムの一例である。図3に示すように、このプログラム
は、2つの変数b、cにそれぞれ値を入力し、変数bと
変数cを足し合わせた値(b+c)を変数aに入力し、
変数aと変数cを掛け合わせた値(a*c)を変数dに
入力するという一連のアルゴリズムからなる。このプロ
グラムを高級言語レベル(C言語レベル)で記述した場
合の記述例が図3のA1であり、機械語レベル(アセン
ブリレベル)で記述した場合の記述例が図3のA2であ
る。図3のA2におけるr1、r2、r3、r4、r1
0は、レジスタのアドレスを示す。
【0017】本発明の第1の実施形態に係るデバッガ
は、上述したターゲットシステム100のCPU3上で
図3に示すプログラムを実行した場合、ハードウェアシ
ミュレータ4から各サイクルにおけるCPU3のパイプ
ラインステージ動作の情報を取得することにより、実行
プログラムの時間を考慮したパイプラインステージ動作
の関係を明らかにすることを可能とする。
【0018】図4は、実行プログラムの時間(サイク
ル)と共にパイプラインステージ上で図3に示す演算を
実行する場合の動作を示す。図4においてF、D、E、
M、Wはそれぞれフェッチ、デコード、実行、メモリ、
レジスタ書き込みを表す。また添字sはストールが発生
していることを示す。図4において、1番目の実行命令
b=10におけるデコードステージでの命令キャッシュ
ミスにより、メモリアクセスを実行するために4サイク
ルのストール、5番目の実行命令d=a*cにおけるデ
コードステージでの命令キャッシュミスにより、メモリ
アクセスを実行するために4サイクルのストールが発生
していることがわかる。また、3番目の実行命令a=b
+cにおける実行ステージで、前命令のメモリステージ
実行により、レジスタr2にc=5の値が設定されるま
での1サイクルのストールが発生していることがわか
る。図4に示すように、実行プログラムの時間を考慮す
ることによりパイプライン処理におけるストール状態が
明らかになる。
【0019】図25は、従来のソフトウェアデバッガ1
2をハードウェアシミュレータ4に接続した場合におけ
る従来型ソフトウェアデバッガ12のアルゴリズムを示
す。図24を参照して、従来型ソフトウェアデバッガ1
2のアルゴリズムを説明する。
【0020】(イ)まず、ステップS1において、ハー
ドウェアシミュレータ4は、ターゲットシステムに対し
て高級言語レベル(C言語レベル)での命令実行を行
う。ここで、現プログラム・カウンタがインクリメント
された場合には、ステップS2に進み、次のプログラム
・カウンタの示す命令実行を行う。一方、現プログラム
・カウンタがインクリメントされなかった場合には、ハ
ードウェアシミュレータ4は、現在実行中のプログラム
・カウンタ(PC)実行情報30を従来型ソフトウェア
デバッガ12に対して出力する。
【0021】(ロ)そして、ステップS3において、従
来型ソフトウェアデバッガ12は、ハードウェアシミュ
レータ4から現在実行中のPC実行情報30を獲得す
る。そして、従来型ソフトウェアデバッガ12は、PC
実行情報30に基づいて、プログラム・カウンタ毎にデ
バッグを行う。
【0022】(ハ)ステップS4において、ステップS
3でプログラム・カウンタにおいて変化が発生した場合
には、従来型ソフトウェアデバッガ12は、表示するプ
ログラム・カウンタを更新する。
【0023】図5は、図3に示すプログラムをターゲッ
トシステム100のCPU3上で実行した場合におい
て、従来型ソフトウェアデバッガ12でデバッグを行っ
た場合のステップ時の変化を示す。図5に示すように、
従来型ソフトウェアデバッガ12では、高級言語レベル
(C言語レベル)の命令単位で実行命令が実行される毎
にステップ幅をとるため、この場合には、実行ステージ
が実行される毎にステップ幅をとっていることが分か
る。ここで、「ステップ幅」とは、1ステップ実行時
(実行指示時)の処理幅のことをいう。
【0024】次に、図6を参照して、本発明の第1の実
施の形態に係るソフトウェアデバッグ方法を説明する。
【0025】(イ)まず、ステップS11において、ハ
ードウェアシミュレータ4は、ターゲットシステム10
0に対してサイクルレベルでの命令実行を行う。ここ
で、現サイクルが実行された場合には、ステップS12
に進み、次のサイクルの命令実行を行う。一方、現サイ
クルが実行されなかった場合には、ハードウェアシミュ
レータ4は、実行プログラムの時間を考慮した現サイク
ルのパイプラインステージやレジスタ値等のハードウェ
アシミュレーション情報をサイクルレベル実行情報40
としてソフトウェアデバッガ1に対して出力する。
【0026】(ロ)そして、ステップS13において、
ソフトウェアデバッガ1のシミュレーション情報獲得手
段10は、ハードウェアシミュレータ4から現サイクル
のパイプラインステージやレジスタ値等のサイクルレベ
ル実行情報40を獲得する。そして、ソフトウェアデバ
ッガ1のデバッグ処理手段11は、サイクルレベル実行
情報40に基づいて、サイクル(実行プログラムの時
間)毎にデバッグを行う。なお、ステップS13におけ
るサイクル毎のデバッグ方法の詳細については後述す
る。
【0027】(ハ)ステップS14において、ステップ
S13でデバッグの対象とする条件において変化が発生
した場合には、ソフトウェアデバッガ1のデバッグ処理
手段11は、表示するプログラム・カウンタを更新す
る。表示するプログラム・カウンタは、デバッグの対象
であるCPU3のユーザ指定する任意のパイプラインス
テージ上のプログラム・カウンタを表示することが可能
である。
【0028】以下において、本発明の第1の実施形態に
係るソフトウェアデバッグ方法の具体例を示す。以下の
具体例の説明では、説明を容易にするため、実行ステー
ジで実行されているプログラム・カウンタが表示される
ものとする。
【0029】(方法例1−1)本発明の第1の実施の形
態に係るソフトウェアデバッグ方法は、デバッグ処理手
段11におけるデバッグのステップ幅を1サイクルにす
ることにより全てのサイクルのチェックを行うことが可
能である。
【0030】図5に示したように、従来型ソフトウェア
デバッガ12による高級言語レベルでのステップ幅で
は、全てのサイクルにおけるプログラム・カウンタを追
うことができない。そこで、第1の実施の形態に係るデ
バッグ方法は、ステップ幅を1サイクルにすることによ
り全てのサイクルのチェックを行う。
【0031】図7は、図3に示すプログラムをターゲッ
トシステム100のCPU3上で実行した場合におい
て、第1の実施の形態に係るデバッグ方法によりデバッ
グを行った時のサイクルレベルでのステップ幅を表示し
た図である。1番目の実行命令b=10で4サイクルの
ストール、3番目の実行命令a=b+cで1サイクルの
ストール、4番目の実行命令a=b+cで1サイクルの
ストール、5番目の実行命令d=a*cで4サイクルの
ストールが発生しているが「バグ」ではないことがわか
る。図7に示すように、第1の実施の形態に係るソフト
ウェアデバッグ方法によりサイクルレベルの状態を把握
することができる。
【0032】このような第1の具体例に係るデバッグ方
法によれば、サイクル単位で変化する外部ハードウェア
システム100の影響を考慮に入れたデバッグを行うこ
とが可能となる。
【0033】(方法例1−2)第1の実施の形態の第1
の具体例に係るソフトウェアデバッグ方法の第2の具体
例としては、デバッグ処理手段11は、ハードウェアシ
ミュレータ4から取得する情報の中からCPU3のパイ
プラインステージ情報に注目し、各パイプラインステー
ジ上で実行されている実行命令が変化する毎にステップ
幅をとる。
【0034】CPU3上で実行される実行命令の順序
は、実行順序を狂わせる要因がなければ、通常、どのパ
イプラインステージに注目しても同じであるが、実行さ
れるタイミング(サイクル)はパイプラインステージに
よって異なる。また、ジャンプ命令、分岐命令、例外な
どにより実行命令の順番に変更が生じる場合、注目する
パイプラインステージによって実行される実行命令の順
序は異なるという問題がある。この問題は、例えば、図
21に示すように、途中で例外が発生することにより実
行順序に変更が加わる場合、フェッチステージに注目し
たプログラム・カウンタの変化は、→→→であ
るが、実行ステージに注目すると、→のように全く
異なってしまうからである。このため、CPU3上で実
行されるプログラムとCPU3を含むシステム全体のハ
ードウェアとの間の因果関係を考慮してデバッグを行う
場合、チェックをしたい動作、内容によって、注目する
パイプラインステージを変えなければならない。そこ
で、第1の実施の形態の第2の具体例に係るデバッグ方
法は、ハードウェアシミュレータ4から取得する情報の
中からCPU3のパイプラインステージ情報に注目し、
各パイプラインステージ上で実行されている実行命令が
変化する毎にステップ幅をとることが可能である。
【0035】図8は、図3に示すプログラムをターゲッ
トシステム(ハードウェアシステム)100のCPU3
上で実行した場合において、第1の実施の形態の第2の
具体例に係るデバッグ方法によりデバッグを行った時の
5つのパイプラインステージ、すなわち、Fステージ、
Dステージ、Eステージ、Mステージ、Wステージのそ
れぞれのステージに注目したステップ幅を表示した図で
ある。図8に示すように、Fステージに注目した場合に
は、1番目の実行命令b=10、2番目の実行命令c=
5、3番目の実行命令a=b+c、5番目の実行命令d
=a*cと高級言語(C言語)レベルでの実行命令が変
化する毎にステップ幅をとっていることが分かる。Dス
テージ、Eステージ、Mステージ、Wステージのそれぞ
れのステージに注目した場合も同様に、1番目の実行命
令b=10、2番目の実行命令c=5、3番目の実行命
令a=b+c、5番目の実行命令d=a*cと高級言語
レベルでの実行命令が変化する毎にステップ幅をとって
いることが分かる。
【0036】第1の実施の形態の第2の具体例に係るデ
バッグ方法によれば、ハードウェアシステム100上で
実行されるプログラムに対して、そのプログラムが意図
するタイミングで、意図するパイプラインステージ上で
実行されているか否かということを容易にデバッグを行
うことが可能となる。
【0037】(方法例1−3)第1の実施の形態に係る
ソフトウェアデバッグ方法の第3の具体例としては、デ
バッグ処理手段11は、CPU3の全てのパイプライン
ステージを見て、そのステージ上で実行されるプログラ
ム・カウンタの組み合わせに変化が生じる毎にステップ
幅をとる。
【0038】CPU3上で実行される実行命令はパイプ
ラインストールがなければ、どのサイクルにおいても異
なるプログラム・カウンタが全てのパイプラインステー
ジで実行されている。このため、毎サイクルでのパイプ
ラインステージの状態は異なる。しかし、例えば、メイ
ンメモリ7から自命令をフェッチする際に、余計な時間
がかかる等の要因によりパイプラインストールが発生す
ると、サイクルが進んでも全てのパイプラインステージ
で実行されているプログラム・カウンタの組み合わせ
(状態)が変わらないといった場合が生じる。この場
合、CPU3を含むシステムは動作をしていないことに
なる。このような状態でのサイクルを飛ばして次の状態
変化が発生しているサイクルへ移行することがデバッグ
効率向上の観点から求められている。そこで、第1の実
施の形態の第3の具体例に係るデバッグ方法は、パイプ
ラインステージ上で実行されるプログラム・カウンタの
組み合わせに変化が生じる毎にステップすることが可能
である。
【0039】図9は、図3に示すプログラムをターゲッ
トシステム100のCPU3上で実行した場合におい
て、第1の実施の形態に係るデバッガ方法によりデバッ
グを行った時のパイプラインステージ上で実行されるプ
ログラム・カウンタの組み合わせに変化が生じる毎にス
テップする場合のステップ幅を表示した図である。
【0040】第1の実施の形態の第3の具体例に係るデ
バッグ方法によれば、不要なサイクルを無視したデバッ
グを行うことが可能となる。
【0041】(方法例1−4)第1の実施の形態に係る
ソフトウェアデバッグの第4の具体例としては、デバッ
グ処理手段11は、上述した第1の実施の形態に係るデ
バッグ方法において、対象とする実行命令をアセンブリ
レベルで命令変化に合わせたステップ幅をとる。
【0042】プログラム単体をデバッグの対象とする従
来型ソフトウェアデバッガ12においては、高級言語レ
ベルでのデバッグ情報が得られれば十分であったが、ハ
ードウェアと組み合わせたシステム上でデバッグを行う
場合、よりハードウェアに近いアセンブリレベルでのデ
バッグを行うことが自然である。例えば、図3のA1に
示すように、C言語レベルの1つの実行命令は、実際に
は、図3のA2に示すように、複数のアセンブリレベル
が組み合わさって実行されることにより実現されてい
る。そのため、第1の実施の形態の第4の具体例に係る
デバッグ方法は、対象とする実行命令をアセンブリレベ
ルで命令変化に合わせたステップ幅をとる。
【0043】図10、図11及び図12は、それぞれ図
7、図8及び図9において示したC言語レベルでの実行
命令を、アセンブリレベルでの実行命令に適用した場合
のステップ幅を表示した図である。図10に示すよう
に、アセンブリレベルでの実行命令が変化する毎にステ
ップ幅をとっていることがわかる。また、図11に示す
ように、Fステージに注目した場合に、1番目の実行命
令ld r1,0x0(r10)、2番目の実行命令ld r2,0x4(r10)、
3番目の実行命令add r3,r2,r1、4番目の実行命令sd r
3,0x8(r10)、5番目の実行命令mult r4,r3,r1、6番目
の実行命令sd r4 0xc(r10)とアセンブリレベルでの実行
命令が変化する毎にステップ幅をとっていることが分か
る。Dステージ、Eステージ、Mステージ、Wステージ
のそれぞれのステージに注目した場合にも同様に、アセ
ンブリレベルでの実行命令が変化する毎にステップ幅を
とっていることが分かる。さらに、図12に示すよう
に、アセンブリレベルでの実行命令の各ステージの処理
が変化する毎にステップ幅をとっていることが分かる。
【0044】第1の実施の形態の第4の具体例に係るデ
バッグ方法によれば、ステップ幅をアセンブリレベルの
命令変化時とすることで、より詳細なデバッグを行うこ
とが可能となる。
【0045】以下に説明する本発明の第2乃至第5の実
施の形態においても、デバッグの対象とする命令レベル
として高級言語(C言語)レベルとアセンブリレベルが
考えられるが、アセンブリレベルついてのみ説明する。
【0046】(第2の実施の形態)本発明の第2の実施
の形態に係るソフトウェアデバッガ1は、除算(Div)
のサイクル毎の実行状態をハードウェアシミュレータ4
から取得することにより、そのサイクル毎の実行状態が
変化する毎にステップ幅をとる。
【0047】本発明の第2の実施の形態においては、第
1の実施の形態に係るデバッグの対象であるシステムの
CPU3上で実行される実行命令(ロード(ld)、スト
ア(sd)、加算(add)、乗算(mult))に加え、さら
に除算(Div)の実行命令を定義する。この除算(Div)
の実行命令を除算実行専用のハードウェアシステムを用
いて実行した場合には36サイクルかかる。ここでは、
パイプライン上は実行ステージで1サイクルのみ実行さ
れ、パイプラインストールが起こらないものとする。た
だし、実際には実行ステージ実行と同時に除算実行専用
のハードウェアシステムが動作を開始するため、除算結
果が算出されるのは36サイクル後である。このため、
後続の命令がこの除算命令と依存関係にある場合には、
ストールが発生するもの仮定する。
【0048】図13は、本発明の第2の実施の形態に係
るソフトウェアデバッガ1上で実行させるためのプログ
ラムの一例である。図13に示すように、このプログラ
ムは、アセンブリレベルで記述されている。本発明の第
1の実施の形態に係るソフトウェアデバッガ1におい
て、図13に示すプログラムを実行する場合、全ての命
令が命令キャッシュ上に置かれていたとすると、CPU
3のパイプラインステージは、図14に示すような動作
を行う。しかし、除算実行専用のハードウェアシステム
を使用しているため、この図14では、実行命令である
除算(Div)の実行状態を知ることはできない。
【0049】そこで、本発明の第2の実施の形態に係る
ソフトウェアデバッガ1は、除算(Div)のサイクル毎
の実行状態をハードウェアシミュレータ4から取得し、
そのサイクル毎の実行状態が変化する毎にステップ幅を
とることを可能とする。
【0050】本発明の第2の実施の形態に係るソフトウ
ェアデバッガ1において、図13に示すプログラムを実
行した場合、除算実行専用のハードウェアシステム内部
の状態は、ハードウェアシミュレータ4から情報を取得
することにより、図15に示すように変化することが分
かる。
【0051】以上のように、本発明の第2の実施の形態
に係るソフトウェアデバッガ1によれば、ステップ幅を
除算実行専用のハードウェアシステムの状態変化に合わ
せることにより、除算命令実行時の外部からの影響を考
慮したデバッグを行うことが容易となる。
【0052】(第3の実施の形態)本発明の第3の実施
の形態に係るソフトウェアデバッガ1は、デュアルCP
Uに対応することを可能とする。
【0053】図16は、本発明の第3の実施の形態に係
るデバッグの対象であるターゲットシステム200の構
成図である。図16に示すように、第3の実施の形態に
係るターゲットシステム200は、デバッグの対象であ
るプログラムを実行するCPU3、そのCPU3に接続
されたコプロセッサCPU8、1サイクル(cycle)で
ロード(load)/ストア(store)可能な命令キャッシ
ュ5、及びデータキャッシュ6、ロード/ストアに5サ
イクル必要なメインメモリ7から構成されている。図2
の第1の実施の形態に係るデバッグの対象であるターゲ
ットシステム100と比較すれば、ターゲットシステム
200は、CPU3に加え、さらにコプロセッサCPU
8を搭載している点が異なる。第3の実施の形態に係る
デバッグの対象であるターゲットシステム200のコプ
ロセッサCPU8は、第1の実施の形態に係るソフトウ
ェアデバッガ1のCPU3と同様に、5段のパイプライ
ンを持ち、CPU3の動作、機能は第1の実施の形態で
説明したものと同様とする。なお、第3の実施の形態に
係るデバッグの対象であるターゲットシステム200に
おいては、コプロセッサCPU8上で実行される実行命
令は、ロード(ld1)、ストア(sd1)、乗算(mult1)
とする。
【0054】図17は、本発明の第3の実施の形態に係
るソフトウェアデバッガ1上で実行させるためのプログ
ラムの一例である。図17に示すように、このプログラ
ムは、アセンブリレベルで記述され、ロード(ld1)、
ストア(sd1)、乗算(mult1)の実行命令からなる。
【0055】(方法例3−1)本発明の第3の実施の形
態に係るソフトウェアデバッガ1は、コプロセッサCP
U8の内部状態をハードウェアシミュレータ4から取得
することにより、その変化毎にステップ幅をとる。
【0056】上述したデバッグの対象であるターゲット
システム100においては、CPU3上で動作する実行
命令だけではなく、それに付属したコプロセッサCPU
8上で動作する実行命令が存在する。このため、デバッ
グはCPU3のハードウェア的な状態情報だけではな
く、コプロセッサCPU8のハードウェア的な状態情報
を考慮しなければ行うことができない。そこで、第3の
実施の形態に係るデバッグ方法は、コプロセッサCPU
8の内部状態をハードウェアシミュレータ4から取得す
ることにより、サイクル毎、各パイプラインステージ上
のプログラム・カウンタの変化毎及びパイプラインステ
ージの組み合わせの変化毎のステップ幅をとることを可
能とする。コプロセッサCPU8の内部状態とは、上述
した本発明の第1の実施の形態のデバッグ方法で述べた
状態を含むものである。
【0057】本発明の第3の実施の形態に係るソフトウ
ェアデバッガ1において、図17に示すプログラムを実
行した場合、コプロセッサCPU8の内部のパイプライ
ン状態は、ハードウェアシミュレータ4からシミュレー
ション情報を取得することにより、図18に示すように
なる。図19は、本発明の第3の実施の形態に係るデバ
ッグ方法により、上述した状態変化に同期させることに
より、サイクル毎、各パイプラインステージ上のプログ
ラム・カウンタの変化毎及びパイプラインステージの組
み合わせの変化毎のステップ幅を示した図である。
【0058】第3の実施の形態の第1の具体例に係るソ
フトウェアデバッグ方法によれば、サイクル毎、各パイ
プラインステージ上のプログラム・カウンタの変化毎及
びパイプラインステージの組み合わせの変化毎のステッ
プ幅をとることが可能になる。
【0059】(方法例3−2)本発明の第3の実施の形
態に係るソフトウェアデバッガ1は、コプロセッサCP
U8に対して外部からアクセスがある毎にステップ幅を
とる。
【0060】図20は、図17に示すプログラムをCP
U3及びコプロセッサCPU8上で実行した場合におい
て、コプロセッサCPU8に対して外部からアクセスが
ある毎にステップ幅を表示した図である。
【0061】第3の実施の形態の第2の具体例に係るデ
バッグ方法によれば、コプロセッサCPU8の入出力イ
ンターフェースに注目してデバッグを行いたい時に有効
である。また、CPU3とコプロセッサCPU8は並列
に動作を行うため、プログラム上予想しなかった命令の
組み合わせで動作している場合などに容易にデバッグを
行うことが可能となる。
【0062】(第4の実施の形態)本発明の第4の実施
の形態に係るソフトウェアデバッガ1は、第1の実施の
形態に係るデバッグの対象であるターゲットシステム1
00のCPU3において、「外部割り込み例外」と「ア
ドレスエラー例外」の2種類の例外が発生するものとす
る。「外部割り込み例外」は、任意のタイミングで発生
し、CPU側の実行ステージ実行時に検出されるものと
する。一方、「アドレスエラー例外」は、デコードステ
ージ実行時に発生し、「外部割り込み例外」と同様に実
行ステージ実行時に検出されるものとする。ただし、
「アドレスエラー例外」は「外部割り込み例外」よりも
優先度が高く、「外部割り込み例外」と「アドレスエラ
ー例外」が同時に検出された場合には、「アドレスエラ
ー例外」が優先して検出されるものとする。例外が検出
された場合には、その例外が検出された時点で、後続命
令は中断され、例外ハンドラにある命令が新たに実行さ
れるものとする。また、CPU3はコプロセッサレジス
タとして、Causeレジスタを持つこととし、その機
能を以下のように定義する。
【0063】Causeレジスタ bit[1:0]:例外情報を保存。デフォルトは0
0、「外部割り込み例外」発生後はビット0が1に(0
1)、「アドレスエラー例外」発生後はビット1が1に
(10)、リセットもしくは例外処理実行後は0にな
る。
【0064】bit[2]:例外検出の有無。デフォル
トは0、検出時は1に、例外処理後は0になる。
【0065】以下、第4の実施の形態に係るソフトウェ
アデバッガ1のCPU3上で、図3に示すプログラムを
実行している時に例外が発生した場合を用いて説明す
る。すなわち、図21に示すように、のld命令にお
けるデコードステージ実行ストール中に「外部割り込み
例外」が発生(Causeレジスタ[1:0]=01)
し、更にのデコードステージ実行時に「アドレスエラ
ー例外」が発生(Causeレジスタ[1:0]=1
1)した場合である。
【0066】CPU3は、の実行ステージ実行時にC
auseレジスタ[1:0]=11により、「外部割り
込み例外」と「アドレスエラー例外」の両方が発生して
いることを認識するが、優先度により「アドレスエラー
例外」が検出され、そのサイクルで実行中の例外が検出
された実行命令を含む全ての実行命令の実行が打ち切ら
れ、例外処理により例外ハンドラに置かれた命令が実行
されることになる。
【0067】図21は、この一連の処理中のCPU3の
パイプラインステートの状態及び上記で定義したCau
se Regの変化情報をハードウェアシミュレータ4
からから獲得した情報により表示した図である。
【0068】(方法例4−1)本発明の第4の実施の形
態に係るソフトウェアデバッガ1は、ハードウェアシミ
ュレータ4から例外情報を獲得することによりソフトウ
ェアのシミュレーション実行を任意の状態で中断させる
ために指定するブレークポイント指定として、例外状態
を条件として指定できる。
【0069】従来型ソフトウェアデバッガ12において
は、例外が発生した場合を考慮していなかったため、例
外が発生した場合の処理をデバッグを行うことができな
かった。
【0070】そこで、第4の実施の形態の第1の具体例
に係るデバッグ方法は、ハードウェアシミュレータ4か
ら例外の情報を獲得することにより、例外の状態として
a)「例外発生時」、b)「例外検出時」、c)「例外
処理時」をそれぞれ選択することを可能とし、それぞれ
が期待するタイミング(サイクル、実行プログラム・カ
ウンタ)で処理が行われているかどうかなど、速やかに
チェックすることができる。これにより、一足飛びにそ
のタイミングまで進むことが可能になる。 例えば、上
述した例外処理に対してブレークポイントとしてそれぞ
れ上記a),b),c)で述べた値を指定することによ
り、図22に示すポイントをブレークポイントとして指
定することで、それぞれのタイミングに一足飛びに移動
することができるようになる。
【0071】(方法例4−2)第4の実施の形態の第2
の具体例に係るソフトウェアデバッグ方法は、プログラ
ムの実行を途中で中断させるために指定するブレークポ
イントの指定に対して、CPU3のプログラム・カウン
タレジスタ全体、もしくはフィールドの変化時を指定す
ることができる。
【0072】例えば、図21で示したような動作をする
CPU3に対して、Cause Reg全体の変化をブ
レークポイントとして指定することにより、Cause
Regに関係する命令実行時のデバッグを行うことが
容易となる。更に、レジスタに対するポイントを絞って
デバッグを行いたい場合にも、Cause Regのb
it[2]のようにフィールド変化をブレークポイント
として指定することでデバッグを行うことが容易にな
る。これらのブレークポイントを指定した場合のブレー
クタイミングは、図23に示したようになる。
【0073】第4の実施の形態の第2の具体例に係るデ
バッグ方法によれば、従来のデバッガでは対象としてい
なかった、コプロセッサレジスタを含めたデバッグを行
うことが容易となる。
【0074】(第5の実施の形態)本発明の第5の実施
の形態に係るソフトウェアデバッガ1は、本発明の第1
乃至第4の実施の形態に係るソフトウェアデバッガ1が
表示するプログラム・カウンタが、対象となるCPU3
の任意のパイプラインステージで実行されているプログ
ラム・カウンタを選択することを可能とする。
【0075】CPU3内で行われている処理はそれぞれ
のパイプラインステージと密接な関係を持っている。そ
のため、デバッグを行いたいソフトウェアの内容及びソ
フトウェアのステップ条件によってユーザが期待するプ
ログラムは異なる。
【0076】図24は、本発明の第5の実施の形態に係
るソフトウェアデバッガ1により、プログラム・カウン
タを変化させた場合の図である。
【0077】本発明の第5の実施の形態に係るソフトウ
ェアデバッガ1によれば、表示するプログラム・カウン
タを対象CPUの各パイプラインステージで実行される
プログラム・カウンタから任意に選択することができる
ので、デバッグ効率を向上させることが可能となる。
【0078】
【発明の効果】以上述べてきたように、本発明のソフト
ウェアデバッガ、システムレベルデバッガ、デバッグ方
法、及びデバッグプログラムによれば、CPUを含むシ
ステム上で実行されるソフトウェアに対してをデバッグ
を行う際に、時間の概念を含んだデバッグが可能にな
る。また、プログラム・カウンタのステップ幅を従来の
一命令単位から様々なステップ幅を選択することが可能
となり、表示するプログラム・カウンタを、CPU内部
の状態(パイプラインステージなど)を考慮したプログ
ラム・カウンタを選択することで、ユーザの用途に合っ
たデバッグをより効果的に行うことが可能になる。更
に、デバッグを一時停止させるブレークポイントの条件
に割り込みを追加することで、従来のソフトウェアデバ
ッガが対応していなかった割り込み処理時のデバッグを
行うことが可能となる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るソフトウェア
デバッガの実行環境を示す図である。
【図2】本発明の第1の実施の形態に係るデバッグの対
象であるターゲットシステムの構成図である。
【図3】本発明の第1及び第4の実施の形態に係るソフ
トウェアデバッガで使用するプログラムである。
【図4】本発明の第1の実施の形態に係るソフトウェア
デバッガで使用するプログラム実行時のCPU内部パイ
プラインステージの結果である。
【図5】本発明の第1の実施の形態で使用する従来型ソ
フトウェアデバッガのステップ幅を表示した図である。
【図6】本発明の実施の形態に係るソフトウェアデバッ
ガのアルゴリズムの一例である。
【図7】本発明の第1の実施の形態に係るデバッグ方法
を適用した場合のステップ幅を表示した図である(その
1)。
【図8】本発明の第1の実施の形態に係るデバッグ方法
を適用した場合のステップ幅を表示した図である(その
2)。
【図9】本発明の第1の実施の形態に係るデバッグ方法
を適用した場合のステップ幅を表示した図である(その
3)。
【図10】本発明の第1の実施の形態に係るデバッグ方
法において、図6の表示をアセンブリレベルに適用した
場合のステップ幅を表示した図である。
【図11】本発明の第1の実施の形態に係るデバッグ方
法において、図7の表示をアセンブリレベルに適用した
場合のステップ幅を表示した図である。
【図12】本発明の第1の実施の形態に係るデバッグ方
法において、図8の表示をアセンブリレベルに適用した
場合のステップ幅を表示した図である。
【図13】本発明の第2の実施の形態に係るソフトウェ
アデバッガで使用するプログラムである。
【図14】本発明の第2の実施の形態に係るソフトウェ
アデバッガで使用するプログラム実行時のCPU内部パ
イプラインステージ結果である。
【図15】本発明の第2の実施の形態に係るソフトウェ
アデバッガで使用するプログラム実行時のDiv状態結
果である。
【図16】本発明の第3の実施の形態に係るデバッグの
対象であるターゲットシステムの構成図である。
【図17】本発明の第3の実施の形態に係るソフトウェ
アデバッガで使用するプログラムである。
【図18】本発明の第3の実施の形態に係るソフトウェ
アデバッガで使用するプログラム実行時のCPU1内部
パイプラインステージ結果である。
【図19】本発明の第3の実施の形態に係るデバッグ方
法を適用した場合のステップ幅を表示した図である(そ
の1)。
【図20】本発明の第3の実施の形態に係るデバッグ方
法を適用した場合のステップ幅を表示した図である(そ
の2)。
【図21】本発明の第4の実施の形態で使用する例外発
生時のCPU内部パイプラインステージ及びレジスタ結
果である。
【図22】本発明の第4の実施の形態に係るデバッグ方
法によるブレークポイント指定時のブレーク箇所である
(その1)。
【図23】本発明の第4の実施の形態に係るデバッグ方
法によるブレークポイント指定時のブレーク箇所である
(その2)。
【図24】本発明の第5の実施の形態に係るソフトウェ
アデバッガによる表示プログラム・カウンタを変化させ
た場合の例である。
【図25】従来型ソフトウェアデバッガのアルゴリズム
の一例である。
【符号の説明】
1 ソフトウェアデバッガ 2 プログラム 3 中央演算処理装置(CPU) 4 ハードウェアシミュレータ 5 命令キャッシュ 6 データキャッシュ 7 メインメモリ 8 システムレベルデバッガ 10 シミュレーション情報獲得手段 11 デバッグ処理手段 12 従来型ソフトウェアデバッガ 15 表示装置 16 入力装置 17 データ記憶装置 18 プログラム記憶装置 20 処理制御部 30 プログラム・カウンタ(PC)実行情報 40 サイクルレベル実行情報 100 ターゲットシステム(ハードウェアシステム) 200 ターゲットシステム(ハードウェアシステム)

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 デバッグの対象であるハードウェアシス
    テムに対してシミュレーションを行うハードウェアシミ
    ュレータに接続され、 前記ハードウェアシミュレータからサイクルレベル実行
    情報を獲得するシミュレーション情報獲得手段と、 前記サイクルレベル実行情報に基づいて、前記ハードウ
    ェアシステム上で実行するプログラムのデバッグ時の1
    ステップ実行指示時に対する処理幅を任意に設定してデ
    バッグするデバッグ処理手段とを備えることを特徴とす
    るソフトウェアデバッガ。
  2. 【請求項2】 デバッグの対象であるハードウェアシス
    テムに接続され、前記ハードウェアシステムに対してシ
    ミュレーションを行うハードウェアシミュレータと、 前記ハードウェアシステムに接続され、前記ハードウェ
    アシミュレータからサイクルレベル実行情報を獲得する
    手段、前記サイクルレベル実行情報に基づいて、前記ハ
    ードウェアシステム上で実行するプログラムのデバッグ
    時の1ステップ実行指示時に対する処理幅を任意に設定
    してデバッグする手段を有するソフトウェアデバッガと
    を備えることを特徴とするシステムレベルデバッガ。
  3. 【請求項3】 デバッグの対象であるハードウェアシス
    テムに対してシミュレーションを行うハードウェアシミ
    ュレータからサイクルレベル実行情報を獲得するステッ
    プと、 前記サイクルレベル実行情報に基づいて、前記ハードウ
    ェアシステム上で実行するプログラムのデバッグ時の1
    ステップ実行指示時に対する処理幅を任意に設定してデ
    バッグするステップとを備えることを特徴とするデバッ
    グ方法。
  4. 【請求項4】 前記1ステップ実行指示時に対する処理
    幅を任意に設定してデバッグするステップは、前記1ス
    テップ実行指示時に対する処理幅を1サイクル毎にとる
    ことを特徴とする請求項3に記載のデバッグ方法。
  5. 【請求項5】 前記1ステップ実行指示時に対する処理
    幅を任意に設定してデバッグするステップは、前記1ス
    テップ実行指示時に対する処理幅を前記情報の中のパイ
    プラインステージ情報に基づいて、各パイプラインステ
    ージ上で実行されている実行命令が変化する毎にとるこ
    とを特徴とする請求項3に記載のデバッグ方法。
  6. 【請求項6】 前記1ステップ実行指示時に対する処理
    幅を任意に設定してデバッグするステップは、前記1ス
    テップ実行指示時に対する処理幅を前記パイプラインス
    テージ上で実行されている組み合わせに変化が生じる毎
    にとることを特徴とする請求項3に記載のデバッグ方
    法。
  7. 【請求項7】 前記1ステップ実行指示時に対する処理
    幅を任意に設定してデバッグするステップは、前記1ス
    テップ実行指示時に対する処理幅を実行命令をアセンブ
    リレベルでの命令変化に合わせることを特徴とする請求
    項4乃至6に記載のデバッグ方法。
  8. 【請求項8】 前記1ステップ実行指示時に対する処理
    幅を任意に設定してデバッグするステップは、前記1ス
    テップ実行指示時に対する処理幅を除算命令のサイクル
    毎の実行状態が変化する毎にとることを特徴とする請求
    項3に記載のデバッグ方法。
  9. 【請求項9】 前記1ステップ実行指示時に対する処理
    幅を任意に設定してデバッグするステップは、前記1ス
    テップ実行指示時に対する処理幅を前記ハードウェアシ
    ステムがコプロセッサCPUを有する場合に、前記コプ
    ロセッサCPUの内部状態をハードウェアシミュレータ
    から取得することにより、その変化毎にとることを特徴
    とする請求項3に記載のデバッグ方法。
  10. 【請求項10】 前記1ステップ実行指示時に対する処
    理幅を任意に設定してデバッグするステップは、前記1
    ステップ実行指示時に対する処理幅を前記ハードウェア
    システムがコプロセッサCPUを有する場合に、前記コ
    プロセッサCPUに対して外部から若しくは外部へアク
    セスがある毎にとることを特徴とする請求項3に記載の
    デバッグ方法。
  11. 【請求項11】 更に、前記情報の中の例外情報に基づ
    いて、前記ハードウェアシステム上で動作するプログラ
    ムのシミュレーション実行を任意の状態で中断させるた
    めにブレークポイントを指定するステップを備えること
    を特徴とする請求項3に記載のデバッグ方法。
  12. 【請求項12】 更に、前記ブレークポイントの指定に
    対して、前記ハードウェアシステム上のCPUのレジス
    タ全体、若しくはレジスタのフィールドの変化時を指定
    するステップを備えることを特徴とする請求項3に記載
    のデバッグ方法。
  13. 【請求項13】 更に、前記ハードウェアシステム上の
    CPUの任意のパイプラインステージで実行されている
    プログラム・カウンタを選択するステップを備えること
    を特徴とする請求項3に記載のデバッグ方法。
  14. 【請求項14】 デバッグの対象であるハードウェアシ
    ステムに対してシミュレーションを行うハードウェアシ
    ミュレータとともに使用されるソフトウェアデバッガを
    制御するプログラムであって、 シミュレーション情報獲得手段に対して、前記ハードウ
    ェアシミュレータからサイクルレベル実行情報を獲得さ
    せる命令と、 デバッグ処理手段に対して、前記情報に基づいて、前記
    ハードウェアシステム上で実行するプログラムのデバッ
    グ時の1ステップ実行指示時に対する処理幅を任意に設
    定させる設定させる命令とを与えることを特徴とするデ
    バッグプログラム。
JP2001326792A 2001-10-24 2001-10-24 ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム Pending JP2003131902A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001326792A JP2003131902A (ja) 2001-10-24 2001-10-24 ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム
US10/279,347 US7093165B2 (en) 2001-10-24 2002-10-24 Debugging Method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001326792A JP2003131902A (ja) 2001-10-24 2001-10-24 ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム

Publications (1)

Publication Number Publication Date
JP2003131902A true JP2003131902A (ja) 2003-05-09

Family

ID=19143113

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001326792A Pending JP2003131902A (ja) 2001-10-24 2001-10-24 ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム

Country Status (2)

Country Link
US (1) US7093165B2 (ja)
JP (1) JP2003131902A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010237759A (ja) * 2009-03-30 2010-10-21 Nec Corp シンボリックデバッガ、方法およびプログラム
CN102508781A (zh) * 2004-09-14 2012-06-20 科威尔公司 多核架构中的调试
KR20130086489A (ko) * 2012-01-25 2013-08-02 삼성전자주식회사 소프트웨어 파이프라인된 프로그램의 하드웨어 디버깅 장치 및 방법
US9038076B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
CN106383777A (zh) * 2016-08-24 2017-02-08 乐视控股(北京)有限公司 一种iic设备调试方法及微处理器

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
EP1349071A1 (en) * 2002-03-29 2003-10-01 STMicroelectronics N.V. Integrated circuit with direct debugging architecture
US7463653B2 (en) * 2002-12-17 2008-12-09 Texas Instruments Incorporated Apparatus and method for compression of the timing trace stream
US6981113B2 (en) * 2003-04-21 2005-12-27 Intel Corporation Storage registers for a processor pipeline
US20050120272A1 (en) * 2003-11-13 2005-06-02 Smith Zachary S. Systems and methods for determining bug ownership
WO2005114441A2 (en) 2004-05-19 2005-12-01 Arc International (Uk) Limited Microprocessor architecture
US7747088B2 (en) 2005-09-28 2010-06-29 Arc International (Uk) Limited System and methods for performing deblocking in microprocessor-based video codec applications
US7447619B2 (en) * 2005-09-29 2008-11-04 International Business Machines Corporation Apparatus and method for composite behavioral modeling for multiple-sourced integrated circuits
JP2007293771A (ja) * 2006-04-27 2007-11-08 Matsushita Electric Ind Co Ltd シミュレータ
US8423959B1 (en) * 2006-12-11 2013-04-16 Synopsys, Inc. Techniques for coordinating and controlling debuggers in a simulation environment
US8914274B1 (en) * 2006-12-11 2014-12-16 Synopsys, Inc. Method and system for instruction set simulation with concurrent attachment of multiple debuggers
US9317636B1 (en) 2006-12-11 2016-04-19 Synopsys, Inc. System and method for stopping integrated circuit simulation
US20090055155A1 (en) * 2007-08-20 2009-02-26 Russell Klein Simulating execution of software programs in electronic circuit designs
US8146061B2 (en) * 2007-12-12 2012-03-27 Via Technologies, Inc. Systems and methods for graphics hardware design debugging and verification
WO2011084535A2 (en) * 2009-12-15 2011-07-14 Corensic, Inc. Establishing a useful debugging state for a multithreaded computer program
CN103257916A (zh) * 2012-02-15 2013-08-21 深圳市金蝶友商电子商务服务有限公司 一种调试信息显示方法及系统
WO2014184613A1 (en) * 2013-05-13 2014-11-20 Freescale Semiconductor, Inc. Microcontroller unit and method of operating a microcontroller unit
US10372590B2 (en) * 2013-11-22 2019-08-06 International Business Corporation Determining instruction execution history in a debugger
GB2554942B (en) * 2016-10-14 2018-11-21 Imagination Tech Ltd Verifying firmware binary images using a hardware design and formal assertions

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530804A (en) 1994-05-16 1996-06-25 Motorola, Inc. Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes
US6052524A (en) * 1998-05-14 2000-04-18 Software Development Systems, Inc. System and method for simulation of integrated hardware and software components
US6230114B1 (en) * 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
US6625572B1 (en) * 1999-12-22 2003-09-23 Lsi Logic Corporation Cycle modeling in cycle accurate software simulators of hardware modules for software/software cross-simulation and hardware/software co-simulation
US6591378B1 (en) * 2000-02-22 2003-07-08 Motorola, Inc. Debug controller in a data processor and method therefor
US7007270B2 (en) * 2001-03-05 2006-02-28 Cadence Design Systems, Inc. Statistically based estimate of embedded software execution time

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508781A (zh) * 2004-09-14 2012-06-20 科威尔公司 多核架构中的调试
CN102521137A (zh) * 2004-09-14 2012-06-27 科威尔公司 多核架构中的调试
US9038076B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
US9129050B2 (en) 2004-09-14 2015-09-08 Synopys, Inc. Debug in a multicore architecture
US9830241B2 (en) 2004-09-14 2017-11-28 Synopsys, Inc. Debug in a multicore architecture
JP2010237759A (ja) * 2009-03-30 2010-10-21 Nec Corp シンボリックデバッガ、方法およびプログラム
KR20130086489A (ko) * 2012-01-25 2013-08-02 삼성전자주식회사 소프트웨어 파이프라인된 프로그램의 하드웨어 디버깅 장치 및 방법
KR101991680B1 (ko) 2012-01-25 2019-06-21 삼성전자 주식회사 소프트웨어 파이프라인된 프로그램의 하드웨어 디버깅 장치 및 방법
CN106383777A (zh) * 2016-08-24 2017-02-08 乐视控股(北京)有限公司 一种iic设备调试方法及微处理器

Also Published As

Publication number Publication date
US20030097613A1 (en) 2003-05-22
US7093165B2 (en) 2006-08-15

Similar Documents

Publication Publication Date Title
JP2003131902A (ja) ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム
US7836430B2 (en) Reversing execution of instructions in a debugger
US6286132B1 (en) Debugging support apparatus, a parallel execution information generation device, a computer-readable recording medium storing a debugging support program, and a computer-readable recording medium storing a parallel execution information generation program
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
US9152531B2 (en) Post-compile instrumentation of object code for generating execution trace data
US8201152B2 (en) Method and system for debugging a program in a multi-thread environment
US8903703B2 (en) Dynamically adjusting speed versus accuracy of computer platform simulation
US6550056B1 (en) Source level debugger for debugging source programs
US10229031B2 (en) Debugging inline functions in optimized code
US7945900B2 (en) Debugging tool for debugging multi-threaded programs
JP6122749B2 (ja) コンピュータシステム
US7178135B2 (en) Scope-based breakpoint selection and operation
JP5270330B2 (ja) マルチコアマイコンシステムのシミュレーション方法及びシミュレーション装置
US8806447B2 (en) Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints
US20090150870A1 (en) Method, Apparatus, and Computer Program Product for Implementing Enhanced Template Debug
US8108840B2 (en) Method for enhancing debugger performance of hardware assisted breakpoints
US6425122B1 (en) Single stepping system and method for tightly coupled processors
US20030177471A1 (en) System and method for graphically developing a program
US20030110476A1 (en) Source code debugger, debugging method and debugging program
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
Kernel User's Guide
Vranken Debug facilities in the TriMedia CPU64 architecture
JP2002366378A (ja) プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体
JP3716635B2 (ja) 情報処理装置、及びその割込み制御方法
JPH05250221A (ja) シミュレータ実行方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050328

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051024

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20051107

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20051126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081020