JPH0465729A - シンボリック・デバッガ - Google Patents
シンボリック・デバッガInfo
- Publication number
- JPH0465729A JPH0465729A JP2178297A JP17829790A JPH0465729A JP H0465729 A JPH0465729 A JP H0465729A JP 2178297 A JP2178297 A JP 2178297A JP 17829790 A JP17829790 A JP 17829790A JP H0465729 A JPH0465729 A JP H0465729A
- Authority
- JP
- Japan
- Prior art keywords
- trace
- program
- value
- trigger point
- ring buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
〈産業上の利用分野〉
本発明は、シンボリック・デバッガに関し、詳しくはカ
ーネル・シンボリック・Cソースデバッガにおける、タ
ーゲットプログラムの実行過程をトレースする機能に関
するものである。 〈従来の技術〉 UNIX(米国AT&Tベル研究所が開発しライセンス
しているオペレーティングシステムである。UNIXは
登録商標)等におけるC言語で記述されたカーネルのデ
バッグを行うデバッグ・システムとして、例えば、本願
出願人が出願した特願平1−2884524 rデバッ
グ・システム」のようなC言語レベルでカーネルをデバ
ッグすることのできるシンボリックデバッグa能を有し
たデバッガ(カーネル・シンボリック・Cソースデバッ
ガ二以下KDBという)がある。 このようなKDBを用いてC言語で記述されているUN
IX等のカーネルをデバッグする場合、ターゲットプロ
グラムのある特定のアドレスにブレークポイントを設定
してそのポイントごとに一時的にプログラムの実行を停
止させ、マイクロプロセッサの内部状態や、メモリさら
にはプログラム内の変数などを参照しながらデバッグを
行なう方法が一般的にとられていた。 一方デバッグ時に、プログラムの実行過程をトレースし
て、ターゲットプログラムがどのような過程で動作して
きたのかを確認したい場合には、KDB自体にそのよう
な機能がないため、ICE(インサーキット・エミュレ
ータ)やロジ・ツク・アナライザ等を用いてデバッグせ
ざるを得なかった。 〈発明が解決しようとする課題〉 しかしながら、ICEやロジック・アナライザ自体は、
システムが非常に高価であるばかりでなく、C言語レベ
ルでのプログラムトレース行うことができないという問
題があった。 また、ICEにおいては、マイクロプロセッサの種類に
よってサポートしていない場合があったり、またターゲ
ットとなるハードウェアの動作周波数が高い場合にはI
CEの動作遅延のために正常に使用できないことがある
といった問題もあった。 本発明の目的は、このような点に鑑みてなされたもので
、KDBを用いてUNIX等のカーネルのデバッグを行
なう際に、使用者がターゲットプログラム中のトレース
を得たい箇所(以下トリガポイントという)を、あるい
はトレース結果を得たい場所(以下トレースエリアとい
う)を、それぞれトリガポイントの前後あるいはトリガ
ポイントの直前または直後などと指定することによって
、ターゲットプログラムの実行過程をC言語レベルでト
レースすることが可能となるようにした機能を有するシ
ンボリック・デバッガを提供することにある。 く課題を解決するための手段〉 このような目的を達成するための本発明は、トレース割
り込み機能を有するマイクロプロセッサと、ハードウェ
アデバッガを搭載したROMと、プログラムの実行過程
を保存しておくためのリングバッファと、モニタの制御
や外部マシンとの間で通信を行うために必要な制御を行
うコントローラなどより構成されたCPUボードと、こ
のCPUボードとは通信回線を介して接続され、使用者
がC言語レベルでターゲットプログラム中のトリガポイ
ントとトレースエリアを指定することができるホスト・
デバッグマシンを備え、 ■ターゲットプログラムを実行させる際に、前記ハード
ウェアデバッガによりかマイクロプロセ・yすのトレー
ス機能を用いて1命令ずつプログラムを実行し、その際
のプログラムカウンタの値を前記リングバッファ内に保
存し、 ■プログラムがトリガポイントを通過するのを確認した
とき、前記トレースエリアによってリングバッファ内に
プログラムカウンタの値を保存し、■トレース結果を参
照する場合は、前記リングバッファ内に保存されたプロ
グラムカウンタの値を取り出し、RS−232C回線経
由でホスト・デバッグマシンにデータを送信し、 ■ホスト・デバッグマシンでは、送信されたプログラム
カウンタの値の情報をもとに、C言語でのプログラムソ
ースコードに変換して、モニタにトレース結果を表示さ
せる ようにしたことを特徴とする。 く作用〉 本発明では、ターゲットプログラム中のトリガポイント
とトレースエリアを指定する。また、ハードウェアデバ
ッガによるトレース機能を用いて1命令ずつプログラム
を実行させ、その際のプログラムカウンタの値をリング
バッファ内に保存する。 プログラムがトリガポイントを通過するのが確認された
ときには、その後リングバッファ内のトレースエリアに
プログラムカウンタの値を保存する。 このようにして保存されたプログラムカウンタの値は通
信回線を介してホスト・デバッグマシンに送信される。 ホスト・デバッグマシンでは、C言語でプログラムソー
スコードに変換して、デイスプレィにトレース結果を表
示させる。 〈実施例〉 以下図面を参照して本発明の詳細な説明する。 以下、トレース割り込み機能を有したマイクロプロセッ
サとして、モトローラ社のMC680X O(Xは存在
する形名の任意の数値)を使用した場合を例にとる。 第1図は本発明のシンボリック・デバッガの基本的なシ
ステムを示す構成図である0図において、10はCPU
ボード、20はRS−232C回線経由でCPUボード
と接続されKDBが動作するホスト・デバッグマシン、
30はモニタである。 CPUボード10において、11はトレース割り込み機
能を有するマイクロプロセッサ(MC680XO)、1
2はプロセッサ1に与える基準のクロックを発生するク
ロック発生器、13はハードウェアデバッガが搭載され
ているROM、14はトレース結果を保存しておくため
のデバッガ用ワークRAM、15はデバッガのモニタリ
ングの制御やKDBとの通信を行なうコントローラ(例
えば、MC6850)、16は他のハードウェアである
。 ワークRAM14内のトレースデータ保存用バッファ(
図示せず)は、第2図に示すように、バッファアドレス
ポインタ(プログラムカウンタを格納するためのバッフ
ァ内のアドレスを示すポインタ)をソフトウェアで制御
して、リングバッファ構造をとるような構成となってい
る。すなわち実際のバッファの最終点が、バッファアド
レスポインタによって、先頭に連鎖的に接続されている
かのように見なすことができる。これによって、実際に
はサイズが決まっているデータ保存用バッファも、論理
的には最終点が存在しないような構成をとることが可能
となる。 さらにリングバッファには、ターゲットプログラムを実
行させたときの、プログラムカウンタの値が保存納でき
、このため1つのアセンブラ命令の実行につき32ビツ
ト(MC68000は24ビツト)の値、すなわち4バ
イトのアドレスデータをバッファに保存することができ
るようになっている。 第3図は、MC68030のステータスレジスタの構成
を示す、ステータスレジスタは、16ビツト構成であり
、ビット15.14はトレース・イネーブル・ビットと
呼ばれ、この2つのビットのステータスによって、ター
ゲットプログラムを実行させたときにトレースの例外処
理が行なわれ、割り込みが発生するようになっている。 すなわちトレース機能を実現するためには、ターゲット
プログラムを実行させる前にあらかじめCPUボード1
0内のハードウェアデバッガ13でこれらのビットをセ
ットしておき、割り込みが発生した際にスタックフレー
ムからプログラムカウンタの値を取り出してリングバッ
ファ内に格納する操作を1命令ずつ行なえば良い、また
トレース結果を参照する場合は、リングバッファ内のプ
ログラムカウンタの値を読み出してRS−232C回線
経由でホスト・デバッグ・マシン20に送信し、KDB
によってそのプログラムカウンタの情報をもとにC言語
のソースコードに変換することによって、ターゲットプ
ログラムの実行過程をトレースすることが可能となる。 次に、ハードウェアデバッガの割り込み処理の中でプロ
グラムカウンタの値をリングバッファ内に格納する方法
について説明する。 まず使用者が、ホスト・デバッグ・マシン20によって
KDBを起動し、ターゲットプログラム中のトレース情
報を得たい部分をトリガポイントとしてC言語のソース
コードでの行番号で指定する。また、トリガポイントを
含むトレース情報を得たい領域をトレースエリアとして
指定する。 トレースエリアは、トリガポイントの前後(about
)、直前(before)、直後(after)の中か
ら適当なものを選んで指定する。 ハードウェアデバッガは、これらのパラメータを受は取
って、ステータスレジスタのトレース・イネーブル・ビ
ットをセットし、ターゲットプログラムを1命令実行さ
せたときに、トレースの例外処理が発生するようにする
。 その後ターゲットプログラムを実行させると、1命令実
行する度にトレースの例外割り込みが発生し、割り込み
処理の中でトレース例外用のスタックフレームよりプロ
グラムカウンタの値を取り出してリングバッファに保存
する。このときバッファアドレスポインタは、プログラ
ムカウンタがリングバッファに保存される度に更新され
、もしポインタがバッファの最終点になった場合は次の
ポインタの値をバッファの先頭とする。また、このとき
取り出したプログラムカウンタの値と、設定したトリガ
ポイントの値を比較する。 もし割り込み処理中に取り出したプログラムカウンタの
値と設定したトリガポイントの値が等しければ、設定さ
れたトレースエリアの情報に従ってプログラムカウンタ
の値をリングバッファに格納するか否かを判断する。す
なわち、about指定ならばその後リングバッファの
物理サイズの半分だけプログラムカウンタの値を保存し
、before指定ならばプログラムカウンタの保存を
ただちに終了し、after指定ならばその後リングバ
ッファの物理サイズだけプログラムカウンタの値を保存
する。 その後、ステータスレジスタのトレース・イネーブル・
ビットをクリアし、トレースの例外割り込みが発生しな
い状態でターゲットプログラムを再実行させる。 トレース結果を参照する場合は、保存しておいたプログ
ラムカウンタの値をリングバッファより取り出し、RS
−232C回線経由でKDBの動作しているホスト・デ
バッグ・マシン20へ送信し、KDBによってそのプロ
グラムカウンタの情報をもとにC言語のソースコードに
変換する。トレース結果はモニタ30のデイスプレィ上
に表示される。 以上のようにして、ターゲットプログラムの実行過程を
トレースすることができる。 本発明によりターゲットプログラムの実行過程をトレー
スする方法を第4図ないし第6図のフローチャートを用
いて次に説明する。第4図は本機能を設定する際の処理
を示すものであり、第5図は得られたトレース結果を表
示するものである。 また第6図はトレース割り込みが発生した際のハードウ
ェアデバッガの動作を示すフローチャートである。
ーネル・シンボリック・Cソースデバッガにおける、タ
ーゲットプログラムの実行過程をトレースする機能に関
するものである。 〈従来の技術〉 UNIX(米国AT&Tベル研究所が開発しライセンス
しているオペレーティングシステムである。UNIXは
登録商標)等におけるC言語で記述されたカーネルのデ
バッグを行うデバッグ・システムとして、例えば、本願
出願人が出願した特願平1−2884524 rデバッ
グ・システム」のようなC言語レベルでカーネルをデバ
ッグすることのできるシンボリックデバッグa能を有し
たデバッガ(カーネル・シンボリック・Cソースデバッ
ガ二以下KDBという)がある。 このようなKDBを用いてC言語で記述されているUN
IX等のカーネルをデバッグする場合、ターゲットプロ
グラムのある特定のアドレスにブレークポイントを設定
してそのポイントごとに一時的にプログラムの実行を停
止させ、マイクロプロセッサの内部状態や、メモリさら
にはプログラム内の変数などを参照しながらデバッグを
行なう方法が一般的にとられていた。 一方デバッグ時に、プログラムの実行過程をトレースし
て、ターゲットプログラムがどのような過程で動作して
きたのかを確認したい場合には、KDB自体にそのよう
な機能がないため、ICE(インサーキット・エミュレ
ータ)やロジ・ツク・アナライザ等を用いてデバッグせ
ざるを得なかった。 〈発明が解決しようとする課題〉 しかしながら、ICEやロジック・アナライザ自体は、
システムが非常に高価であるばかりでなく、C言語レベ
ルでのプログラムトレース行うことができないという問
題があった。 また、ICEにおいては、マイクロプロセッサの種類に
よってサポートしていない場合があったり、またターゲ
ットとなるハードウェアの動作周波数が高い場合にはI
CEの動作遅延のために正常に使用できないことがある
といった問題もあった。 本発明の目的は、このような点に鑑みてなされたもので
、KDBを用いてUNIX等のカーネルのデバッグを行
なう際に、使用者がターゲットプログラム中のトレース
を得たい箇所(以下トリガポイントという)を、あるい
はトレース結果を得たい場所(以下トレースエリアとい
う)を、それぞれトリガポイントの前後あるいはトリガ
ポイントの直前または直後などと指定することによって
、ターゲットプログラムの実行過程をC言語レベルでト
レースすることが可能となるようにした機能を有するシ
ンボリック・デバッガを提供することにある。 く課題を解決するための手段〉 このような目的を達成するための本発明は、トレース割
り込み機能を有するマイクロプロセッサと、ハードウェ
アデバッガを搭載したROMと、プログラムの実行過程
を保存しておくためのリングバッファと、モニタの制御
や外部マシンとの間で通信を行うために必要な制御を行
うコントローラなどより構成されたCPUボードと、こ
のCPUボードとは通信回線を介して接続され、使用者
がC言語レベルでターゲットプログラム中のトリガポイ
ントとトレースエリアを指定することができるホスト・
デバッグマシンを備え、 ■ターゲットプログラムを実行させる際に、前記ハード
ウェアデバッガによりかマイクロプロセ・yすのトレー
ス機能を用いて1命令ずつプログラムを実行し、その際
のプログラムカウンタの値を前記リングバッファ内に保
存し、 ■プログラムがトリガポイントを通過するのを確認した
とき、前記トレースエリアによってリングバッファ内に
プログラムカウンタの値を保存し、■トレース結果を参
照する場合は、前記リングバッファ内に保存されたプロ
グラムカウンタの値を取り出し、RS−232C回線経
由でホスト・デバッグマシンにデータを送信し、 ■ホスト・デバッグマシンでは、送信されたプログラム
カウンタの値の情報をもとに、C言語でのプログラムソ
ースコードに変換して、モニタにトレース結果を表示さ
せる ようにしたことを特徴とする。 く作用〉 本発明では、ターゲットプログラム中のトリガポイント
とトレースエリアを指定する。また、ハードウェアデバ
ッガによるトレース機能を用いて1命令ずつプログラム
を実行させ、その際のプログラムカウンタの値をリング
バッファ内に保存する。 プログラムがトリガポイントを通過するのが確認された
ときには、その後リングバッファ内のトレースエリアに
プログラムカウンタの値を保存する。 このようにして保存されたプログラムカウンタの値は通
信回線を介してホスト・デバッグマシンに送信される。 ホスト・デバッグマシンでは、C言語でプログラムソー
スコードに変換して、デイスプレィにトレース結果を表
示させる。 〈実施例〉 以下図面を参照して本発明の詳細な説明する。 以下、トレース割り込み機能を有したマイクロプロセッ
サとして、モトローラ社のMC680X O(Xは存在
する形名の任意の数値)を使用した場合を例にとる。 第1図は本発明のシンボリック・デバッガの基本的なシ
ステムを示す構成図である0図において、10はCPU
ボード、20はRS−232C回線経由でCPUボード
と接続されKDBが動作するホスト・デバッグマシン、
30はモニタである。 CPUボード10において、11はトレース割り込み機
能を有するマイクロプロセッサ(MC680XO)、1
2はプロセッサ1に与える基準のクロックを発生するク
ロック発生器、13はハードウェアデバッガが搭載され
ているROM、14はトレース結果を保存しておくため
のデバッガ用ワークRAM、15はデバッガのモニタリ
ングの制御やKDBとの通信を行なうコントローラ(例
えば、MC6850)、16は他のハードウェアである
。 ワークRAM14内のトレースデータ保存用バッファ(
図示せず)は、第2図に示すように、バッファアドレス
ポインタ(プログラムカウンタを格納するためのバッフ
ァ内のアドレスを示すポインタ)をソフトウェアで制御
して、リングバッファ構造をとるような構成となってい
る。すなわち実際のバッファの最終点が、バッファアド
レスポインタによって、先頭に連鎖的に接続されている
かのように見なすことができる。これによって、実際に
はサイズが決まっているデータ保存用バッファも、論理
的には最終点が存在しないような構成をとることが可能
となる。 さらにリングバッファには、ターゲットプログラムを実
行させたときの、プログラムカウンタの値が保存納でき
、このため1つのアセンブラ命令の実行につき32ビツ
ト(MC68000は24ビツト)の値、すなわち4バ
イトのアドレスデータをバッファに保存することができ
るようになっている。 第3図は、MC68030のステータスレジスタの構成
を示す、ステータスレジスタは、16ビツト構成であり
、ビット15.14はトレース・イネーブル・ビットと
呼ばれ、この2つのビットのステータスによって、ター
ゲットプログラムを実行させたときにトレースの例外処
理が行なわれ、割り込みが発生するようになっている。 すなわちトレース機能を実現するためには、ターゲット
プログラムを実行させる前にあらかじめCPUボード1
0内のハードウェアデバッガ13でこれらのビットをセ
ットしておき、割り込みが発生した際にスタックフレー
ムからプログラムカウンタの値を取り出してリングバッ
ファ内に格納する操作を1命令ずつ行なえば良い、また
トレース結果を参照する場合は、リングバッファ内のプ
ログラムカウンタの値を読み出してRS−232C回線
経由でホスト・デバッグ・マシン20に送信し、KDB
によってそのプログラムカウンタの情報をもとにC言語
のソースコードに変換することによって、ターゲットプ
ログラムの実行過程をトレースすることが可能となる。 次に、ハードウェアデバッガの割り込み処理の中でプロ
グラムカウンタの値をリングバッファ内に格納する方法
について説明する。 まず使用者が、ホスト・デバッグ・マシン20によって
KDBを起動し、ターゲットプログラム中のトレース情
報を得たい部分をトリガポイントとしてC言語のソース
コードでの行番号で指定する。また、トリガポイントを
含むトレース情報を得たい領域をトレースエリアとして
指定する。 トレースエリアは、トリガポイントの前後(about
)、直前(before)、直後(after)の中か
ら適当なものを選んで指定する。 ハードウェアデバッガは、これらのパラメータを受は取
って、ステータスレジスタのトレース・イネーブル・ビ
ットをセットし、ターゲットプログラムを1命令実行さ
せたときに、トレースの例外処理が発生するようにする
。 その後ターゲットプログラムを実行させると、1命令実
行する度にトレースの例外割り込みが発生し、割り込み
処理の中でトレース例外用のスタックフレームよりプロ
グラムカウンタの値を取り出してリングバッファに保存
する。このときバッファアドレスポインタは、プログラ
ムカウンタがリングバッファに保存される度に更新され
、もしポインタがバッファの最終点になった場合は次の
ポインタの値をバッファの先頭とする。また、このとき
取り出したプログラムカウンタの値と、設定したトリガ
ポイントの値を比較する。 もし割り込み処理中に取り出したプログラムカウンタの
値と設定したトリガポイントの値が等しければ、設定さ
れたトレースエリアの情報に従ってプログラムカウンタ
の値をリングバッファに格納するか否かを判断する。す
なわち、about指定ならばその後リングバッファの
物理サイズの半分だけプログラムカウンタの値を保存し
、before指定ならばプログラムカウンタの保存を
ただちに終了し、after指定ならばその後リングバ
ッファの物理サイズだけプログラムカウンタの値を保存
する。 その後、ステータスレジスタのトレース・イネーブル・
ビットをクリアし、トレースの例外割り込みが発生しな
い状態でターゲットプログラムを再実行させる。 トレース結果を参照する場合は、保存しておいたプログ
ラムカウンタの値をリングバッファより取り出し、RS
−232C回線経由でKDBの動作しているホスト・デ
バッグ・マシン20へ送信し、KDBによってそのプロ
グラムカウンタの情報をもとにC言語のソースコードに
変換する。トレース結果はモニタ30のデイスプレィ上
に表示される。 以上のようにして、ターゲットプログラムの実行過程を
トレースすることができる。 本発明によりターゲットプログラムの実行過程をトレー
スする方法を第4図ないし第6図のフローチャートを用
いて次に説明する。第4図は本機能を設定する際の処理
を示すものであり、第5図は得られたトレース結果を表
示するものである。 また第6図はトレース割り込みが発生した際のハードウ
ェアデバッガの動作を示すフローチャートである。
【トレース機能設定(第4図)】
■および■の処理
ホスト・デバッグマシン20のKDBより、使用者にト
リガポイントとトレースエリアの指定を要求する。トリ
ガポイントは、C言語でのソースコードの行番号であり
、トレースエリアは、about、before、af
terの指定で行なう。 ■および■の処理 ハードウェアデバッガで、KDBで指定したトリガポイ
ントとトレースエリアの情報を、ワークエリアに保存す
る。この際トレースエリアの情報は、ターゲットプログ
ラムがトリガポイントを通過してから、何ステップのト
レース結果を保存するかを示すバッファポインタに変換
する。 ■の処理 ターゲットプログラムがトリガポイントを通過したこと
示すフラグ(トリガポイント通過フラグ)をクリアする
。 ■の処理 マイクロプロセッサ内のステータスレジスタのトレース
・イネーブル・ビットをセットする。これによって、タ
ーゲットのプログラムが1命令ずつ実行されると、トレ
ースの例外割り込みが発生する。
リガポイントとトレースエリアの指定を要求する。トリ
ガポイントは、C言語でのソースコードの行番号であり
、トレースエリアは、about、before、af
terの指定で行なう。 ■および■の処理 ハードウェアデバッガで、KDBで指定したトリガポイ
ントとトレースエリアの情報を、ワークエリアに保存す
る。この際トレースエリアの情報は、ターゲットプログ
ラムがトリガポイントを通過してから、何ステップのト
レース結果を保存するかを示すバッファポインタに変換
する。 ■の処理 ターゲットプログラムがトリガポイントを通過したこと
示すフラグ(トリガポイント通過フラグ)をクリアする
。 ■の処理 マイクロプロセッサ内のステータスレジスタのトレース
・イネーブル・ビットをセットする。これによって、タ
ーゲットのプログラムが1命令ずつ実行されると、トレ
ースの例外割り込みが発生する。
【トレース結果表示(第5図)】
■の処理
KDBよりハードウェアデバッガに対して、トレース結
果の送信要求をする。 ■の処理 リングバッファ内のトレース結果であるプログラムカウ
ンタの情報を、RS−232C回線経由で、KDBの動
作しているホスト・デバッグ・マシン20へ送信する。 ■および■の処理 得られたトレース結果より、C言語でのソースコード上
で対応する箇所を探索し、その結果をモニタ30に表示
する。
果の送信要求をする。 ■の処理 リングバッファ内のトレース結果であるプログラムカウ
ンタの情報を、RS−232C回線経由で、KDBの動
作しているホスト・デバッグ・マシン20へ送信する。 ■および■の処理 得られたトレース結果より、C言語でのソースコード上
で対応する箇所を探索し、その結果をモニタ30に表示
する。
【トレース割り込み(第6図)】
■および■の処理
トレース例外用スタックフレームに積まれているプログ
ラムカウンタの値を取り出して、バッファポインタが指
し示すリングバッファの領域に保存する。 ■の処理 バッファアドレスポインタの値を更新する。このとき、
ポインタの値が実際のバッファの最終点であるなら、次
のポインタの値は実際のバッファの先頭とする。 ■の処理 トレース例外用スタックフレームから取り出したプログ
ラムカウンタの値と、設定したトリガポイントとの値を
比較する。もし等しい場合は次の■の処理に移行し、等
しくないならば■の処理へ移行する。 ■の処理 ターゲットプログラムがトリガポイントを通過したので
、トリガポイント通過フラグをセットする。これにより
次の処理■の判断処理以降は、■の処理を実行する。 ■の処理 トリガポイント通過フラグを参照して、ターゲットプロ
グラムが設定したトリガポイントを通過したか否かを調
べる。もし通過している場合は■の処理へ移行し、通過
していない場合は■の処理へ移行する。 ■の処理 ステータスレジスタのトレース・イネーブル・ビットを
セットして、例外処理からリターンする。 これにより、ターゲットプログラムが次の1命令を実行
すると再びトレース例外割り込みが発生するようにする
。 ■の処理 バッファポインタの値が0であるか否かを判断する。も
しOならば、リングバッファにプログラムカウンタの値
を保存することを終了させるために処理 へ移行する。 もし0でないならば、処理■へ移行する。 ■の処理 ステータスレジスタのトレース・イネーブル・ビットを
セットして、ターゲットプログラムをさらに1命令実行
させた際に次のトレース例外割り込みが発生するように
する。 ■の処理 バッファポインタの値から1を引く。 の処理 ステータスレジスタのトレース・イネーブル・ビットを
クリアして、トレースの例外割り込みが発生しないよう
にする。 上記実施例によれば、ターゲットプログラムのトレース
結果は、指定されたトレースエリアの情報によって、ト
リガポイントの前後、トリガポイントの直前、トリガポ
イントの直後の3種の指定が可能である。 さらにこれを発展すれば、次に示すような機能も可能と
することができる。 ■KDBよりトレースエリアを指定する際に、ターゲッ
トプログラムがトリガポイントを通過してから、何ステ
ップのトレース結果を保存するかを示す値を指定できる
ようにすれば、トリガポイントを含む領域を自由に指定
してトレース結果を得ることができる。したがって、使
用者は期待する確実なトレース結果を得ることができる
。 ■KDBよりトリガポイントを指定する際に、トリガポ
イントを何回通過してからトレース結果を保存するかを
指定できるようにすれば、ターゲットプログラムがトリ
ガポイントを何回か通過する場合でも、確実にトレース
結果を得ることができる。 なお、このIl能は、ハードウェアデバッガ内でカウン
タを用いて簡単にソフトウェア的に実現することができ
る。 〈発明の効果〉 以上詳細に説明したように、本発明によるプログラムト
レース機能を用いれば、パブファリングされたプログラ
ムの実行過程をC言語のソースコードレベルでトレース
し、ターゲットプログラムがどのような過程で動作して
きたのかを確認しながらデバッグすることが可能となる
。 したがって、従来のブレークポイントIl能だけを持つ
KDBとハードウェアデバッガから構成されたデバッグ
システムと比較して、本発明のデバッグ・システムによ
ればデバッグ効率が飛躍的に向上することが分かる。 また本発明のデバッグ機能は、CPUボード内のファー
ムウェアの一部であるハードウェアデバッガと、ホスト
・デバッグマシン上で動作するソフトウェアのKDBと
で実現されているため、トレース結果のバッファリング
用メモリさえあれば簡単に実現可能となる。そのため、
ICEやロジックアナライザを使用してデバッグする従
来の方法と比較すると、安価な方法でターゲットプログ
ラムをトレースしながら容易にデバッグすることができ
る。
ラムカウンタの値を取り出して、バッファポインタが指
し示すリングバッファの領域に保存する。 ■の処理 バッファアドレスポインタの値を更新する。このとき、
ポインタの値が実際のバッファの最終点であるなら、次
のポインタの値は実際のバッファの先頭とする。 ■の処理 トレース例外用スタックフレームから取り出したプログ
ラムカウンタの値と、設定したトリガポイントとの値を
比較する。もし等しい場合は次の■の処理に移行し、等
しくないならば■の処理へ移行する。 ■の処理 ターゲットプログラムがトリガポイントを通過したので
、トリガポイント通過フラグをセットする。これにより
次の処理■の判断処理以降は、■の処理を実行する。 ■の処理 トリガポイント通過フラグを参照して、ターゲットプロ
グラムが設定したトリガポイントを通過したか否かを調
べる。もし通過している場合は■の処理へ移行し、通過
していない場合は■の処理へ移行する。 ■の処理 ステータスレジスタのトレース・イネーブル・ビットを
セットして、例外処理からリターンする。 これにより、ターゲットプログラムが次の1命令を実行
すると再びトレース例外割り込みが発生するようにする
。 ■の処理 バッファポインタの値が0であるか否かを判断する。も
しOならば、リングバッファにプログラムカウンタの値
を保存することを終了させるために処理 へ移行する。 もし0でないならば、処理■へ移行する。 ■の処理 ステータスレジスタのトレース・イネーブル・ビットを
セットして、ターゲットプログラムをさらに1命令実行
させた際に次のトレース例外割り込みが発生するように
する。 ■の処理 バッファポインタの値から1を引く。 の処理 ステータスレジスタのトレース・イネーブル・ビットを
クリアして、トレースの例外割り込みが発生しないよう
にする。 上記実施例によれば、ターゲットプログラムのトレース
結果は、指定されたトレースエリアの情報によって、ト
リガポイントの前後、トリガポイントの直前、トリガポ
イントの直後の3種の指定が可能である。 さらにこれを発展すれば、次に示すような機能も可能と
することができる。 ■KDBよりトレースエリアを指定する際に、ターゲッ
トプログラムがトリガポイントを通過してから、何ステ
ップのトレース結果を保存するかを示す値を指定できる
ようにすれば、トリガポイントを含む領域を自由に指定
してトレース結果を得ることができる。したがって、使
用者は期待する確実なトレース結果を得ることができる
。 ■KDBよりトリガポイントを指定する際に、トリガポ
イントを何回通過してからトレース結果を保存するかを
指定できるようにすれば、ターゲットプログラムがトリ
ガポイントを何回か通過する場合でも、確実にトレース
結果を得ることができる。 なお、このIl能は、ハードウェアデバッガ内でカウン
タを用いて簡単にソフトウェア的に実現することができ
る。 〈発明の効果〉 以上詳細に説明したように、本発明によるプログラムト
レース機能を用いれば、パブファリングされたプログラ
ムの実行過程をC言語のソースコードレベルでトレース
し、ターゲットプログラムがどのような過程で動作して
きたのかを確認しながらデバッグすることが可能となる
。 したがって、従来のブレークポイントIl能だけを持つ
KDBとハードウェアデバッガから構成されたデバッグ
システムと比較して、本発明のデバッグ・システムによ
ればデバッグ効率が飛躍的に向上することが分かる。 また本発明のデバッグ機能は、CPUボード内のファー
ムウェアの一部であるハードウェアデバッガと、ホスト
・デバッグマシン上で動作するソフトウェアのKDBと
で実現されているため、トレース結果のバッファリング
用メモリさえあれば簡単に実現可能となる。そのため、
ICEやロジックアナライザを使用してデバッグする従
来の方法と比較すると、安価な方法でターゲットプログ
ラムをトレースしながら容易にデバッグすることができ
る。
【図面の簡単な説明】
第1図は本発明に係るシンボリック・デバッガの一実施
例を示す構成図、第2図はリングバッファの構成説明図
、第3図はステータスレジスタの構成を示す図、第4図
ないし第6図は動作を説明するためのフローチャートで
ある。 10・・・CPUボード、11・・・プロセッサ、12
・・・クロック発生器、13・・・ROM、14・・・
RAM、15・・・コントローラ、20・・・ホスト・
デバッグマシン、30・・・モニタ。 第4図 第、S図
例を示す構成図、第2図はリングバッファの構成説明図
、第3図はステータスレジスタの構成を示す図、第4図
ないし第6図は動作を説明するためのフローチャートで
ある。 10・・・CPUボード、11・・・プロセッサ、12
・・・クロック発生器、13・・・ROM、14・・・
RAM、15・・・コントローラ、20・・・ホスト・
デバッグマシン、30・・・モニタ。 第4図 第、S図
Claims (1)
- 【特許請求の範囲】 トレース割り込み機能を有するマイクロプロセッサと、
ハードウェアデバッガを搭載したROMと、プログラム
の実行過程を保存しておくためのリングバッファと、モ
ニタの制御や外部マシンとの間で通信を行うために必要
な制御を行うコントローラなどより構成されたCPUボ
ードと、このCPUボードとは通信回線を介して接続さ
れ、使用者がC言語レベルでターゲットプログラム中の
トリガポイントとトレースエリアを指定することができ
るホスト・デバッグマシン を備え、 (1)ターゲットプログラムを実行させる際に、前記ハ
ードウェアデバッガによりがマイクロプロセッサのトレ
ース機能を用いて1命令ずつプログラムを実行し、その
際のプログラムカウンタの値を前記リングバッファ内に
保存し、 (2)プログラムがトリガポイントを通過するのを確認
したとき、前記トレースエリアによってリングバッファ
内にプログラムカウンタの値を保存し、 (3)トレース結果を参照する場合は、前記リングバッ
ファ内に保存されたプログラムカウンタの値を取り出し
、RS−232C回線経由でホスト・デバッグマシンに
データを送信し、 (4)ホスト・デバッグマシンでは、送信されたプログ
ラムカウンタの値の情報をもとに、C言語でのプログラ
ムソースコードに変換して、モニタにトレース結果を表
示させる ようにしたことを特徴とするシンボリック・デバッガ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2178297A JPH0465729A (ja) | 1990-07-05 | 1990-07-05 | シンボリック・デバッガ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2178297A JPH0465729A (ja) | 1990-07-05 | 1990-07-05 | シンボリック・デバッガ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0465729A true JPH0465729A (ja) | 1992-03-02 |
Family
ID=16046011
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2178297A Pending JPH0465729A (ja) | 1990-07-05 | 1990-07-05 | シンボリック・デバッガ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0465729A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7260743B2 (en) | 2004-01-13 | 2007-08-21 | International Business Machines Corporation | System and method for achieving autonomic computing self-healing, utilizing meta level reflection and reasoning |
| US7840856B2 (en) | 2002-11-07 | 2010-11-23 | International Business Machines Corporation | Object introspection for first failure data capture |
| US8301580B2 (en) | 2002-04-10 | 2012-10-30 | Ipventure, Inc. | Method and system for managing computer systems |
-
1990
- 1990-07-05 JP JP2178297A patent/JPH0465729A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8301580B2 (en) | 2002-04-10 | 2012-10-30 | Ipventure, Inc. | Method and system for managing computer systems |
| US7840856B2 (en) | 2002-11-07 | 2010-11-23 | International Business Machines Corporation | Object introspection for first failure data capture |
| US7260743B2 (en) | 2004-01-13 | 2007-08-21 | International Business Machines Corporation | System and method for achieving autonomic computing self-healing, utilizing meta level reflection and reasoning |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5630049A (en) | Method and apparatus for testing software on a computer network | |
| US9244815B2 (en) | Integrated debugger and code coverage tool | |
| JP2005317023A (ja) | データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法 | |
| JPH0689200A (ja) | デバッグシステム及び方法 | |
| US9361205B2 (en) | Code coverage framework | |
| JP2003508864A (ja) | スレッド志向デバッギング | |
| JPH0465729A (ja) | シンボリック・デバッガ | |
| JPH0581070A (ja) | プログラマブルコントローラ、およびプログラマブルコントローラにおけるユーザプログラム実行方法 | |
| JP2005353020A (ja) | コンピュータプログラムのシミュレーション方式 | |
| JP2659366B2 (ja) | デバッグ方法及びその装置 | |
| JPS61180342A (ja) | 高級言語のステツプ実行方式 | |
| JPH0283749A (ja) | マイクロプロセッサの内部割込み制御方式 | |
| JP2800577B2 (ja) | デバッグ装置 | |
| JP2590154B2 (ja) | 並列プロセッサのプログラムデバッグ支援装置 | |
| JPH03175539A (ja) | デバッグ用マイクロプロセッサ | |
| JPS63271542A (ja) | Romデバツガ | |
| JPH10207737A (ja) | エミュレータ及びエミュレーションシステム | |
| JPH04132542U (ja) | デバツガ | |
| JPH0659931A (ja) | デバッグ装置 | |
| JPS6325742A (ja) | トレ−ス機能付マイクロプロセツサ | |
| JPH0259829A (ja) | マイクロコンピュータ | |
| JPH02284236A (ja) | プログラムデバッグ処理装置 | |
| JPS5844543A (ja) | トリガトレ−ス回路 | |
| JPS6382525A (ja) | トレ−ス機能付マイクロプロセツサ | |
| JPS638946A (ja) | プログラムデバツグサポ−ト方式 |