JP3503504B2 - デバッグ処理システムと計算機およびデバッグ処理方法 - Google Patents

デバッグ処理システムと計算機およびデバッグ処理方法

Info

Publication number
JP3503504B2
JP3503504B2 JP35238498A JP35238498A JP3503504B2 JP 3503504 B2 JP3503504 B2 JP 3503504B2 JP 35238498 A JP35238498 A JP 35238498A JP 35238498 A JP35238498 A JP 35238498A JP 3503504 B2 JP3503504 B2 JP 3503504B2
Authority
JP
Japan
Prior art keywords
memory space
memory
space
program
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP35238498A
Other languages
English (en)
Other versions
JP2000181748A (ja
Inventor
正靖 淺野
政則 本田
知紀 関口
利明 新井
理 冨田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP35238498A priority Critical patent/JP3503504B2/ja
Publication of JP2000181748A publication Critical patent/JP2000181748A/ja
Application granted granted Critical
Publication of JP3503504B2 publication Critical patent/JP3503504B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ(電
子計算機)上で動作するプログラムのデバッグ技術に係
わり、特に、1台のコンピュータ上でそれぞれ異なるメ
モリ空間で複数のオペレーティングシステム(OS)を
連動させて動作させるマルチOS環境で動作するOSを
含むプログラム(以下、「マルチメモリ空間プログラ
ム」と記載)のデバッグに好適なデバッグ処理システム
と計算機およびデバッグ処理方法に関するものである。
【0002】
【従来の技術】電子計算機のプログラムを開発するにあ
たり、正しく動作するプログラムを開発するために、プ
ログラムの動作の順序や動作の不具合を調査するために
デバッグ装置、すなわちデバッガが用いられる。このデ
バッガには、プログラムの命令において、指定した命令
を実行停止させる機能や、メモリ内部の値の読み書きを
行なう機能などが提供されている。これにより、プログ
ラムが正確に動作するか否かを調べることが可能であ
る。尚、このようなデバッガに関する技術は、Jonathan
B. Rosenberg著、吉川邦夫訳「How Debuggers Work デ
バッガの理論と実装」(1998年、株式会社アスキー発行)
に記載されている。
【0003】電子計算機環境において、1つの電子計算
機で複数のOSを連動させて動作させるマルチOS環境
を構成するシステムが提供されている。このようなマル
チOSシステムにおけるプログラムのデバッグ支援技術
に関係するものとして、例えば、特開平10−1339
10号公報に記載の技術がある。これは応用プログラム
(アプリケーションプログラム)の開発環境となる汎用
OSと応用プログラムの実行環境となるリアルタイムO
Sが同一電子計算機上で動作するマルチOSシステムに
おいて、デバッグ対象の応用プログラムと非デバッグ対
象の応用プログラムとの連携動作を実現するものであ
る。ここで、連携動作とは、複数のプログラムが通信し
あって、1つの処理を実行する動作である。
【0004】特開平10−133910号公報で用いら
れるデバッガは、マルチOSシステムが提供するエミュ
レータ装置を利用する。しかし、エミュレータ装置を持
たず、各OSが独立したメモリ空間を持ち、割り込みの
処理手順によりOSの実行をスケジューリングし、複数
のOSを1台の電子計算機で同時に動作させることを特
徴とする、マルチメモリ空間を持つマルチOSシステム
に対するデバッガは提供されていない。このようなマル
チメモリ空間を持つマルチOSシステムの場合、従来の
デバッグ技術では、各OSに対応したデバッガをそれぞ
れ開発して動作させることになる。
【0005】すなわち、ある複数のプログラムがマルチ
メモリ空間で動作している場合、各メモリ空間で動作す
るOSを含む各プログラム(マルチメモリ空間プログラ
ム)をデバッグするには、各メモリ空間毎にデバッガを
起動させなければならない。また各マルチメモリ空間プ
ログラムが互いに連携して動作する場合、各メモリ空間
のプログラム毎にデバッグをしているようでは、その連
携動作に関するデバッグが不十分となる。
【0006】
【発明が解決しようとする課題】解決しようとする問題
点は、従来の技術では、マルチメモリ空間上で同時に動
作するプログラム(マルチメモリ空間プログラム)を一
つのデバッガでデバッグすることができない点と、マル
チメモリ空間のプログラムの連携動作に対応してデバッ
グすることができない点である。
【0007】本発明の目的は、これら従来技術の課題を
解決し、1台のコンピュータ上でそれぞれ異なるメモリ
空間で複数のオペレーティングシステム(OS)を連動
させて動作させるマルチOS環境で動作するマルチメモ
リ空間プログラムのデバッグを効率的に行なうことを可
能とするデバッグ処理システムと計算機およびデバッグ
処理方法を提供することである。
【0008】
【課題を解決するための手段】上記目的を達成するた
め、本発明のデバッグ処理システムと計算機およびデ
ッグ処理方法は、デバッグ時に使用する例外ハンドラ
を、マルチメモリ空間で動作するプログラム内で共用す
る。これにより、例外がどのメモリ空間で起こっても捕
獲可能である。そして、デバッグ装置を実装する空間と
別の空間で例外を捕獲した場合、共用の例外ハンドラ
は、デバッグ装置を実装する空間へ空間切り替えを行っ
た後、再びブレークポイント例外を起こす。これによ
り、別空間の例外もデバッグ装置を実装する空間で捕獲
することが可能となる。
【0009】例外ハンドラを共用して管理するために
は、各メモリ空間のプログラムが操作可能な共通メモリ
領域を設け、この共通メモリ領域に、各メモリ空間の設
定情報や割り込みテーブルを設定し、この割り込みテー
ブルに、共用の例外ハンドラ(共用ハンドラ)の情報を
登録する。そして、共用ハンドラは、メモリ空間の設定
情報を利用して、各メモリ空間からデバッガの動作する
メモリ空間への切り替えを行なう。デバッグ用に利用さ
れる例外ハンドラは特権レベルに関わらず有効であり、
各プログラムの特権レベルに関わらず、捕獲可能であ
る。
【0010】また、共通メモリ領域に、ブレークポイン
ト管理のためのテーブルなど、各メモリ空間のプログラ
ムをデバッグするのに必要な情報を設定し、あるメモリ
空間で動作するデバッガがこの共通メモリ領域のデバッ
グ情報を操作することで、各メモリ空間のプログラムを
デバッグすることが可能となる。
【0011】また、マルチOS環境を構成する場合、汎
用OSを一つのOSとして存在させるとき、汎用OSの
豊富なデバッガを有効利用することにより、デバッガの
開発工数の低下を図ることができる。そして、このデバ
ッガのみを利用して、他のメモリ空間のOSを含むプロ
グラムのデバッグを行なうことにより、デバッグ環境を
共用でき、利便性が高まる。例えば、デバッガが動作す
るメモリ空間と異なるメモリ空間で動作するOS開発に
有効利用できる。
【0012】
【発明の実施の形態】以下、本発明の実施の形態を、図
面により詳細に説明する。図1は、本発明に係わるデバ
ッグシステムの構成例を示すブロック図である。本図1
において、100はデバッグを行なうプログラムが動作
しているデバッグ対象計算機、110はデバッグ対象計
算機100上のプログラムをデバッグするデバッガが起
動するデバッガ計算機である。
【0013】デバッグ対象計算機100は、プロセッサ
(図中、「CPU」と記載)101、メモリ102、バ
ス107、通信装置108により構成されている。メモ
リ102においては、複数のプログラムを互いに影響な
く動作させるために、それぞれのプログラムが専用のメ
モリ領域を確保する。つまり、一方のプログラムが他方
のプログラムのメモリ領域を利用できないようにメモリ
領域を確保する。
【0014】本例では、以上の性質をもつ2つのメモリ
空間を確保している。このメモリの領域を、それぞれ、
第1メモリ空間104、第2メモリ空間105とする。
また、互いのプログラムが協調して動作することを考慮
して、共通メモリ領域103を確保する。この共通メモ
リ領域103には、その詳細については後述するが、割
り込みテーブルや各メモリ空間の空間設定情報、およ
び、ブレークポイント情報などを確保する。
【0015】デバッガ計算機110には、キーボード等
の入力装置112、CRT(Cathode Ray Tube)等の出
力装置113が接続されている。このデバッガ計算機1
10に設けられたデバッガ(図中、「第1メモリ空間を
対象とするデバッガ」と記載)111は、デバッグ対象
計算機100における第1メモリ空間104のプログラ
ムをデバッグするデバッガである。デバッガ111の操
作は入力装置112により行ない、デバッグの結果は出
力装置113により出力される。
【0016】デバッグ計算機110は、デバッグ対象計
算機100とケーブル109で接続され、デバッガ11
1のデバッグするための命令を、通信装置114からケ
ーブル109を通り、デバッグ対象計算機100の通信
装置108、バス107を介して、第1メモリ空間10
4にマッピングされているデバッグ支援プログラム10
6に渡す。
【0017】デバッグ支援プログラム106は、デバッ
ガ111からの命令を受け、デバッグ対象プログラムに
対して、デバッグ命令を設定する。デバッガ111は、
ブレークポイントの制御、シングルステップ実行の制御
のほか、仮想アドレス指定のメモリ参照、書き込みか
ら、物理メモリ参照、書き込みを可能とする。
【0018】このように、デバッガ111は、物理メモ
リ参照、書き込みが可能なので、共通メモリ領域103
にある空間情報(次の図2に示す空間情報テーブル21
0)を利用してページングの状況を解析し、第2メモリ
空間105のプログラムの仮想アドレスから、物理メモ
リのマッピングの状況が参照、書き込み可能となる。こ
れにより、第2メモリ空間105のプログラムのブレー
クポイント命令のコードを、第1メモリ空間104で動
作するデバッガ111から設定可能となる。
【0019】図2は、図1における共通メモリ領域の構
成例を示す説明図である。共通メモリ領域103には、
空間情報テーブル210と、割り込みテーブル220、
ブレークポイントテーブル230、レジスタテーブル2
40、トレーステーブル250、動作空間フラグ(図
中、「動作空間(第1,第2)」と記載)260、デバ
ッグモードフラグ(図中、「デバッグモード(On or Of
f)」と記載)270、シングルステップ実行停止モー
ドフラグ(図中、「シングルステップ実行停止モード
(On or Off)」と記載)280、トレース実行モード
フラグ(図中、「トレース実行モード(On or Off)」
と記載)281、および、シングルステップ実行判定フ
ラグ(図中、「シングルステップ実行判定(On or Of
f)」と記載)282が設けられている。
【0020】共通メモリ領域103は、図1の第1メモ
リ空間104のプログラムからも、第2メモリ空間10
5のプログラムからも利用可能である。従って、共通メ
モリ領域103にある各テーブル(210〜250)お
よびフラグ(260〜282)の状態により、デバッガ
の動作が制御可能である。これにより、ブレークポイン
ト例外ハンドラや、シングルステップ実行時に起こる例
外ハンドラは、通常使用する場合とデバッグで使用する
場合とを、フラグの指定で使い分けることが可能であ
る。すなわち、デバッグ専用の例外ハンドラと通常使用
する例外ハンドラとをシステム起動時に別々に設定する
必要はない。
【0021】空間情報テーブル210においては、図1
の第1メモリ空間104と第2メモリ空間105のペー
ジテーブルのアドレスが、ページテーブル位置211と
して、また、各空間で用いるスタックのアドレスがスタ
ックポインタ位置212として格納されており、この空
間情報テーブル210により、各メモリ空間を識別でき
る。
【0022】割り込みテーブル220には、割り込み例
外ハンドラの識別子毎に、各ハンドラのベースアドレス
221と割り込みハンドラの設定(図中、「割込み設
定」と記載)222が格納される。このように、割り込
みテーブル220は、共通メモリ領域103におかれ、
各メモリ空間の割り込み例外ハンドラが共用する。
【0023】ブレークポイントテーブル230は、第2
メモリ空間105のブレークポイント設定されたアドレ
スを登録するブレークポイントアドレス231と、ブレ
ークポイントを設定する以前の命令コード、すなわち、
元の命令コードを登録する元コード232、および、テ
ーブル内のブレークポイントが有効であるか無効である
かを登録する領域(図中、「有効or無効」と記載)23
3により構成されている。ブレークポイント設定時に
は、このブレークポイントテーブル230にテーブル内
の各項目を設定することで、ブレークポイントの制御が
可能となる。
【0024】レジスタテーブル240では、レジスタ名
とその値が、レジスタ名241と値242のそれぞれの
項目欄に格納され、トレーステーブル250では、トレ
ースデータがトレースデータ251の項目に格納され
る。また、動作空間フラグ260では、動作空間が第
1,第2メモリ空間のいずれであるかが示され、デバッ
グモードフラグ270では、デバッグモードか通常モー
ドであるかが示され、シングルステップ実行停止モード
フラグ280では、シングルステップ実行停止モードで
あるか否かが示され、そして、トレース実行モードフラ
グ281では、トレース実行モードであるか否かが示さ
れ、そして、シングルステップ実行判定フラグ282で
は、本例の技術でデバッグを行なう場合に、デバッグ例
外ハンドラがブレークポイントを発行したか否かが示さ
れる。
【0025】以下、このようなテーブルおよびフラグを
用いた図1におけるデバッグシステムの動作を説明す
る。図3は、図1におけるデバッグシステムの本発明に
係わるデバッグ方法の第1の処理手順例を示すフローチ
ャートである。本例は、ブレークポイント例外に対する
処理手順例を示している。各メモリ空間でブレークポイ
ントが発行されたとき、図2の割り込みテーブル220
に登録されているブレークポイント例外ハンドラ(以
下、「共用ハンドラ」と記載)が起動する。
【0026】起動した共用ハンドラは、まず。第1メモ
リ空間104でプログラムが動作しているかどうか判定
する(ステップ301)。第1メモリ空間104は、デ
バッガ111が動作しているメモリ空間であり、その判
定は、図2の動作空間フラグ260の値により行なう。
【0027】第1メモリ空間104で動作していれば、
第1メモリ空間104のブレークポイント例外ハンドラ
へ移行する(ステップ302)。すなわち、デバッガ1
11に対するデバッグ支援プログラム106が使用する
ブレークポイント例外ハンドラを用いる。
【0028】第1メモリ空間104以外(ここでは、第
2メモリ空間105)で動作している場合、後で割り込
み以前の状態に復帰する場合のために、レジスタの内容
を保存した後(ステップ303)、このハンドラがデバ
ッグのために用いられているかどうか判定する(ステッ
プ304)。この判定は、図2のデバッグモードフラグ
270の値により行なう。デバッグモードでなければ、
第2メモリ空間105のプログラムが通常用いるブレー
クポイント例外ハンドラへ移行する(ステップ30
6)。
【0029】デバッグモードで動作している場合、さら
に、デバッグ例外ハンドラで発行されたブレークポイン
トかどうか判定する(ステップ305)。これは、本例
の技術でデバッグを行なう場合には、図4で後述するよ
うに、デバッグ例外ハンドラがブレークポイントを発行
する場合があるからであり、ここでの判定は、デバッグ
例外ハンドラで設定される図2のシングルステップ実行
判定フラグ282を用いる。すなわち、シングルステッ
プ実行判定フラグ282が設定されていれば、デバッグ
例外ハンドラから発行されたブレークポイントとして判
定する。
【0030】このように、デバッグ例外ハンドラから発
行されたブレークポイントであれば、ステップ309へ
移行する。すなわち、デバッグ例外ハンドラからのブレ
ークポイントのコードは始めから組み込まれているの
で、ブレークポイント発行位置の命令ポインタを操作す
る必要はない。また、デバッグ例外ハンドラ実行中のレ
ジスタの内容を保存しても有効な情報とならない。従っ
て、この場合は、次のステップ307,308の処理は
必要ない。
【0031】ステップ305において、デバッグ例外ハ
ンドラから発行されたブレークポイントに対する処理で
ない場合、命令ポインタをブレークポイント発行位置に
変更する(ステップ307)。割込みハンドラがプログ
ラム動作に復帰するとき、通常、命令ポインタは、割込
みの起こったアドレスの次のアドレスに復帰するように
設定される。しかし、通常のプログラムのコードに戻す
ためには、ブレークポイント用のコードをブレークポイ
ント登録前の元のコードに戻し、かつ、ブレークポイン
トコードの位置に戻して、その元のコードから実行する
必要がある。この元コードに戻す処理は後述のステップ
314で行なう。
【0032】次に、ステップ303で保存したレジスタ
の内容を共通メモリ領域103のレジスタテーブル24
0に書き込む(ステップ308)。デバッガ111は、
共通メモリ領域103を仮想アドレス指定で参照できる
ので、テーブルのシンボル、またはアドレスを指定する
ことにより、ブレークポイント発行時のレジスタの値を
参照できる。次に、第2メモリ空間105の空間情報を
空間情報テーブル210に保存する(ステップ30
9)。
【0033】さらに、第2メモリ空間105から第1メ
モリ空間104にメモリ空間を切り替える(ステップ3
10)。第1メモリ空間104にメモリ空間を切り替え
るための情報は、図2の空間情報テーブル210から獲
得して設定し、図2の動作空間フラグを第1メモリ空間
に変更する。そして、ブレークポイントを発行する(ス
テップ311)。これにより、再び共用ハンドラが実行
され、今度はステップ301において第1メモリ空間1
04のブレークポイントとしてみなし、第1メモリ空間
104のブレークポイント例外ハンドラへ移行する。
【0034】このように、共用ハンドラが動作すること
で、第1メモリ空間104を対象に動作するデバッガ1
11が、第2メモリ空間105のブレークポイントを捕
まえることができる。このデバッガ111がブレークポ
イントにより動作を停止することができれば、第2メモ
リ空間105のプログラムも、ステップ311における
ブレークポイント発行の時点で停止することが可能であ
る。すなわち、第2メモリ空間105のブレークポイン
トを設定すれば、第1メモリ空間104を対象とするデ
バッガ111が、第2メモリ空間105のブレークポイ
ントを捕獲することが可能である。
【0035】そして、この第1メモリ空間104で発行
したブレークポイント例外ハンドラが終了すると、第2
メモリ空間105へ再び空間を切り替える(ステップ3
12)。これは、ステップ309の処理で、図2の空間
情報テーブル210に保存した第2メモリ空間の空間情
報に基づき行ない、図2の動作空間フラグを第2メモリ
空間に変更する。これにより、再び、第2メモリ空間1
05上で、共用ハンドラが動作することになる。
【0036】その後、再度、デバッグ例外ハンドラで発
行されたブレークポイントであるかどうかを判定する
(ステップ313)。ここでの判定にも、図2のシング
ルステップ実行判定フラグ282を用いる。すなわち、
シングルステップ実行判定フラグ282が設定されてい
れば、デバッグ例外ハンドラから発行されたブレークポ
イントとして判定する。このようにデバッグ例外ハンド
ラで発行されたブレークポイントであれば、デバッグ例
外ハンドラのブレークポイントのコードは始めから組み
込まれているので、ステップ314〜316の処理をす
る必要はなく、ステップ317へ移行する。
【0037】デバッグ例外ハンドラで発行されたブレー
クポイントでなければ、ブレークポイントを指定したア
ドレスに元のコードを書き込む(ステップ314)。こ
れは、図2のブレークポイントテーブル230から、ブ
レークポイントを起こしたアドレスの元コードを取り出
して行なう。これにより、共用ハンドラが終了した後、
ブレークポイント設定したアドレスから元のコードで動
作することになる。
【0038】さらに、ブレークポイントの指定が有効か
どうか判定する(ステップ315)。これは、図2のブ
レークポイントテーブル230におけるブレークポイン
トアドレス231から、共用ハンドラを起こしたブレー
クポイントのアドレスを検査し、そのアドレスに対応す
る有効か無効かを示す項目233の状態により判定す
る。有効であればステップ316へ処理を移行し、無効
であればステップ317へ処理を移行する。
【0039】ステップ316では、シングルステップ実
行モードを設定し、その後、ステップ317へ動作を移
行する。このシングルステップ実行モードによる処理動
作は、ブレークポイントの指定を繰り返し使用する場合
に必要である。すなわち、このシングルステップ実行時
に呼ばれる例外ハンドラにより、書き換えたブレークポ
イントのコードをこの時点で再びブレークポイントのコ
ードに書き込む。このようなシングルステップ実行時に
呼ばれる例外ハンドラについては、後の図4を用いて詳
細を説明する。
【0040】ステップ317では、ステップ303の処
理で保存したレジスタの内容を回復する。そして、この
共用ハンドラを終了する。このような共用ハンドラの処
理手順により、通常のデバッガ111のブレークポイン
ト例外ハンドラでは捕獲できない別のメモリ空間(第2
メモリ空間105)のプログラムのブレークポイントが
捕獲可能となる。
【0041】図4は、図1におけるデバッグシステムの
本発明に係わるデバッグ方法の第2の処理手順例を示す
フローチャートである。本例は、シングルステップ実行
時に呼ばれるデバッグ例外に対する処理手順例を示して
いる。
【0042】デバッグ例外が起こると、第1メモリ空間
104で動作しているか否かを判定する(ステップ40
1)。第1メモリ空間104は、デバッガ111が動作
しているメモリ空間である。また、判定は、図2の動作
空間フラグ260の値により判定する。
【0043】第1メモリ空間104で動作している場合
は、第1メモリ空間対象のデバッグ例外ハンドラへ移行
する(ステップ402)。また、第1メモリ空間104
以外で動作している場合は、まず、後で割り込み以前の
状態に復帰する場合のために、レジスタの内容を保存す
る(ステップ403)。次に、この例外ハンドラがデバ
ッグのために用いられているかどうか判定する(ステッ
プ404)。この判定は、図2のデバッグモードフラグ
270の値により行なう。
【0044】デバッグモードでなければ、第2メモリ空
間105のプログラムが通常用いるデバッグ例外ハンド
ラへ移行する(ステップ405)。デバッグモードが起
動している場合は、まず、有効とするブレークポイント
の位置にブレークポイント命令を書き込んだか否かを判
定する(ステップ406)。この判定は、シングルステ
ップ実行が起こったアドレスと、図2のブレークポイン
トテーブル230のブレークポイントアドレス231と
が等しいか否かで行なう。
【0045】ここで判定されたアドレスがあれば、ブレ
ークポイント命令をそのアドレス位置に書き込む(ステ
ップ407)。このように、ブレークポイントを再び有
効とすることで、ブレークポイント設定時の状態にし
て、ブレークポイントの設定の状態を継続させる。
【0046】次に、シングルステップ実行を解除するか
どうか判定する(ステップ408)。これは、図2にお
ける共通メモリ領域103のシングルステップ実行停止
モードフラグ280とトレース実行モードフラグ281
の値により判定する。ここで、シングルステップ実行停
止モードとは、シングルステップ実行させる毎に動作を
停止させてデバッグするために用いるモードである。
【0047】どちらのフラグも指定されていなければ、
シングルステップ実行を解除する(ステップ409)。
これはプロセッサの設定の変更により実現する。このよ
うに、シングルステップ実行を解除することにより、こ
の例外ハンドラが終了した後、ブレークポイント設定時
と同じ通常の実行状況となり、その後、レジスタを回復
して(ステップ410)、デバッグ例外ハンドラを終了
する。
【0048】また、ステップ408の処理において、シ
ングルステップ実行を解除しない場合には、ステップ4
03の処理において保存したレジスタの内容を図2のレ
ジスタテーブル240に書き込む(ステップ411)。
デバッガ111は、共通メモリ領域103を仮想アドレ
ス指定で参照できるので、テーブルのシンボル、または
アドレスを指定することにより、シングルステップ実行
時のレジスタの値を参照できる。
【0049】そして、シングルステップ実行停止モード
が指定されているかどうかを判定する(ステップ41
2)。これは、図2のシングルステップ実行停止モード
フラグ280が指定されているかどうかで判定する。こ
の処理は、シングルステップ実行毎に停止して、その状
態をデバッガで見るか、トレースのみを行い、シングル
ステップ実行毎には停止せずに実行するかどうかを判定
するものである。
【0050】シングルステップ実行停止モードが指定さ
れていれば、図2のシングルステップ実行判定フラグ2
82を設定する(ステップ413)。そして、シングル
ステップ実行毎に停止をするために、ブレークポイント
を発行する(ステップ414)。ここで発行するブレー
クポイントは、デバッガ111より設定したブレークポ
イントの処理とは異なる部分であるので、ステップ41
4で発行したブレークポイントであることを、図3の処
理を行なうブレークポインタ例外ハンドラ(共用ハンド
ラ)が判定可能となるように、シングルステップ実行判
定フラグを設定する。
【0051】ステップ414でのブレークポイントの発
行により、シングルステップ実行毎にブレークポイント
で停止することが可能となり、前記共用ハンドラは、デ
バッガが動作しているメモリ空間以外のブレークポイン
トも捕獲できるので、第2メモリ空間105のシングル
ステップ実行した状態を、第1メモリ空間104で動作
するデバッガ111で参照することが可能となる。
【0052】その後、シングルステップ実行判定フラグ
282の設定を解除する(ステップ415)。そして、
次にトレース実行モードを指定しているかどうかを判定
する(ステップ416)。トレース実行モードが指定さ
れていれば、ステップ417の処理へ移行する。
【0053】このステップ417では、トレースデータ
を図2における共有領域103のトレーステーブル25
0に保存する。これにより、デバッガ111からトレー
スデータを参照することが可能となる。また、第1メモ
リ空間104のプログラムからも参照可能となる。この
ステップ417の処理後、または、ステップ416にお
いて、トレース実行モードが指定されていなければ、ス
テップ418の処理へ移行する。
【0054】ステップ418では、シングルステップ実
行モードを終了するかどうか判定する。これは、図2の
シングルステップ実行モードフラグ280とトレース実
行モードフラグ281の値により判定する。すなわち、
どちらのフラグも指定されていなければシングルステッ
プ実行を終了するものとし、ステップ409の処理へ移
行する。また、どちらかのフラグが設定されていれば、
シングルステップ実行を続けるものとし、ステップ41
0の処理へ移行する。
【0055】以上の図3および図4で述べた処理を行な
う例外ハンドラは、マルチメモリ空間のプログラムによ
り共通であり、ブレークポイント、シングルステップ実
行を、メモリ空間の相違に関わらず、例外が発生する毎
に捕獲可能である。従って、それぞれ異なる仮想メモリ
空間を持つ複数のプログラムが連携して動作するマルチ
OS環境においても、その連携動作の順序に従い、マル
チメモリ空間のプログラムのデバッグが可能である。
【0056】また、マルチメモリ空間におけるプログラ
ムのデバッグにおいて、空間情報テーブルの各メモリ空
間情報を設定し、ブレークポイントテーブル230を各
メモリ空間(104,105)毎に設定することで、メ
モリ空間の増減に対して、容易に対応可能である。
【0057】以上、図1〜図4を用いて説明したよう
に、本例のマルチメモリ空間プログラムのデバッグシス
テムおよびそのデバッグ方法では、ブレークポイント例
外発生時に呼ばれる例外ハンドラ(共用ハンドラ)とシ
ングルステップ実行時に呼ばれる例外ハンドラ(デバッ
グ例外ハンドラ)を、各メモリ空間のプログラム共用す
る。
【0058】そして、デバッガの動作する第1のメモリ
空間とは異なる第2のメモリ空間のプログラムでも、第
2のメモリ空間のプログラムで発行されたブレークポイ
ント例外の例外ハンドラ(共用ハンドラ)が、デバッガ
の動作するメモリ空間に空間を切り替えて、再び、ブレ
ークポイントを発行することで、デバッガは、異なるメ
モリ空間のプログラムのブレークポイントを捕獲する。
【0059】これにより、マルチメモリ空間で同時に動
作するOSを含む複数のプログラム(マルチメモリ空間
プログラム)に対しても、1つのデバッガでデバッグ可
能であり、マルチメモリ空間プログラムの連携動作にも
対応してデバッグ可能であり、また、ブレークポイント
の設定を継続して利用可能であり、例えば、第2メモリ
空間で動作するOSの開発のため等に、本例のデバッグ
技術を有効に用いることができる。
【0060】また、本例によれば、各マルチメモリ空間
プログラムに対して、シングルステップ実行が設定され
ているとき、シングルステップ実行時の例外ハンドラ
が、ブレークポイントを発行し、前記共用ハンドラを呼
ぶことで、各プログラムはどのメモリ空間であるかに関
係なく、第1のメモリ空間で動作するデバッガがシング
ルステップ実行を捕獲することが可能である。
【0061】また、本例によれば、各マルチメモリ空間
プログラムに対して、シングルステップ実行が設定され
ているとき、シングルステップ実行時の例外ハンドラ
が、共通メモリ領域にトレースデータを格納すること
で、一つのメモリ空間上で各プログラムのトレースデー
タを参照することが可能である。
【0062】また、本例では、デバッガの動作するメモ
リ空間とは異なるプログラムのデータの状況を、各メモ
リ空間からアクセス可能な共通メモリ領域に書き込むこ
とで、デバッグに必要なデータを捕獲することが可能で
ある。これにより、ブレークポイント発行時のレジスタ
の状態を共通メモリ領域に格納し、これをデバッガまた
はアプリケーションで参照することが可能である。
【0063】また、本例では、共通メモリ領域に、デバ
ッグ用の例外ハンドラの設定するフラグを用意すること
で、フラグの値に従い、例外ハンドラの処理が変更可能
である。これにより、例外ハンドラのコードを変更する
ことなく、デバッグ時に用いる例外ハンドラと、通常用
いる例外ハンドラの処理とを区別することが可能であ
る。
【0064】尚、本発明は、図1〜図4を用いて説明し
た実施例に限定されるものではなく、その要旨を逸脱し
ない範囲において種々変更可能である。例えば、本例で
は、図1に示すように、デバッガ計算機110により、
通信装置114,108を介して、デバッグ対象計算機
100に対するデバッグを行なう構成としているが、こ
れは、デバッグ対象計算機100のOSにおける障害に
よりデバッグ対象計算機100がダウンした場合にも、
その情報が得られるようにしたものであり、そのような
危険性がなければ、デバッグ対象計算機100上でデバ
ッガ111を実行させる構成でも良い。
【0065】
【発明の効果】本発明によれば、マルチメモリ空間上で
同時に動作するOSを含むプログラム(マルチメモリ空
間プログラム)を一つのデバッガでデバッグすることが
でき、また、マルチメモリ空間プログラムの連携動作に
対応してデバッグすることができ、1台のコンピュータ
上でそれぞれ異なるメモリ空間で複数のオペレーティン
グシステム(OS)を連動させて動作させるマルチOS
環境で動作するマルチメモリ空間プログラムのデバッグ
を効率的に行なうことが可能である。
【図面の簡単な説明】
【図1】本発明に係わるデバッグシステムの構成例を示
すブロック図である。
【図2】図1における共通メモリ領域の構成例を示す説
明図である。
【図3】図1におけるデバッグシステムの本発明に係わ
るデバッグ方法の第1の処理手順例を示すフローチャー
トである。
【図4】図1におけるデバッグシステムの本発明に係わ
るデバッグ方法の第2の処理手順例を示すフローチャー
トである。
【符号の説明】
100:デバッグ対象計算機、101:プロセッサ、1
02:メモリ、103:共通メモリ領域、104:第1
メモリ空間、105:第2メモリ空間、106:デバッ
グ支援プログラム、107:バス、108:通信装置、
109:ケーブル、110:デバッガ計算機、111:
デバッガ(第1メモリ空間を対象とするデバッガ)、1
12:入力装置、113:出力装置、114:通信装
置、210:空間情報テーブル、211:ページテーブ
ル位置、212:スタックポインタ位置、220:割り
込みテーブル、221:ベースアドレス、222:割り
込みハンドラの設定(割込み設定)、230:ブレーク
ポイントテーブル、231:ブレークポイントアドレ
ス、232:元コード、233:領域(有効or無効)、
240:レジスタテーブル、241:レジスタ名、24
2:値、250:トレーステーブル、251:トレース
データ、260:動作空間フラグ(動作空間(第1,第
2))、270:デバッグモードフラグ(デバッグモー
ド(On or Off))、280:シングルステップ実行停
止モードフラグ(シングルステップ実行停止モード(On
or Off))、281:トレース実行モードフラグ(ト
レース実行モード(On or Off))、282:シングル
ステップ実行判定フラグ(シングルステップ実行判定
(On or Off))。
フロントページの続き (72)発明者 関口 知紀 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所システム開発研究所 内 (72)発明者 新井 利明 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所システム開発研究所 内 (72)発明者 冨田 理 愛知県尾張旭市晴丘町池上1番地 株式 会社日立製作所情報機器事業部内 (56)参考文献 特開 平6−19748(JP,A) 特開 平10−133910(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/46 - 9/54 G06F 11/28 - 11/34

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】数のオペレーティングシステム(O
    S)動作を行うプログラムをそれぞれ記憶する複数の
    メモリ空間を有する計算機と、上記プログラムのデバッ
    グ処理を行うデバッガ計算機とを有するデバッグ処理
    ステムであって、上記計算機は、 上記複数のOSのうち上記デバッガ計算機によりデバッ
    グ処理可能な第1のOSの動作を行うプログラムを記憶
    する 第1のメモリ空間と、 上記複数のメモリ空間のうち上記第1のメモリ空間を除
    第2のメモリ空間と、 上記複数のメモリ空間各々の設定情報を記憶し、上記複
    数のOSが共用可能な共通メモリ領域と、 上記第1のメモリ空間と上記第2のメモリ空間とに接続
    され、上記共通メモリ領域に記憶された上記複数のメモ
    リ空間各々の設定情報に従って、空間切替制御を行う制
    御部とを有し、 該計算機の制御部は、 ブレークポイント例外が上記第2
    のメモリ空間で発生した場合に、上記共通メモリ領域に
    記憶された上記複数のメモリ空間各々の設定情報に従っ
    て、上記プログラムの動作空間を、上記第2のメモリ空
    間から上記第1のメモリ空間へ切り替え、 上記デバッガ計算機は、 上記第1のメモリ空間で、上記ブレークポイント例外を
    発行 することを特徴するデバッグ処理システム。
  2. 【請求項2】 請求項1に記載のデバッグ処理システム
    であって、シングルステップ実行時、上記共通メモリ領域にトレー
    スデータを格納する手段を有 することを特徴とするデ
    ッグ処理システム。
  3. 【請求項3】 請求項1、もしくは、請求項2のいずれ
    かに記載のデバッグ処理システムであって、各メモリ空間で記憶された各プログラムのデバッグに必
    要なデータを、各メモリ空間から上記共通メモリ領域に
    書き込む手段を有 することを特徴とするデバッグ処理シ
    ステム。
  4. 【請求項4】 複数のオペレーティングシステム(O
    S)の動作を行うプログラムをそれぞれ記憶する複数の
    メモリ空間を有する計算機であって、 上記複数のOSのうちデバッグ処理可能な第1のOSの
    動作を行うプログラムを記憶する第1のメモリ空間と、 上記複数のメモリ空間のうち上記第1のメモリ空間を除
    く第2のメモリ空間と、 上記複数のメモリ空間各々の設定情報を記憶し、上記複
    数のOSが共用可能な共通メモリ領域と、 上記第1のメモリ空間と上記第2のメモリ空間とに接続
    され、上記共通メモリ領域に記憶された上記複数のメモ
    リ空間各々の設定情報に従って、空間切替制御を行うと
    共に、上記第1のメモリ空間でのデバッグ処理を行う制
    御部とを有し、 該制御部は、ブレークポイント例外が上記第2のメモリ
    空間で発生した場合に、上記プログラムの動作空間を上
    記第2のメモリ空間から上記第1のメモリ空間へ切り替
    えて、該第1のメモリ空間で上記ブレークポイント例外
    を発行する ことを特徴する計算機
  5. 【請求項5】 請求項4に記載の計算機であって、シングルステップ実行時、上記共通メモリ領域にトレー
    スデータを格納する手段 を有することを特徴とする計算
  6. 【請求項6】 請求項4、もしくは、請求項5のいずれ
    に記載の計算機であって、各メモリ空間で記憶された各プログラムのデバッグに必
    要なデータを、各メモリ空間から上記共通メモリ領域に
    書き込む手段を有す ることを特徴とする計算機
  7. 【請求項7】 複数のオペレーティングシステム(O
    S)の動作を行うプログラムをそれぞれ記憶する複数の
    メモリ空間を有する計算機における上記プログラムのデ
    バッグ処理方法であって、 上記計算機は、 ブレークポイント例外が、上記複数のOSのうちデバッ
    グ処理可能な第1のOSの動作を行うプログラムを記憶
    する第1のメモリ空間を除く第2のメモリ空間で発生し
    た場合に、上記複数のOSが共用可能な共通メモリ領域
    に記憶された上記複数のメモリ空間各々の設定情報に従
    って、上記プログラムの動作空間を、上記 第2のメモリ
    空間から上記第1のメモリ空間へ切り替えて、該第1の
    メモリ空間で、上記ブレークポイント例外を発行 するこ
    とを特徴するデバッグ処理方法。
  8. 【請求項8】 請求項7に記載のデバッグ処理方法であ
    ングルステップ実行時、上記共通メモリ領域にトレー
    スデータを格納することを特徴とするデバッグ処理
    法。
  9. 【請求項9】 請求項7、もしくは、請求項8のいずれ
    に記載のデバッグ処理方法であって、各メモリ空間で記憶された各プログラムのデバッグに必
    要なデータを、各メモリ空間から 上記共通メモリ領域に
    書き込むことを特徴とするデバッグ処理方法。
JP35238498A 1998-12-11 1998-12-11 デバッグ処理システムと計算機およびデバッグ処理方法 Expired - Fee Related JP3503504B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP35238498A JP3503504B2 (ja) 1998-12-11 1998-12-11 デバッグ処理システムと計算機およびデバッグ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP35238498A JP3503504B2 (ja) 1998-12-11 1998-12-11 デバッグ処理システムと計算機およびデバッグ処理方法

Publications (2)

Publication Number Publication Date
JP2000181748A JP2000181748A (ja) 2000-06-30
JP3503504B2 true JP3503504B2 (ja) 2004-03-08

Family

ID=18423713

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35238498A Expired - Fee Related JP3503504B2 (ja) 1998-12-11 1998-12-11 デバッグ処理システムと計算機およびデバッグ処理方法

Country Status (1)

Country Link
JP (1) JP3503504B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1942859A (zh) * 2003-10-01 2007-04-04 扎鲁纳股份有限公司 操作***
EP1716490B1 (de) * 2004-02-09 2017-08-23 Continental Teves AG & Co. oHG Einrichtung und verfahren zur analyse von eingebetteten systemen für sicherheitskritische rechnersysteme in kraftfahrzeugen
JP2007004516A (ja) * 2005-06-24 2007-01-11 Hitachi Software Eng Co Ltd 組込みシステムのプログラムデバッグ方法
JP2009175960A (ja) * 2008-01-23 2009-08-06 Panasonic Corp 仮想マルチプロセッサシステム

Also Published As

Publication number Publication date
JP2000181748A (ja) 2000-06-30

Similar Documents

Publication Publication Date Title
US7950001B2 (en) Method and apparatus for instrumentation in a multiprocessing environment
US7536605B2 (en) Injection of software faults into an operational system
US6988264B2 (en) Debugging multiple threads or processes
US5628017A (en) Method and system for providing event-response capabilities to pseudocode
JP2651916B2 (ja) インサーキット・エミュレータ
CN1489729A (zh) 单步处理
US7523446B2 (en) User-space return probes
EP2668578A1 (en) Controlling generation of debug exceptions
US7793160B1 (en) Systems and methods for tracing errors
US20030221035A1 (en) CPU life-extension apparatus and method
US7228543B2 (en) Technique for reaching consistent state in a multi-threaded data processing system
US8612720B2 (en) System and method for implementing data breakpoints
US7043717B2 (en) Debugging apparatus and method
US20030004671A1 (en) Remote debugging apparatus for executing procedure preregistered in database at program breakpoint
US20050229163A1 (en) Thread-scoped breakpoints
JP3503504B2 (ja) デバッグ処理システムと計算機およびデバッグ処理方法
US7526756B2 (en) Address watch breakpoints with basing pointers
US9317636B1 (en) System and method for stopping integrated circuit simulation
US7418631B2 (en) Program-controlled unit
JPH0922369A (ja) マルチタスキング方式のカーネルにおける不正動作検出方法
JP2677249B2 (ja) マルチプロセッサシステムのプログラムデバッグ方法およびデバッガ
JPH0581087A (ja) プロセサのモニタ方式
JPS62290942A (ja) デバツガ起動方式
KR940007827B1 (ko) 실시간 운영체계에서의 운영체계와 사용자 프로그램의 정합방법
JP2659366B2 (ja) デバッグ方法及びその装置

Legal Events

Date Code Title Description
A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20031201

LAPS Cancellation because of no payment of annual fees