JP2003508864A - スレッド志向デバッギング - Google Patents

スレッド志向デバッギング

Info

Publication number
JP2003508864A
JP2003508864A JP2001522175A JP2001522175A JP2003508864A JP 2003508864 A JP2003508864 A JP 2003508864A JP 2001522175 A JP2001522175 A JP 2001522175A JP 2001522175 A JP2001522175 A JP 2001522175A JP 2003508864 A JP2003508864 A JP 2003508864A
Authority
JP
Japan
Prior art keywords
thread
register
opcode
processor
breakpoint
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
JP2001522175A
Other languages
English (en)
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.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2003508864A publication Critical patent/JP2003508864A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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)【要約】 スレッドの演算コードと置き換えられたスレッド内の区切り点標識に上書きしないで、プログラムスレッドをデバッグする方法が提供される。区切り点に達した後で、演算コードは、利用するために専用レジスタに読み込まれる。スレッドのデバッグを容易にし、その間少なくとも1つの他のスレッドを実行し続ける方法もまた提供される。

Description

【発明の詳細な説明】
【0001】 (発明の背景) 1.発明の分野 本発明はコンピュータプログラムをデバッグすることに関し、より詳細には、
多数のスレッドをデバッグする能力に関する。
【0002】 2.関連技術の説明 コンピュータプログラムのデバッギングを容易にするために、多くの異なる方
法が使用される。1つの一般的な方法は、所定の事象が発生するとプログラムス
レッド(すなわち、命令のシーケンス)の実行を停止し、様々な記憶場所の内容
、例えばレジスタ、RAMのアドレスなどを調査することである。このようにス
レッドを停止するのに非常に有用な装置は区切り点である。
【0003】 現在実行中のスレッドの実行を停止させるための区切り点は、様々な方法で発
生するように設定することができる。例として、特定の命令が実行される時に発
生する区切り点、および特定の記憶場所がアクセスされる時に発生する区切り点
が含まれる。特定の命令の種類の区切り点を使用する代表的な例を図1Aから1
Fに示す。
【0004】 図1Aは、デバッグすべきスレッドの命令シーケンスを図示する。命令の各々
は、それぞれの命令と関連する任意のパラメータ(例えば、オペランド、アドレ
ス、データなど)が後に続く演算コードを含む。一般に、各演算コードは1バイ
トの長さである。この例では、シーケンスは3つの命令を含む。すなわち、 2つの関連したパラメータA1およびA2が後に続く演算コードAを含む命令
A、 1つの関連したパラメータB1が後に続く演算コードBを含む命令B、および 2つの関連したパラメータC1およびC2が後に続く演算コードCを含む命令
Cである。
【0005】 従来、これらの命令の各々は、プロセッサ内のプログラムカウンタの制御の下
に示されるシーケンスで読み出され、また実行される。
【0006】 図1Bは、区切り点がどのようにしてデバッグすべきスレッドに設定されるか
を示す。特に、デバッガによって、HALT演算コードが演算コードBの代わり
に置き換えられる。
【0007】 図1Cは、プロセッサが命令Aを実行しプログラムカウンタの値PCを、HA
LT演算コードが格納されているアドレスにインクリメントした瞬間を示す。こ
の時に、プロセッサはスレッドの実行を停止し、直接的または間接的にデバッガ
に区切り点に達したことを知らせる。このことは様々な方法で行うことができる
。例えば、プロセッサがデバッガに割込みを活動化することによって、または、
デバッガが周期的にプロセッサの状態をポーリングしてプロセッサがHALT演
算コードに達したことを検出することによって行われる。
【0008】 図1Dに示すように、デバッガはHALT演算コードの通知に応答して、停止
されたスレッドの値PCを読んでどの1つの区切り点(場合によっては、多くの
区切り点の1つ)に到達しているかを決定する。それから、デバッガは、対応す
る演算コード(すなわち、図1BでHALT演算コードと置き換られた「演算コ
ードB」)をメモリ20に書き込み、プロセッサに次の命令を実行するように指
令する。この命令を実行する際に、プロセッサは新しく書き込まれた演算コード
Bを読み出し、プログラムカウンタをインクリメントして関連した単一バイトパ
ラメータB1の場所を表示する。
【0009】 図1Eに示すように、それから、プロセッサは関連したパラメータB1を読み
出し、プログラムカウンタを演算コードCのアドレスにインクリメントする。命
令Bが完了すると、プロセッサは停止し、デバッガが制御を取り戻す。
【0010】 図1Fに示すように、プロセッサが命令Bを実行した後で、しかし演算コード
Cを読み出す前に、デバッガはプログラムの流れで演算コードBをHALT演算
コードで再び置き換える。これは、スレッド内に区切り点を保持するために必要
である。
【0011】 図1に示す例から、単一スレッドの区切り点デバッギングでも複雑で時間のか
かるプロセスであることを理解することができる。
【0012】 (発明の概要) 本発明の目的は、知られている区切り点デバッギング方法よりも簡単で時間の
かからない区切り点デバッギングの方法を提供することである。
【0013】 本発明のさらに他の目的は、マルチスレッドソフトウエアの環境で、1つのス
レッドのデバッグを容易にし、その間他のスレッドを実行し続けるデバッグの方
法を提供することである。
【0014】 本発明の一形態に従って、プログラムスレッドをデバッグする方法は、プロセ
ッサによって実行される命令のシーケンスを有し、 少なくとも1つの命令の選ばれた部分を区切り点標識で置き換えるステップと
、 所定の記憶場所に選ばれた部分を保管するステップと、 区切り点標識に達するまで、命令を順に行うステップと、 区切り点標識に上書きしないで、選ばれた部分を所定の記憶場所から読み出す
ステップと、 複数の所定のデバッグ操作の少なくとも1つを実行するステップとを含む。
【0015】 本発明の他の形態に従って、プロセッサによって実行可能な複数のプログラム
スレッドを選択的にデバッグすることを容易にする方法は、 前記スレッドごとに、それぞれの文脈の実行状態標識を設けるステップと、 状態標識が第1の状態にある各スレッドを実行するステップと、 状態標識が第2の状態にある各スレッドを実行しないステップとを含む。
【0016】 用語「メモリ」は、ここで使用されているように、それが使用される方法と首
尾一貫するように一般的に解釈される意図であり、制限なく、RAM、DRAM
、ROM、レジスタ、およびそのような装置の組合せを含んだ、様々な種類の揮
発性および不揮発性装置を含むことに留意されたい。「専用」メモリは、プロセ
ッサに知られている1つまたは複数の特定の記憶場所をメモリが持つことを意味
する。しかし、この記憶場所は固定されている必要はなく、プロセッサの制御の
下に変わる可能性がある。また、ここで使用されているように、用語「ポインタ
」は、記憶場所を識別する任意の値を意味する。さらに、「アクセスすること」
はメモリからデータを得ること、またはメモリにデータを入れることを意味する
【0017】 (好ましい実施形態の説明) 図2の処理システムは、プロセッサ10およびメモリ20を含む。例示的なプ
ロセッサ10は、ハードウェア加速ユニットであり、クロックパルスを使用して
プログラムカウンタレジスタで識別された命令を順に行う。一般に、プログラム
カウンタレジスタは、プロセッサによって読み出され実行される次の命令の記憶
場所を含む。
【0018】 プロセッサは、文脈レジスタの集合12、命令復号器14、論理演算装置16
、SS OPCODEレジスタ17、SS TC PTRレジスタ18、および
OPCODE IS VALID(演算コード有効)フラグを含むレジスタ19
を含む。この例示的な実施形態で、メモリ20は、特に複数のスレッド文脈を格
納するための多数の記憶場所を有するRAMで構成される。
【0019】 プロセッサ10およびメモリ20は、共通バス30に接続されており、互いに
通信しさらにバスに接続されている他のハードウエアと通信する。バスは、アド
レス、割込み、データ、読み出しストローブ、書込みストローブ、および装置選
択ストローブのような情報を伝えるためのそれぞれの線路を含む。これは、プロ
セッサおよびメモリと共に共通シリコン基板に少なくとも部分的に形成された高
速バスであることが好ましい。
【0020】 文脈レジスタ集合12は、プロセッサ10で現在実行されているスレッドの文
脈を含む複数のレジスタで構成される。好ましい実施形態では、レジスタ集合1
2は、 アクセスすべきメモリ20中の次の命令のアドレスを識別するために、プロセ
ッサが絶えず更新する値PCを含むプログラムカウンタレジスタ121と、 プロセッサによって現在実行されているスレッドの文脈が格納されるべきメモ
リアドレスを表示するポインタTC PTRを保持するためのレジスタ122と
、 プロセッサで現在実行されているスレッドと関連したSTATUS情報を保持
するためのレジスタ123と、 特に、メモリ20から読み出されるかまたは論理演算装置16で生成される追
加のスレッド文脈の情報およびデータを保持するための1つまたは複数の追加の
レジスタ125を含む。
【0021】 命令復号器14は、メモリ20から読み出された命令を低レベルの演算コード
に変換するための、シーケンサかマイクロシーケンサのような従来のハードウエ
ア構成要素である。論理演算装置16もまた従来のハードウエア構成要素である
【0022】 SS OPCODEレジスタ17、SS TC PTRレジスタ18、および
SS OP FLAGレジスタ19は、区切り点デバッギングに特に関係がある
情報を保持するために設けられる。特に、レジスタ17はデバッグされているス
レッド(デバッグされるスレッド)からの演算コードを保持し、レジスタ18は
デバッグされるスレッドと関連したポインタSS TC PTRを保持し、さら
にレジスタ19はレジスタ17と関連したフラグを保持する。
【0023】 動作において、プロセッサは、一度に1つのスレッドを実行するが(現在スレ
ッド)、様々な手段で、例えば、内部タイマ割込みによって、外部割込みによっ
て、または現在スレッド自体の命令によって、任意の他のスレッドに切り換える
ことができる。当技術分野ではよく知られているように、これは一般に、現在ス
レッドの文脈を(文脈レジスタ集合12に保持される)、レジスタ122に含ま
れるポインタTC PTRで表示されるメモリアドレスに格納することで行われ
る。それから、プロセッサは、実行すべき次のスレッドのそれぞれの文脈を文脈
レジスタ集合12に読み込む。
【0024】 図3Aから3Eは、本発明の実施形態に従った区切り点デバッギングの例を一
般的に示す。比較を容易にするために、図1Aから1Fに示した知られている方
法で使用された同じシーケンスの命令を、この例で使用する。
【0025】 図3Aから3Cは、図1Aから1Cと全く同じである。すなわち、図3Aは区
切り点演算コードを挿入する前のシーケンスを示す。図3Bはデバッガが区切り
点演算コードHALTに置き換えたことを示す。図3Cは、プロセッサが、プロ
グラムカウンタレジスタ121の値PCを、HALT演算コードが格納されてい
るアドレスにインクリメントした瞬間を示す。この時に、プロセッサはまたスレ
ッドの実行も停止し、区切り点に達したことをデバッガに知らせる。
【0026】 図3Dに示すように、デバッガはHALT演算コードの通知に応答して、停止
されたスレッドの値PCを読む。しかし、HALT演算コードの上に演算コード
B(HALT演算コードと置き換えられた)を書かないで、プロセッサは演算コ
ードBをSS OPCODEレジスタ17に書き込み、HALT演算コードをス
レッドに残し、さらにOPCODE IS VALIDのフラグを設定する。そ
れから、プロセッサはプログラムカウンタをインクリメントして、関連した単一
バイトパラメータB1の場所を表示する。
【0027】 図3Eに示すように、プロセッサは関連したパラメータB1を読み出し、プロ
グラムカウンタを演算コードCのアドレスにインクリメントし、さらに今読み出
された命令Bを実行する。
【0028】 演算コードBをHALT演算コードで再び置き換えるために必要であった可能
性のある全てのステップが、このようになくなる。一般に、これは命令Bの完了
時にプロセッサを停止すること、演算コードBにHALT演算コードを上書きす
ること、および、それから停止されたスレッドまたは異なるスレッドの実行を再
開することを含む。
【0029】 区切り点デバッギングが実行される具体的な方法は、デバッガに与えられたオ
プションおよびプロセッサが実行しているスレッドの数に依存する。本発明の好
ましい実施形態によれば、デバッガは下記のオプションを備え、そのオプション
の全ては、1つまたは複数のスレッドが走っているかどうかに無関係に利用する
ことができる。すなわち、 実行スレッドを停止する、 区切り点または区切り点以外の点からの1ステップづつ実行する、 区切り点または区切り点以外の点から実行を再開する、オプションである。
【0030】 これらのオプションを容易にするために、デバッガおよびプロセッサで使用す
るためのフラグおよび指令が与えられる。そのフラグと指令には、 スレッドごとにSTATUS情報に含まれ、それぞれのスレッドが走っている
か停止されているかを表示するRUNNINGフラグと、 レジスタ19に含まれるOPCODE IS VALIDフラグと、ここでこ
のフラグが、 設定される時に、実行を待っている演算コードがSS OPCODEレジスタ
17にロードされたことを表示し、 リセットされる時に、次の命令をプログラムストリームから取り出すべきであ
ることを表示し、 プロセッサに停止されたスレッド中の次の命令だけを実行させるSINGLE
−STEP指令と、 プロセッサに停止されたスレッドの実行を再開させるRESUME指令とが含
まれる。
【0031】 2以上のスレッドが走っている場合、デバッグされている各スレッドは、HA
LT演算コードおよびスレッドがリセットされるRUNNINGフラッグが発生
すると停止する。プロセッサは、全てのスレッドを交互に処理し続けるが、停止
されたスレッドの文脈にアクセスする度に、そのスレッドの文脈中のRUNNI
NGフラグのリセット状態を検出し、それから、プロセッサをシーケンスの次の
スレッドに切り換えるようにする割込みが発生するまで何もしない。
【0032】 デバッガは1つまたは複数のスレッドをデバッグし、各々が1つまたは複数の
区切り点集合を有する可能性がある。区切り点でのHALTの発生に応答するた
めに、デバッガはHALT演算コードと置き換えられた演算コードを突き止める
ことができなければならない。デバッガがこれを行うのは、プロセッサがデバッ
ガにHALT命令を処理したスレッドのスレッド文脈アドレスを知らせるように
することによるか、またはデバッグされるスレッドごとにスレッド文脈の状態レ
ジスタにアクセスしてRUNNINGフラグの状態を感知することによるのが好
ましい。リセット状態は、すなわち停止された状態は、一度に2以上のデバッグ
されるスレッドに対して存在する可能性があることに留意されたい。
【0033】 実行スレッドの停止 デバッガは、走っている任意のスレッドを停止させることを選ぶ可能性がある
。これを行うために、デバッガはプロセッサに命令して、デバッグされる実行ス
レッドの文脈を保持する記憶場所を識別するポインタをSS TC PTRレジ
スタ18にロードさせる。それから、デバッガはHALT指令を発行して、プロ
セッサが、 任意の現在実行スレッドの文脈を、レジスタ122に現在あるポインタTC
PTRで表示されるメモリアドレスに保管し、 レジスタ122の内容をレジスタ18に複製し(現在実行スレッドを後で再
インストールするのを容易にするために)、さらにレジスタ18の内容(ポイン
タSS TC PTR)をレジスタ122に複製し、 ポインタSS TC PTR(現在、レジスタ122にある)で識別されたメ
モリアドレスにあるデバッグされる文脈を文脈レジスタ集合12に読み込み、 RUNNINGフラグをリセットし、 今停止されたばかりのデバッグされるスレッドの現在文脈をメモリに保管し、 レジスタ18の内容をレジスタ122に複製して、前の実行スレッドを再イン
ストールし、 レジスタ122のポインタTC PTRで識別されたメモリアドレスにあるス
レッド文脈を文脈レジスタ集合12に読み込むようにする。
【0034】 デバッグされるスレッド内の保管された文脈はRUNNINGフラグをリセッ
トさせることに留意されたい。このようにして、プロセッサは、それが処理して
いる全てのスレッドの初めから終りまで続けて繰り返すが、デバッグされるスレ
ッドの文脈に達する度に、STATUS情報中のRUNNINGフラグがまだリ
セットされていることを確認し、デバッグされるスレッドを実行しない。
【0035】 シングルステップ デバッガは、停止されている任意のスレッドを1ステップづつ実行することを
選ぶ可能性がある。これを行うために、デバッガはプロセッサに命令して、停止
されたデバッグされるスレッドの文脈を保持する記憶場所を識別するポインタを
SS TC PTRレジスタ18にロードさせる。それから、デバッガは、デバ
ッグされるスレッドが区切り点で停止されたかどうかを決定するために、デバッ
グされるスレッドのプログラムカウンタを読み出す。区切り点で停止されていれ
ば、HALT演算コードと置き換えられた演算コード(例えば、図3Dの演算コ
ードB)をSS OPCODEレジスタ17にロードし、OPCODE IS
VALIDフラグを設定する。区切り点で停止されていなければ、OPCODE
IS VALIDフラグは既にリセットされている。
【0036】 それから、デバッガはSINGLE−STEP指令を発行し、プロセッサが、 任意の現在実行スレッドの文脈を、レジスタ122に現在あるポインタTC
PTRで表示されたメモリアドレスに保管し、 レジスタ122の内容をレジスタ18に複製し(現在実行スレッドを後で再イ
ンストールするのを容易にするために)、レジスタ18の内容(ポインタSS
TC PTR)をレジスタ122に複製し、 ポインタSS TC PTR(現在レジスタ122にある)で識別されたメモ
リアドレスにあるデバッグされる文脈を文脈レジスタ集合12に読み込み、ここ
でデバッグされる文脈は、HALT演算コードが常駐する区切り点の値PCを含
み、 OPCODE IS VALIDフラグを調べて使用される演算コードの出所
を決定し、すなわち、フラグが設定されている場合のレジスタ17からでるか、
フラグがリセットされている場合のプログラムストリームからであるかを決定し
、 OPCODE IS VALIDフラグをリセットして、実行を待っている演
算コードがレジスタ17にないことを表示し、 レジスタ121内の値PCをインクリメントし(例えば、図3Dのパラメータ
B1のアドレスに)、 もしあれば、インクリメントされた値PCのパラメータを読み出し(例えば、
パラメータB1)、 レジスタ17から読み出された演算コードと関連した任意の追加のパラメータ
を読み出すのに必要なような最後の2つのステップを繰り返し、 今読み出された演算コードから形成された完全な命令、およびそれと関連した
任意のパラメータを実行し、それから、値PCを次の演算コードにインクリメン
トし(例えば、図3Eの演算コードC)、 今1ステップづつ実行されたデバッグされるスレッドの現在文脈をメモリに保
管し、 レジスタ18の内容をレジスタ122に複製して、前の実行スレッドを再イン
ストールし、 レジスタ122内のポインタTC PTRで識別されたメモリアドレスにある
スレッド文脈を文脈レジスタ18に読み込むようにする。
【0037】 保管された文脈は、デバッグされるスレッドによって実行されるべき次の命令
の値PC、および依然としてリセットされているRUNNINGフラグを含むこ
とに留意されたい。このようにして、プロセッサは、それが処理している全ての
スレッドの初めから終りまで続けて繰り返すが、デバッグされるスレッドの文脈
に達するごとに、STATUS情報内のRUNNINGフラグが依然としてリセ
ットされていることを確認し、デバッグされるスレッドを実行しない。
【0038】 実行再開 デバッガは、停止されている任意のスレッドの実行の再開を選ぶ可能性がある
。これを行うために、デバッガはプロセッサに命令して、停止されたデバッグさ
れうスレッドの文脈を保持する記憶場所を識別するポインタをSS TC PT
Rレジスタ18にロードさせる。
【0039】 それから、デバッガは、デバッグされるスレッドが区切り点で停止したかどう
かを決定するために、デバッグされるスレッドのプログラムカウンタを読み出す
【0040】 区切り点で停止していれば、デバッガは、HALT演算コードと置き換わった
演算コード(例えば、図3Dの演算コードB)をSS OPCODEレジスタ1
7にロードし、OPCODE IS VALIDフラグを設定する。
【0041】 それから、デバッガは、RESUME指令を発行して、プロセッサが、 任意の現在実行スレッドの文脈を、レジスタ122に現在あるポインタTC
PTRで表示されたメモリアドレスに保管し、 レジスタ122の内容をレジスタ18に複製し(後で現在実行スレッドを再イ
ンストールするのを容易にするために)、レジスタ18の内容(ポインタSS
TC PTR)をレジスタ122に複製し、 ポインタSS TC PTR(現在、レジスタ122内にある)で識別される
メモリアドレスにあるデバッグされる文脈を文脈レジスタ集合に読み込み、その
デバッグされる文脈は、HALT演算コードが常駐する区切り点の値PCを含み
、 OPCODE IS VALIDフラグを調べて、使用される演算コードの出
所を決定し、すなわち、フラグが設定されている場合のレジスタ17からである
か、フラグがリセットされている場合のプログラムストリームからであるかを決
定し、 OPCODE IS VALIDフラグをリセットして、実行を待っている演
算コードはレジスタ17に無いことを表示し、 レジスタ121内の値PCをインクリメントし(例えば、図3Dのパラメータ
B1のアドレスに)、 インクリメントされた値PCの任意のパラメータを読み出し(例えば、パラメ
ータB1)、 レジスタ17から読み出された演算コードと関連した任意の追加のパラメータ
を読み出すのに必要なような最後の2つのステップを繰り返し、 RUNNINGフラグを、レジスタ123に含まれたSTATUS情報に設定
し、 今読み出された演算コードから形成された完全な命令、およびそれと関連した
任意のパラメータを実行し、それから、値PCを次の演算コード(例えば、図3
Eの演算コードC)にインクリメントし、 デバッグされるスレッドの現在文脈をメモリに保管し、 レジスタ18の内容をレジスタ122に複製して、前の実行スレッドを再イン
ストールし、 レジスタ122のポインタTC PTRで識別されたメモリアドレスにあるス
レッド文脈を文脈レジスタ集合12に読み込むようにする。
【0042】 もしくは、区切り点で停止していない場合、OPCODE IS VALID
フラグは既にリセットされている。その時、デバッガはRESUME指令を発行
して、プロセッサが、 現在実行スレッドの文脈を、レジスタ122に現在あるポインタTC PTR
で表示されるメモリアドレスに保管し、 レジスタ122の内容をレジスタ18に複製し(現在実行スレッドを後で再イ
ンストールするのを容易にするために)、さらにレジスタ18の内容(ポインタ
SS TC PTR)をレジスタ122に複製し、 ポインタSS TC PTR(現在、レジスタ122内にある)で識別された
メモリアドレスにあるデバッグされる文脈を文脈レジスタ集合に読み込み、ここ
でそのデバッグされる文脈はスレッド内の次の演算コードの値PCを含み、 RUNNINGフラグをレジスタ123に含まれたSTATUS情報に設定し
、 デバッグされるスレッドの現在文脈をメモリに保管し、 レジスタ18の内容をレジスタ122に複製して、前の実行スレッドを再イン
ストールし、 レジスタ122のポインタTC PTRで識別されたメモリアドレスにあるス
レッド文脈を文脈レジスタ集合12に読み込むようにする。
【0043】 保管された文脈は、デバッグされるスレッドによって実行される次の命令の値
PCおよびRUNNINGフラグ(現在、設定されている)を含むことに留意さ
れたい。このようにして、プロセッサは、それが処理している全てのスレッドの
初めから終わりまで続けて繰り返し、デバッグされるスレッドの文脈に達する度
に、STATUS情報内のRUNNINGフラグが設定されていることを確認し
、デバッグされるスレッドを実行する。
【図面の簡単な説明】
【図1A】 公知の区切り点の方法を図示する。
【図1B】 公知の区切り点の方法を図示する。
【図1C】 公知の区切り点の方法を図示する。
【図1D】 公知の区切り点の方法を図示する。
【図1E】 公知の区切り点の方法を図示する。
【図1F】 公知の区切り点の方法を図示する。
【図2】 本発明の好ましい実施形態を説明する際に有用な例示的な処理システムを図示
するブロック図である。
【図3A】 本発明の実施形態に従った区切り点の方法を図示する。
【図3B】 本発明の実施形態に従った区切り点の方法を図示する。
【図3C】 本発明の実施形態に従った区切り点の方法を図示する。
【図3D】 本発明の実施形態に従った区切り点の方法を図示する。
【図3E】 本発明の実施形態に従った区切り点の方法を図示する。
【符号の説明】
10 プロセッサ 12 文脈レジスタ 14 命令復号器 16 論理演算装置 17 SS OPCODEレジスタ 18 SS TC PTRレジスタ 19 レジスタ 20 メモリ 30 共通バス 121 プログラムカウンタレジスタ 122、123 レジスタ 125 追加のレジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ケビン、ロス オランダ国5656、アーアー、アインドーフ ェン、プロフ.ホルストラーン、6 Fターム(参考) 5B033 BE02 FA22 5B042 GA33 HH01 HH25 LA03 LA04 【要約の続き】

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサ(10)によって実行される命令のシーケンスを含むプログラムス
    レッドをデバッグする方法であって、 a.前記命令の少なくとも1つの選ばれた部分を区切り点標識で置き換えるス
    テップと、 b.前記選ばれた部分をメモリに保管するステップと、 c.前記区切り点標識に達するまで、前記命令を順に行うステップと、 d.前記区切り点標識に上書きすることなく、メモリから前記選ばれた部分を
    読み出すステップと、 e.複数の所定のデバッグ操作の少なくとも1つを実行するステップとを備え
    る方法。
  2. 【請求項2】 前記選ばれた部分が所定の記憶場所に保管され、且つそこから読み出される、
    請求項1に記載の方法。
  3. 【請求項3】 前記選ばれた部分が演算コードを含む、請求項1に記載の方法。
  4. 【請求項4】 前記選ばれた部分が前記スレッドの実行を停止するためのHALT演算コード
    を含む、請求項1に記載の方法。
  5. 【請求項5】 前記所定のデバッグ操作が、 a.前記区切り点で前記プログラムスレッドの実行を停止するステップと、 b.停止されたスレッドを1ステップづつ実行するステップと、 c.停止されたスレッドの実行を再開するステップとを備える、請求項1に記
    載の方法。
  6. 【請求項6】 前記選ばれた部分が前記専用メモリに読み込まれ、且つ使用待ちになっている
    かどうかを表示するフラグが設けられている、請求項1に記載の方法。
  7. 【請求項7】 プロセッサによって実行可能な複数のプログラムスレッドを選択的にデバッグ
    することを容易にする方法であって、 a.前記スレッドごとにそれぞれの文脈に実行状態標識を設けるステップと、 b.前記状態標識が第1の状態にある各スレッドを実行するステップと、 c.前記状態標識が第2の状態にある各スレッドを実行しないステップとを備
    える方法。
  8. 【請求項8】 デバッガが前記実行状態標識を利用してデバッグするためのスレッドを選び、
    その間少なくとも1つの他のスレッドを実行し続ける、請求項7に記載の方法。
JP2001522175A 1999-09-07 2000-08-21 スレッド志向デバッギング Pending JP2003508864A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US39085399A 1999-09-07 1999-09-07
US09/390,853 1999-09-07
PCT/EP2000/008183 WO2001018651A1 (en) 1999-09-07 2000-08-21 Thread-oriented debugging

Publications (1)

Publication Number Publication Date
JP2003508864A true JP2003508864A (ja) 2003-03-04

Family

ID=23544212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001522175A Pending JP2003508864A (ja) 1999-09-07 2000-08-21 スレッド志向デバッギング

Country Status (7)

Country Link
EP (1) EP1125199B1 (ja)
JP (1) JP2003508864A (ja)
KR (1) KR20010085997A (ja)
CN (1) CN1148656C (ja)
DE (1) DE60010847T2 (ja)
TW (1) TW518460B (ja)
WO (1) WO2001018651A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100952762B1 (ko) * 2003-02-27 2010-04-14 엘지전자 주식회사 디지털 시그널 프로세서의 실시간 디버깅 방법
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
CN100389565C (zh) * 2005-03-08 2008-05-21 华为技术有限公司 一种实现报警判决的方法
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US7657791B2 (en) 2006-11-15 2010-02-02 Qualcomm Incorporated Method and system for a digital signal processor debugging during power transitions
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8484516B2 (en) 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
CN101295279B (zh) * 2007-04-29 2012-05-09 国际商业机器公司 多线程环境下的调试程序的方法和系统
GB2489000B (en) * 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
CN107818043A (zh) * 2016-09-13 2018-03-20 东华软件股份公司 用于程序调试的方法和装置
CN110489294B (zh) * 2019-08-23 2023-12-19 上海光电医用电子仪器有限公司 一种基于日志实时单步调试方法和装置

Also Published As

Publication number Publication date
EP1125199A1 (en) 2001-08-22
DE60010847D1 (de) 2004-06-24
WO2001018651A1 (en) 2001-03-15
CN1148656C (zh) 2004-05-05
CN1335962A (zh) 2002-02-13
EP1125199B1 (en) 2004-05-19
DE60010847T2 (de) 2005-06-16
TW518460B (en) 2003-01-21
KR20010085997A (ko) 2001-09-07

Similar Documents

Publication Publication Date Title
KR100350568B1 (ko) 디버그기능을수행하기위한데이타처리시스템및방법
KR100439781B1 (ko) 데이터프로세서와그동작방법,그디버깅동작실행방법및그중단점값수정방법
US7836430B2 (en) Reversing execution of instructions in a debugger
US6895460B2 (en) Synchronization of asynchronous emulated interrupts
JP4094724B2 (ja) ソフトウェアをデバッグする際に例外を識別するための装置および方法
US7711990B1 (en) Apparatus and method for debugging a graphics processing unit in response to a debug instruction
US20070226740A1 (en) Method and apparatus for global breakpoint for parallel debugging on multiprocessor systems
JP2003508864A (ja) スレッド志向デバッギング
US8108840B2 (en) Method for enhancing debugger performance of hardware assisted breakpoints
US8612720B2 (en) System and method for implementing data breakpoints
US20060179380A1 (en) On-chip electronic hardware debug support units having execution halting capabilities
US6347368B1 (en) Microcomputing device for exchanging data while executing an application
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JPH0581087A (ja) プロセサのモニタ方式
JPH0465729A (ja) シンボリック・デバッガ
JPH02135545A (ja) デバッガの実行制御処理方式
JPH07281924A (ja) トレース装置及びこれを備えたエミュレータ
JPH0795288B2 (ja) マイクロコンピュータ
JPH04199336A (ja) マイクロコンピュータ
JP2004318469A (ja) プログラムトレース装置
JPS6325742A (ja) トレ−ス機能付マイクロプロセツサ
JPH03266139A (ja) プログラムデバグ方式
JPS60124747A (ja) 計算機のデバグ制御方式
JPH02263243A (ja) コンピュータの暴走処理装置
JPS6222153A (ja) マイクロプロセツサの動作解析方法と装置