JPS638947A - プログラムデバツグサポ−ト方式 - Google Patents

プログラムデバツグサポ−ト方式

Info

Publication number
JPS638947A
JPS638947A JP61153446A JP15344686A JPS638947A JP S638947 A JPS638947 A JP S638947A JP 61153446 A JP61153446 A JP 61153446A JP 15344686 A JP15344686 A JP 15344686A JP S638947 A JPS638947 A JP S638947A
Authority
JP
Japan
Prior art keywords
task
breakpoint
instruction code
address
area
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
JP61153446A
Other languages
English (en)
Inventor
Koichi Nakamoto
幸一 中本
Kiyomitsu Fukuda
福田 清光
Takashi Kojo
古城 隆
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP61153446A priority Critical patent/JPS638947A/ja
Publication of JPS638947A publication Critical patent/JPS638947A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、ブローラムデバッグサポート方式に関し、更
に詳細には複数のタスクを並行して処理する多重タスク
実行処理を行なう計算機システムにおいて、プログラム
の命令コード部を他のタスクと共有するようなタスクに
関連してデバッグを行なうのに適したプログラムデバッ
グサポート方式に関する。
〔従来の技術〕
計算機システムで動作するプログラムをデバッグする場
合、被デバツグプログラムの実行をブレークポイントと
呼ばれる箇所で中断してそのプログラムの内部状態を調
べ確認する方法が採用されている。
従来、プログラムに上記ブレークポイントを設定する方
式としては、計算機システムの外部から接続したデバッ
グモニタ装置を使用する方式と、計算機システム内で動
作するデバッグサポートプログラムを使用する方式とが
知られている。
前者の方式は、計算機システムのアドレスバスに外部か
らデバッグモニタ装置を接続し、このデバッグモニタ装
置において、アドレスバスに現れる命令フェッチアドレ
スと自身に設定されたブレークポイントアドレスとを比
較し、一致した時にデバッグモニタ装置から計算機シス
テムに割込みをかけてプログラムを停止させるものであ
る。
他方、後者の方式は、計算機システム内のデバッグサポ
ートプログラムが、1プログラムに対応して存在するテ
ーブルに、被デバツグプログラムのブレークポイントア
ドレスに格納された命令コードを退避し、その代わりに
その箇所に内部割込み命令を挿入し、その後プログラム
を実行させ、プログラムの実行がブレークポイントアド
レスに達することによりその内部割込み命令により内部
割込みを発生させてプログラムを停止させるものである
〔発明が解決しようとする問題点〕
上述した従来の方式では、ブレークポイントアドレスが
プログラムの命令コード部に対応して存在している。こ
のため、多重タスク処理において、プログラムの命令コ
ード部を複数のタスクで共有し、その命令コード部のア
ドレスをブレークポイントアドレスとした場合、その命
令コード部を共有するタスクの実行毎にそのタスクの実
行が中断されることになり、所望のタスクに対してのみ
ブレークポイントを設定することができないという問題
点があった。このため、従来は、タスクの実行が中断す
る度に、操作者は中断したタスクのタスク識別情報をタ
スクコントロールブロック等から読取り、この読取った
タスクが目的とするタスクか否かを判断し、目的とする
タスクであればそのときのプログラム状態を調べるとい
った操作を行なっており、デバッグ時の作業能率が悪い
という欠点があった。
本発明はこのような従来の欠点を解決したもので、その
目的は、プログラムの命令コード部を複数のタスクで共
有する多重タスク処理が行なわれていても、他のタスク
とは独立に目的とするタスクにのみ固存なブレークポイ
ントを設定することができるようにして、デバッグ作業
の能率を高めることにある。
〔問題点を解決するための手段〕
本発明は上記目的を達成するために、複数のタスクを並
行して処理する計算機システムにおいて、ブレークポイ
ントアドレス設定エリアと該エリアに対応する命令コー
ド退避エリアとを含み、タスクに対応して設けられたブ
レークポイント管理領域と、 タスクのコンテクスト切換え時に、切換え前に走行して
いたタスクに対応する前記ブレークポイント管理領域の
ブレークポイントアドレス設定エリアにブレークポイン
トアドレスが設定されていれば、該ブレークポイントア
ドレス設定エリアに対応する前記命令コード退避エリア
に退避されていた命令コードによって前記ブレークポイ
ントアドレスの命令コード部を復旧する復旧手段と、タ
スクのコンテクスト切換え時に、切換え後に走行するタ
スクに対応する前記ブレークポイント管理領域のブレー
クポイントアドレス設定エリアにブレークポイントアド
レスが設定されていれば、該ブレークポイントアドレス
設定エリアのブレークポイントアドレスが指示する命令
コード部の命令コードを前記ブレークポイントアドレス
設定エリアに対応する前記命令コード退避エリアに退避
させた後、前記ブレークポイントアドレスが指示する命
令コード部に内部割込み命令を挿入する命令置換手段と
、 前記内部割込み命令による割込みを捕捉しタスクの実行
を中断せしめる中断手段とを備える。
〔作用〕
デバッグの為に中断したいタスクに対応するブレークポ
イント管理領域のエントリにブレークポイントアドレス
を設定すれば、タスクのコンテクストがそのタスクのコ
ンテクストへ切換えられる際に、命令1換手段によって
ブレークポイントが設定され、タスクのコンテクストが
そのタスクから別のタスクのコンテクストへ切換えられ
る際には、復旧手段によって上記命令置換手段で設定さ
れたブレークポイントが削除されるので、その別のタス
クがたとえ目的とするタスクの命令コード部を共存する
ものであっても、内部割込みは発生せず、目的とするタ
スクがその命令コード部を実行したときにのみ内部割込
みによってタスクを中断することができる。
〔実施例〕
次に本発明の実施例について図面を参照して説明する。
第1図は本発明のプログラムデバッグサポート方式を実
施する計算機システムの一実施例のブロック図であり、
中央処理装置5と、主記憶装置1と、端末装置4とで構
成されている。
主記憶装置1には、一般プログラム占有メモリ空間2と
、オペレーティング・システム占有メモリ空間3とがあ
り、一般プログラム占有メモリ空間2には、この空間2
で走行するタスクの命令コード部21.〜21.lと、
その空間2で走行するタスクのデータ部22□〜221
*、 22,1.とが含まれている。
また、オペレーティング・システム占有メモリ空間3に
は、タスクのコンテクスト(実行環境)を切換えるタス
クディスパッチ中31と、タスク対応のエントリ32.
〜32、を有し、対応するエントリにそのタスクのブレ
ークポイントアドレスとこのアドレスにある命令コード
との対応を記憶し得るブレークポイント管理テーブル3
2と、ブレークポイント管理テーブル32を管理するモ
ジュール33と、ブレークポイントアドレスで発生する
内部割込みに対応する割込み処理を行なう割込み処理モ
ジエール34と、タスク対応のエントリ35.〜35.
を存するタスクコンテクスト退避領域35と、実行中或
いは中断中のタスクの識別情報を格納するタスクコント
ロールブロック36とが含められている。
第2図はブレークポイント管理テーブル32における一
つのタスクに対応するエントリの構成例を示す、ブレー
クポイント管理テーブル32の各エントリ32.〜32
.は、ブレークポイントアドレスを設定する為のエリア
BKADR(Bl[ADH,A−BKADR,)と、各
エリア8KADI?l −BKAI)11.に設定され
たブレークポイントアドレスに存在する命令コードを退
避する為のエリア5VCODE(SVCODEI 〜5
VCODE、 ”) と、そのエントリに登録されてい
るブレークポイントの個数を設定するためのエリアBK
Nとで構成されている。
次に本実施例の動作について、モジュール33で実行さ
れるブレークポイント設定処理例の流れを示す第3図、
モジュール33で実行されるブレークポイント解除処理
例の流れを示す第4図、およびブレークポイントの設定
されたタスクの制御の流れを示す第5図等を参照しなが
ら以下詳細に説明する。
[ブレークポイント設定処理] ブレークポイント設定時には、端末装置4から、アーギ
ュメントとしてブレークポイントを設定する対象タスク
のタスク識別子とブレークポイントアドレスとを持つブ
レークポイント設定コマンドを入力する。このブレーク
ポイント設定コマンドが与えられると、中央処理袋W5
はモジュール33の第3図に示した処理を開始する。即
ち、先ずそのブレークポイント設定コマンド中に含まれ
たタスク識別子を持つタスクに対応するブレークポイン
ト管理テーブル32のエントリに、その指定されたブレ
ークポイントアドレスと同一のアドレスのブレークポイ
ントが設定されているか否かを判断しく300) 、設
定されていなければ、そのエントリにおけるエリアBK
ADR+−BKADR,のうちの空きエリアに、指定さ
れたブレークポイントアドレスを登録しく301) 、
エリアBINのブレークポイント個数を1だけ増加させ
る(302) 。
[ブレークポイント解除処理] ブレークポイント解除時には、端末装置4から、アーギ
ユメントとしてブレークポイントを解除する対象タスク
のタスク識別子と解除すべきブレークポイントアドレス
とを持つブレークポイント解除コマンドを入力する。こ
のブレークポイント解除コマンドが与えられると、中央
処理装置5はモジュール33の第4図に示した処理を開
始する。aち、先ずそのブレークポイント解除コマンド
中に含まれたタスク識別子を持つタスクに対応するブレ
ークポイント管理テーブル32中のエントリに、その指
定されたブレークポイントアドレスと同一のアドレスの
ブレークポイントが設定されているか否かを判断しく4
00) 、設定されていれば、そのエントリにおける指
定されたブレークポイントアドレスを削除しく401)
 、エリアIKNのブレークポイント個数を1だけ減少
させる(402) 。
[ブレークポイントの設定されたタスクの制御]今、第
1図において、ある命令コード部たとえば命令コード部
211を共有する二つのタスクTl。
T2が存在するとし、タスクT1に対応するブレークポ
イント管理テーブル32のエントリ32.には前述した
ブレークポイント設定処理によりて、命令コード部21
1 のアドレスがブレークポイントアドレスとして登録
されており、タスクT2に対応するブレークポイント管
理テーブル32のエントリ32、には一つもブレークポ
イントが登録されていないとする。このような状態にお
いて、タスクTlからタスクT2に実行の制御が移り、
その後再びタスクT1に実行の制御が移る場合を考える
この場合、タスクT1からタスクT2に実行の制御が移
る際に、まず一般のタスク切換え処理で行なわれるよう
に、タスク切換え前に走行したタスクT1のコンテクス
トが対応するタスクコンテクスト退避領域35のエント
リ351に退避される(500)、そして、処理501
〜処理505で構成されたブレークポイント1換処理が
実行される。
このブレークポイント置換処理では、その処理501に
おいて、切換前のタスクであるタスクT1にブレークポ
イントが設定されていたか苦かを、タスクT1に対応す
るブレークポイント管理テーブル32のエントリ32.
中の領域BKNの値が0か否かにより判断する。今の例
では、命令コード部21+のアドレスがブレークポイン
トアドレスとしてエントリ32.に登録されており、こ
のブレークポイントアドレスが指示する命令コード部2
11の命令コードがエントリ32.に退避されている。
従って、上記処理501でブレークポイントが設定され
ていると判断され、次の処理502によって、タスクT
1に対応するブレークポイント管理テーブル32のエン
トリ321 におけるコード退避エリア5VCODHに
退避されている命令コードが、そのエリア 5VCOD
I!に対応するブレークポイントアドレスに従って、命
令コード部21.に復旧される。
次に、これから実行されるタスクT2にブレークポイン
トが設定されているか否かが、タスクT2に対応するブ
レークポイント管理テーブル32中のエントリ32□に
おけるエリアBKNの値がOか否かを判別することによ
り判断される(503) 、今の例ではタスクT2には
一つもブレークポイントが設定されていないので、次に
処理506が実行され、一般のタスク切換処理が実行さ
れる。即ち、タスク切換後に走行するタスクT2のコン
テクストが対応するタスクコンテクスト退避領域35の
エントリ35.から復旧され(506) 、タスクT2
に実行の制御が移される(507) 。
これによってタスクT2が走行を開始し、その実行の制
御が命令コード部21.に達したとすると、その命令コ
ード部2L の命令コードはタスクのコンテクスト切換
時に処理502によって復旧されているので、タスクT
2が命令コード部21+を実行しても内部割込みを発生
することはない。
次に、タスクT2から再びタスクTIに実行の制御が移
った場合、再び第5図の処理が開始され、処理500に
よって、タスクT2のコンテクストがタスクコンテクス
ト退避領域35のエントリ35.に退避され、ブレーク
ポイント置換処理が実行される。今回のブレークポイン
ト置換処理では、その処理501で切換前のタスクT2
にブレークポイントが登録されていないことが判別され
るので、処理502は実行されず、処理503へ進む。
そして、この処理503において、切換後のタスクT1
にブレークポイントが設定されていることが判別され、
処理504,505が実行されることになる。
この処理504においては、切換後のタスクT1に対応
するブレークポイント管理テーブル32のエントリ32
1に登録されたブレークポイントアドレスに従って、命
令コード部21+ の命令コードが、そのエントリ32
.のそのブレークポイントアドレスに対応するエリア5
VCODI!に退避され(504) 、次いで、そのエ
ントリ32+に登録されたブレークポイントアドレスに
従って、命令コード部21.に内部割込み命令が挿入さ
れる(505) 、そして、この後、タスク切換え後に
走行するタスクTIのコンテクストが対応するタスクコ
ンテクスト退避領域35のエントリ35.から復旧され
(506) 、タスクT1に実行の制御が移される(5
07) 。
タスクTIに実行の制御が移され、タスクT1が走行を
始め、その実行の制御がブレークポイントアドレスに達
すると、そのアドレスには処理505で内部割込み命令
が挿入されているので内部割込みが発生し、対応する割
込み処理モジュール34が実行されることになる。従っ
て、この割込み処理モジュール34によりタスクT1の
実行状態が走行状態から待ち状態に遷移させられ、タス
クT1の実行が中断される。このとき、端末装置4にタ
スクが中断された旨およびタスクコントロールプロンク
36の内容を参照して得られた中断タスクT1の識別情
報が出力される0本実施例では、タスクT1に対しての
みブレークポイントを設定したので、上記中断は必ずタ
スクT1の中断であり、操作者は直ちにタスクT1の実
行がブレークポイントによって中断したことを知ること
ができる。従って、従来のように改めて中断したタスク
が目的とするタスクであるか否かを調べる必要はなくな
る。
以上のような処理により、命令コード部を共有する複数
のタスクがある場合においても、各タスク毎に独立した
ブレークポイントの管理が可能となり、他のタスクとは
独立に目的とするタスクにのみブレークポイントを設定
し、そのブレークポイントにてそのタスクの実行を中断
させることが可能となる。なお、以上の説明では、タス
クT2にはブレークポイントを設定しなかったが、タス
クT2に対してもそれ独立にブレークポイントを設定し
得ることは勿論のことであり、複数のタスクに対して各
々独立にブレークポイントを設定した場合、中断時にど
のタスクが中断したかは端末装置の表示で識別でき、ブ
レークポイントアドレスの命令コード部を共有する他の
タスクであってそのタスクにはブレークポイントが設定
されていない非デバッグ対象タスクは中断しないので、
中断したタスクは必ずデバッグ対象のタスクであること
を直ちに認識することができる。また、本発明は、命令
コード部を他のタスクと共有しないタスクに対しても適
用し得ることは勿論のことである。
〔発明の効果〕
以上説明したように、本発明のプログラムデバッグサポ
ート方式では、タスクのコンテクスト切換時に切換前に
走行していたタスクの命令コード部にブレークポイント
が設定されていれば、元の命令コードを挿入して命令コ
ード部を復旧することによってそのブレークポイントを
削除し、切換後に走行すべきタスクにブレークポイント
が設定されていれば、そのブレークポイントアドレスが
指示する命令コード部の命令コードを退避させると共に
内部割込み命令を挿入してブレークポイントを設定する
ようにしたので、多重タスクを処理する計算機システム
において、命令コード部を共有する他のタスクとは独立
に、あるタスクにのみブレークポイントを設定すること
が可能となる。
従って、従来のようにブレークポイントで実行が中断す
る度に、中断したタスクがデバッグの対象タスクか否か
を判断する必要がなくなり、デバ。
グ作業の能率を向上することができ、従来のデバッグサ
ポート方式に比べてソフトウェアの生産性を大幅に向上
することができる効果がある。
【図面の簡単な説明】
第1図は本発明のプログラムデバッグサポート方式を実
施する計算機システムの一実施例のブロック図、 第2図はブレークポイント管理テーブルの内容説明図、 第3図はブレークポイント設定処理の一例を示す流れ図
、 第4図はブレークポイント解除処理の一例を来す流れ図
および、 第5図はタスク切換時の処理例を示す流れ図である。 図において、1・・・主記憶装置、2・・・一般プログ
ラム占有メモリ空間、3・・・オペレーティング・シス
テム占有メモリ空間、4・・・端末装置、5・・・中央
処理装置、21.〜21.・・・命令コード部、221
.〜22.s。 22、・・・データ部、31・・・タスクディスパッチ
ャ、32・・・ブレークポイント管理テーブル、321
〜32.・・・ブレークポイント管理テーブル32の各
エントリ、33・・・ブレークポイント管理テーブル3
2を管理するモジュール、34・・・割込み処理モジエ
ール、35・・・タスクコンテクスト退避領域、35.
〜35.・・・タスクコンテクスト退避領域35の各エ
ントリ、36・・・タスクコントロールブロック。

Claims (1)

  1. 【特許請求の範囲】 複数のタスクを並行して処理する計算機システムにおい
    て、 ブレークポイントアドレス設定エリアと該エリアに対応
    する命令コード退避エリアとを含み、タスクに対応して
    設けられたブレークポイント管理領域と、 タスクのコンテクスト切換え時に、切換え前に走行して
    いたタスクに対応する前記ブレークポイント管理領域の
    ブレークポイントアドレス設定エリアにブレークポイン
    トアドレスが設定されていれば、該ブレークポイントア
    ドレス設定エリアに対応する前記命令コード退避エリア
    に退避されていた命令コードによって前記ブレークポイ
    ントアドレスの命令コード部を復旧する復旧手段と、タ
    スクのコンテクスト切換え時に、切換え後に走行するタ
    スクに対応する前記ブレークポイント管理領域のブレー
    クポイントアドレス設定エリアにブレークポイントアド
    レスが設定されていれば、該ブレークポイントアドレス
    設定エリアのブレークポイントアドレスが指示する命令
    コード部の命令コードを前記ブレークポイントアドレス
    設定エリアに対応する前記命令コード退避エリアに退避
    させた後、前記ブレークポイントアドレスが指示する命
    令コード部に内部割込み命令を挿入する命令置換手段と
    、 前記内部割込み命令による割込みを捕捉しタスクの実行
    を中断せしめる中断手段とを具備したことを特徴とする
    プログラムデバッグサポート方式。
JP61153446A 1986-06-30 1986-06-30 プログラムデバツグサポ−ト方式 Pending JPS638947A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP61153446A JPS638947A (ja) 1986-06-30 1986-06-30 プログラムデバツグサポ−ト方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61153446A JPS638947A (ja) 1986-06-30 1986-06-30 プログラムデバツグサポ−ト方式

Publications (1)

Publication Number Publication Date
JPS638947A true JPS638947A (ja) 1988-01-14

Family

ID=15562725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61153446A Pending JPS638947A (ja) 1986-06-30 1986-06-30 プログラムデバツグサポ−ト方式

Country Status (1)

Country Link
JP (1) JPS638947A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079969A (ja) * 2005-09-14 2007-03-29 Matsushita Electric Ind Co Ltd デバッグシステム及び方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079969A (ja) * 2005-09-14 2007-03-29 Matsushita Electric Ind Co Ltd デバッグシステム及び方法

Similar Documents

Publication Publication Date Title
US5161226A (en) Microprocessor inverse processor state usage
US5319645A (en) Method for debugging and testing the correctness of programs
US5613114A (en) System and method for custom context switching
US7694182B2 (en) Debugging system and method
EP0638864B1 (en) Development support system for microcomputer with internal cache
JP2003515805A (ja) プロセッサシステム
JPS638947A (ja) プログラムデバツグサポ−ト方式
JPH0668725B2 (ja) データ処理システムにおける割込条件に応答する装置及び非同期割込条件に応答する方法
JPH0414376B2 (ja)
JPH0922369A (ja) マルチタスキング方式のカーネルにおける不正動作検出方法
JPS638946A (ja) プログラムデバツグサポ−ト方式
JPH01147640A (ja) マルチプログラミング・デバッグ装置
JPS63177231A (ja) 並列プログラムデバグ方式
JPS61180344A (ja) 高級言語のステツプ実行システム
JPH02139630A (ja) オンラインタスク入替え装置
JPH0262633A (ja) プログラム間通知方式
JP2591818B2 (ja) 補助機能の選択制御方法
JP2954006B2 (ja) エミュレーション装置およびエミュレーション方法
JPH11184712A (ja) 情報処理装置
JPS63167940A (ja) マルチプログラミング指向cpu
JPH01147639A (ja) マルチプログラミング・デバッグ装置
JPH05204710A (ja) イベントトレース装置
JPH04138535A (ja) ソースレベルデバッグ方式
JPS61267137A (ja) 割込み動作制御方式
JPH04195539A (ja) システムコール処理方式