JPH07210421A - スレッド環境におけるデバッグ方法 - Google Patents

スレッド環境におけるデバッグ方法

Info

Publication number
JPH07210421A
JPH07210421A JP6003162A JP316294A JPH07210421A JP H07210421 A JPH07210421 A JP H07210421A JP 6003162 A JP6003162 A JP 6003162A JP 316294 A JP316294 A JP 316294A JP H07210421 A JPH07210421 A JP H07210421A
Authority
JP
Japan
Prior art keywords
thread
stack
area
write
write protection
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
JP6003162A
Other languages
English (en)
Inventor
Yasuo Tanaka
泰夫 田中
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co 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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP6003162A priority Critical patent/JPH07210421A/ja
Publication of JPH07210421A publication Critical patent/JPH07210421A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】スレッド環境において書込保護領域への書込に
よる不具合をデバッグする際、該書込保護領域の1つと
してスタック領域を設定し、複数のスタックの書込保護
管理を適切に行うことにより、前記不具合に対する有効
なデバッグを行うことができる。 【構成】スレッド環境で、書込保護領域への書込による
不具合をデバッグする際、書込保護領域の1つとしてス
タック領域を設定し、スレッドのディスパッチ時に、ア
クティブになるスレッドのスタック領域に対して書込保
護を解除するとともに、ディアクティブになるスレッド
のスタック領域に対して書込保護を行う。そして、書込
保護されているスタック領域への書込による不具合を検
出し、該不具合を有効にデバッグする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、スレッド環境で、特定
部分への書込が起きた不具合をデバッグするスレッド環
境におけるデバッグ方法に関し、特に、特定部分をスタ
ック領域とした場合のスレッド環境におけるデバッグ方
法に関する。
【0002】
【従来の技術】従来、スレッド環境において書込保護を
用いてデバッグする場合、該書込保護領域への書込命令
の実行の存在により不具合を検出し、該書込命令をエミ
ュレートをすることにより、デバッグを行っていた。
【0003】このエミュレートによるデバッグとは、書
込保護領域への書込命令が実行されたものと仮定してそ
の後の処理を行わせるものであり、この場合、スタック
ポインタ、プログラムカウンタ等の複雑な変更処理を行
う必要があり、デバッグ処理の工数が大であり、手間と
時間がかかっていた。
【0004】ここで、スレッド環境とは、タスクすなわ
ちプロセスをさらに分割した実行単位であるスレッド同
士が互いに独立して並列に実行することが可能な環境を
いう。特に、このスレッド環境においては、同一アドレ
ス空間を複数のスレッドが走行する。
【0005】なお、特開平4−145544号公報に
は、デバッグのためにブレークするスレッドに対応する
ブレークポイント判定回路にブレークポイントアドレス
を設定し、スレッドの実行の切り替え時に次に実行する
スレッドの識別子をレジスタに設定し、デコーダを通じ
て該スレッドに対応するブレークポイント判定回路が選
択され、該スレッドのブレークポイントの判定は前記選
択されたブレークポイント判定回路によって行うデバッ
グ装置が記載され、これにより、目的とするスレッドが
目的とするブレークアドレスに到達した時のみに実機の
実行がブレークされる。
【0006】また、特開平3−70054号公報には、
ユーザの所定の操作が行われたときのみ一定時間、記憶
手段の書込禁止を解除することにより、メモリプロテク
ト制御の簡略化と確実化を可能とした電子機器が記載さ
れている。
【0007】さらに、特開昭62−232054号公報
には、スタックフレーム記述子を、スタックフレームが
形成される主記憶上のセグメントとは異なり、かつプロ
シージャによる書込がオペレーティング・システムによ
る記憶保護機能に基づき禁止されているセグメント内で
管理する構成が記載されており、これによれば、ハード
ウェアによる既存の記憶保護機能をそのまま利用してス
タックフレーム記述子を誤書込から有効に保護すること
ができる。
【0008】
【発明が解決しようとする課題】前述したように、従
来、スレッド環境において書込保護を用いてデバッグす
る場合、該書込保護領域への書込命令の実行の存在によ
り不具合を検出し、該検出した箇所のデバッグ処理を行
っていた。
【0009】ところで、複数のスレッドが使用するスタ
ック領域を書込保護領域に設定する場合、スレッド環境
においては、複数のスレッドが同一アドレス空間を走行
するため、複数のスレッドが使用するスタックに対する
書込保護の設定は、頻繁にアクティブになったり、ディ
アクティブになったりするため、正常な書込保護の設定
と書込保護の解除の設定は、容易ではないという問題点
があった。
【0010】なお、特開昭62−232054号公報に
記載されたスタックフレーム記述子の管理方式では、オ
ペレーティング・システムの記憶保護機能を用いてスタ
ックフレーム記述子を保護しているが、スタックを複数
有するスレッド環境に対応するものではない。
【0011】そこで、本発明は、かかる問題点を除去
し、スレッド環境において書込保護領域への書込による
不具合をデバッグする際、該書込保護領域の1つとして
スタック領域を設定し、複数のスタックの書込保護管理
を適切に行うことにより、前記不具合に対する有効なデ
バッグを行うことができるスレッド環境におけるデバッ
グ方法を提供することを目的とする。
【0012】
【課題を解決するための手段】本発明は、スレッド環境
で、書込保護領域への書込による不具合をデバッグする
スレッド環境におけるデバッグ方法において、前記書込
保護領域の1つとしてスタック領域を設定し、スレッド
のディスパッチ時に、アクティブになるスレッドのスタ
ック領域に対して書込保護を解除するとともに、ディア
クティブになるスレッドのスタック領域に対して書込保
護を行うことを特徴とする。
【0013】
【作用】本発明では、スレッド環境で、書込保護領域へ
の書込による不具合をデバッグする際、前記書込保護領
域の1つとしてスタック領域を設定し、スレッドのディ
スパッチ時に、アクティブになるスレッドのスタック領
域に対して書込保護を解除するとともに、ディアクティ
ブになるスレッドのスタック領域に対して書込保護を行
う。
【0014】これにより、書込保護されているスタック
領域への書込による不具合を検出することができ、該不
具合を有効にデバッグすることができる。
【0015】
【実施例】以下、図面を参照して本発明の一実施例につ
いて説明する。図1は、スレッド環境でのアドレス空間
を示す図である。このアドレス空間は図示しないメモリ
のアドレス空間であり、この同一アドレス空間には複数
のスレッドが走行している。
【0016】図1において、アドレス空間1には、テキ
スト領域1a、データ領域1b、スタック領域1c、キ
ュー領域1d、ディスパッチャ1eを有している。
【0017】テキスト領域1aには、実行されるスレッ
ドが書込保護されているか否かを検出し、さらにこの書
込保護された領域がスタック領域か否かを検出する検出
ルーチン2を有している。
【0018】スタック領域1cには、複数のスレッドに
対応したスタックS1〜Snを有している。このスタッ
ク領域S1〜Snは、対応するスレッドがアクティブで
ないときに書込保護される。
【0019】キュー領域1dには、イベント待ちのスレ
ッドを格納するキューであるイベント待ちキュー3a、
イベント待ちでないスレッドを格納するキューであるラ
ンキュー(実行(RUN)キュー)3b、およびデバッ
グ処理を行うデバッガ4を有している。
【0020】ディスパッチャ1eは、複数のスレッドの
切り替えを行うものであり、このディスパッチャ領域に
は、現在のプログラムカウンタの値や現在使用している
スタックのスタックポインタ等の現況情報であるコンテ
キストが格納されているコンテキスト領域5、およびス
タックがディアクティブになるときに一時的な作業スタ
ックとなる作業スタック6を有している。
【0021】また、オペレーティング・システム(O
S)10は、図示しないCPU等のハードウェアとの間
の各種処理の管理を行う。
【0022】上述したように、このアドレス空間1内に
は複数のスレッドが走行して並列に処理されることにな
るが、この複数のスレッドの切り替えはディスパッチャ
1eにより処理される。このディスパッチャ1eによる
複数のスレッドの切替処理について、以下説明する。
【0023】図2は、ディスパッチャ1eによる複数の
スレッドの切替処理およびスタックの書込保護処理手順
を示すフローチャートである。図2において、ディスパ
ッチャ1eは、現在、ディスパッチされているスレッド
のプログラムカウンタやスタックポインタ等のコンテキ
ストをコンテキスト領域5に格納する(ステップ10
0)。そして、現在ディスパッチされているアクティブ
なスレッドはランキュー3bに格納され、現在ディスパ
ッチされておらず、イベント待ちのスレッドはイベント
待ちキュー3aに格納される(ステップ101)。その
後、ディスパッチャ1eは、次にディスパッチされるス
レッドは、現在アクティブなスレッドと同じか否かを判
断する(ステップ103)。すなわち、同じスタックを
続けて使用するか否かを判断する。
【0024】ステップ103で、次にディスパッチされ
るスレッドが現在アクティブなスレッドと同じでない場
合、すなわち異なるスタックを使用する場合は、次にデ
ィスパッチされるスレッドをランキュー3bから選択
し、このスレッドのスタックの書込保護を解除する(ス
テップ104)。そして、現在アクティブなスレッドの
スタックを作業用スタック6に切り替える(ステップ1
05)。これにより、現在アクティブなスレッドは、ス
タック領域の自己のスレッドのスタックから、作業スタ
ック6に切り替えられ、残りの処理がある場合に、この
作業用スタックにおいてスタックを行うことになる。さ
らに、この作業用スタックへの移行後、移行前の現在ア
クティブなスレッドのスタックを書込保護する(ステッ
プ106)。そして、現在アクティブなスレッドから、
次のディスパッチされるスレッドにディスパッチされる
(ステップ107)。
【0025】一方、ステップ103で、次にディスパッ
チされるスレッドが現在アクティブなスレッドと同じ場
合は、ステップ107に移行し、そのままの状態を維持
し、次のディスパッチされるスレッドにディスパッチさ
れる。
【0026】このようにして、ディスパッチャは、スレ
ッドのディスパッチと、ディスパッチされる前後のスレ
ッドのスタックの書込保護および書込保護の解除をスレ
ッドの実行に影響を与えずに、しかも、できる限りアク
ティブでないスレッドのスタックを書込保護状態に設定
している。
【0027】次に、このディスパッチに伴う書込保護と
書込保護の解除の切り替え要領を具体的に説明する。
【0028】図3は、スレッドのディスパッチに伴う書
込保護状態の変化を示す図である。ここで、スレッドA
は、現在アクティブなスレッドであり、スレッドBは次
にディスパッチされるスレッドであり、スレッドAとス
レッドBは、同じスタックを使用する同じスレッドでな
いとする。
【0029】図3において、時点1〜5の順序で説明す
ると、まず時点1において、スレッドAは、現在アクテ
ィブであるため、このスレッドAのスタックは書込保護
が解除されている。一方、スレッドBは、次にディスパ
ッチされるもので、ディアクティブであるため、スレッ
ドBのスタックは書込保護の状態となっている。
【0030】時点2において、スレッドAからスレッド
Bにディスパッチされるため、スレッドBのスタックの
書込保護は解除される。
【0031】時点3においては、スレッドAが使用する
スタックが、作業用スタックに切り替えられ、スレッド
Aはこの作業用スタックを使用する。
【0032】次の時点4においては、スレッドAのスタ
ックは使用されていないため、書込保護に再設定され
る。
【0033】これにより、スレッドAからスレッドBへ
のディスパッチに伴って、それぞれのスレッドのスタッ
クの使用に支障なく、スレッドAのスタックとスレッド
Bのスタックの状態が逆転されるもとなり、ディアクテ
ィブなスレッドの書込保護状態が維持されることにな
る。
【0034】次に、書込保護領域に対する書込命令が生
じるという不具合に対するデバッグ処理について説明す
る。図4は、検出ルーチン2による書込保護領域に対す
る書込の不具合を検出した場合のデバッグ指示処理手順
を示す図である。図4において、検出ルーチン2は、ス
レッドのアクセス例外が生じた場合に、このアクセス例
外が書込保護状態であるスタック領域であるか否かを判
断する(ステップ200)。そして、書込保護状態であ
るスタックに対する書込のアクセスである場合は、デバ
ッガ4を呼び出し、デバッガ4は、このアクセス例外が
生じたスタックのスタックポインタおよびスレッドのプ
ログラムカウンタの値をプリント出力する(ステップ2
01)。そして、アクセス例外が生じたスレッドのスタ
ックの書込保護を一時解除して、書込命令を実行させ、
その後一時解除から書込保護に再設定させる。
【0035】一方、アクセス例外が生じた書込保護の特
定部分がスタック領域でない場合は、このスレッドの書
込命令をディスパッチャのコンテキスト領域5に格納さ
れている現在のスレッドのスタックポインタやプログラ
ムカウンタの値をもとに、該書込命令をエミュレートし
て(ステップ202)、このエミュレートの後に次のス
レッドを実行させる。
【0036】このようにして、上述した実施例において
は、複数のスレッドに対応する複数のスタックの書込保
護状態を、ディスパッチャによるスレッドのディスパッ
チに適切に対応させて、書込保護状態を維持し、この維
持された書込保護状態のスタックへのアクセス例外が生
じた場合に、書込保護された特定部分に対応させたデバ
ッグを行うようにしている。
【0037】
【発明の効果】以上説明したように、本発明では、スレ
ッド環境で、書込保護領域への書込による不具合をデバ
ッグする際、前記書込保護領域の1つとしてスタック領
域を設定し、スレッドのディスパッチ時に、アクティブ
になるスレッドのスタック領域に対して書込保護を解除
するとともに、ディアクティブになるスレッドのスタッ
ク領域に対して書込保護を行うようにしている。
【0038】従って、複数のスレッドのディスパッチに
伴い、ディアクティブなスレッドのスタックが適切なタ
イミングで書込保護状態に設定され、ディアクティブな
スレッドのスタックは、常に書込保護状態に設定される
という利点を有する。
【0039】また、このディアクティブなスレッドのス
タックが書込保護状態に設定されることにより、書込保
護のスタックへの書込の不具合に対するデバッグが可能
となるという利点を有する。
【図面の簡単な説明】
【図1】スレッド環境でのアドレス空間を示す図。
【図2】ディスパッチャ1eによる複数のスレッドの切
替処理およびスタックの書込保護処理手順を示すフロー
チャート。
【図3】スレッドのディスパッチに伴う書込保護状態の
変化を示す図。
【図4】検出ルーチン2による書込保護領域に対する書
込の不具合を検出した場合のデバッグ指示処理手順を示
す図。
【符号の説明】
1 アドレス空間 1a テキスト領域 1b データ
領域 1c スタック領域 1d キュー領域 1e ディス
パッチャ 2 検出ルーチン 3a イベント待ちキュー 3b
ランキュー 4 デバッガ 5 コンテキスト領域 6 作業用スタ
ック 10 オペレーティング・システム

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 スレッド環境で、書込保護領域への書込
    による不具合をデバッグするスレッド環境におけるデバ
    ッグ方法において、 前記書込保護領域の1つとしてスタック領域を設定し、 スレッドのディスパッチ時に、アクティブになるスレッ
    ドのスタック領域に対して書込保護を解除するととも
    に、ディアクティブになるスレッドのスタック領域に対
    して書込保護を行うことを特徴とするスレッド環境おけ
    るデバッグ方法。
JP6003162A 1994-01-17 1994-01-17 スレッド環境におけるデバッグ方法 Pending JPH07210421A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6003162A JPH07210421A (ja) 1994-01-17 1994-01-17 スレッド環境におけるデバッグ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6003162A JPH07210421A (ja) 1994-01-17 1994-01-17 スレッド環境におけるデバッグ方法

Publications (1)

Publication Number Publication Date
JPH07210421A true JPH07210421A (ja) 1995-08-11

Family

ID=11549668

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6003162A Pending JPH07210421A (ja) 1994-01-17 1994-01-17 スレッド環境におけるデバッグ方法

Country Status (1)

Country Link
JP (1) JPH07210421A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6734992B1 (en) * 1998-12-28 2004-05-11 Canon Kabushiki Kaisha Image processing apparatus, image processing method and memory medium
CN1324471C (zh) * 2004-08-18 2007-07-04 中兴通讯股份有限公司 对指定进程私有数据区和堆栈区实施保护的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6734992B1 (en) * 1998-12-28 2004-05-11 Canon Kabushiki Kaisha Image processing apparatus, image processing method and memory medium
CN1324471C (zh) * 2004-08-18 2007-07-04 中兴通讯股份有限公司 对指定进程私有数据区和堆栈区实施保护的方法

Similar Documents

Publication Publication Date Title
US5235700A (en) Checkpointing mechanism for fault-tolerant systems
US8099636B2 (en) System and method for protecting memory stacks using a debug unit
JPH0512045A (ja) 計算機システムの動作継続方法および装置
KR100495240B1 (ko) 프로세서 시스템
US5257269A (en) Error controller for use in debugging microprocessor
JPH02294739A (ja) 障害検出方式
JPH07210421A (ja) スレッド環境におけるデバッグ方法
JPH09198258A (ja) タスクスタックオーバーフロー検出回路
JPH0245838A (ja) プログラム実行状態監視方法
EP0113982B1 (en) A data processing system
JPH04266141A (ja) スタックオーバーフロー検出方式
JPH0668725B2 (ja) データ処理システムにおける割込条件に応答する装置及び非同期割込条件に応答する方法
JPS61141047A (ja) 障害情報の退避方式
WO1990005951A1 (en) Method of handling unintended software interrupt exceptions
JPH07210420A (ja) スレッド環境におけるデバッグ方法
KR100206472B1 (ko) 전전자교환기에서 시스템 장애관리 및 복구방법
CA2065764A1 (en) Multitask controlling method and apparatus for use in implementing the same
JPH0484224A (ja) スタックエリア保護回路
JP2002251299A (ja) プログラムトレース装置
JPH0830485A (ja) デバッグ装置
JPH03269628A (ja) 例外処理方式
JPH02183342A (ja) 割込み制御装置
JP2000066923A (ja) エミュレータにおける全命令トレースの制御方法
JPS6146535A (ja) 擬似エラ−設定制御方式
CN108415788A (zh) 用于对无响应处理电路作出响应的数据处理设备和方法