JP2014508367A - シングルステップ実行を用いる診断コード - Google Patents

シングルステップ実行を用いる診断コード Download PDF

Info

Publication number
JP2014508367A
JP2014508367A JP2013558495A JP2013558495A JP2014508367A JP 2014508367 A JP2014508367 A JP 2014508367A JP 2013558495 A JP2013558495 A JP 2013558495A JP 2013558495 A JP2013558495 A JP 2013558495A JP 2014508367 A JP2014508367 A JP 2014508367A
Authority
JP
Japan
Prior art keywords
instruction
diagnostic
type
processor
exception
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.)
Granted
Application number
JP2013558495A
Other languages
English (en)
Other versions
JP5905911B2 (ja
Inventor
ジョン ウィリアムズ、マイケル
ロイ グリセンスウェイト、リチャード
Original Assignee
エイアールエム リミテッド
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 エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2014508367A publication Critical patent/JP2014508367A/ja
Application granted granted Critical
Publication of JP5905911B2 publication Critical patent/JP5905911B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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
    • G06F11/3632Software debugging of specific synchronisation aspects
    • 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
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

命令ストリームを処理するプロセッサを診断するための方法および装置が開示される。その方法は、(i)命令ストリームからの単一命令が実行されるように、シングルステップモードにおいて実行するようにプロセッサを制御するステップであって、プロセッサは、単一命令が少なくとも1つの既定種類の命令の1つであるかどうかを判断し、データストレージ位置に種類インジケータを格納し、診断例外は、プロセッサが単一命令を処理した後に取られる、制御するステップと、(ii)データストレージ位置に格納された種類インジケータにアクセスすることを含む、診断例外の後に続く診断動作を実行するステップと、(iiia)単一命令が既定種類の1つではなかったことを示す種類インジケータに応答して、次の単一命令が、例外から戻ると実行されるように、シングルステップモードにおける命令を実行し続けるようにプロセッサを制御するステップと、(iiib)単一命令が少なくとも1つの既定種類の1つであったことを示す種類インジケータに応答して、シングルステップモードを出て、後に例外が続く単一命令として命令ストリーム内の次の命令を実行しないようにプロセッサを制御するステップと、を含む。

Description

発明の技術分野は、データ処理に関するものであり、特に、データ処理装置上で診断動作を実行することに関するものである。
ハードウェア、オペレーティングシステム、アプリケーションプログラム、全体のシステム設計および同様のものの開発を支援するように、データ処理システム上の診断動作(例えば、ソフトウェアおよびハードウェアの障害確認や解析(デバッグ))を実行するために使用され得る診断機構を備えるデータ処理システムを提供することが知られている。
データ処理システムを解析するとき、システム上で実行される診断動作を指定する制御信号がホストからシステムに伝えられるように、解析される対象システムに接続されるホストシステム上で走るデバッグプログラムを備える外部デバッガが使用され得る。
外部デバッガは、外部ポート経由でその対象に接続されるデバッガを含み、更にまた、そのデバッガは、デバッグハードウェアをプログラムするために使用される。プロセッサは、診断例外とみなされるデバッグイベントが、特別なデバッグ状態に入ることを引き起こし、そのデバッグ状態において、データ処理装置は、外部デバッガによって問い合わされ制御されるように、構成される。
あるいは、デバッグモニタソフトウェアが、デバッグされる対象上で実行される、自己ホスト化デバッグシステムがあるかもしれない。そのような場合には、プロセッサは、デバッグイベントが、デバッグされるソフトウェアに割り込みを行いデバッグモニタソフトウェアに制御を移す診断例外を引き起こすように、構成される。有用な診断ツールは、プログラムを通してシングルステップに対してプロセッサを制御する能力である。このことは、要求があった場合、システムの状態がプロシージャの各ステップで解析されることを可能にする。シングルステップモードにおいて、プロセッサは、命令を実行し、次いで、診断例外が取られ、制御が、プロセッサの状態を解析することができるデバッグソフトウェアに伝わることになる。診断例外からの復帰が起こると、次いで、プロセッサは、次の命令を実行し、その後、次の診断例外が取られることになる。このようにして、デバッグソフトウェアは、プログラム全体を通してまたはシステムを解析する人の興味のある部分だけを通して、シングルステップに対してプロセッサを制御し得る。
コードを通したシングルステッピングのときに生じ得る1つの問題は、例外が命令間で取られる場合に異なる実行パスを有するコードが発生するかどうかである。このことは、異なる実行パスが無限ループを含む場合に特に困難であり得る。例えば、命令は、排他モニタを要求することを試みる。コードは、排他モニタを要求することに成功する場合には、特定ストレージ位置に排他的にアクセスでき、そこにデータを格納することができる。それゆえに、排他モニタを要求するために、現在実行されている命令ストリームが特定ストレージ位置に排他的にアクセスできることを示すように、ストレージ位置の現在値を戻すことと、排他モニタを設定することとの両方をする特別な排他ロード命令が、使用される。次いで、排他ストア命令が、そのようなストレージ位置にデータを格納するために、実行され得る。しかしながら、コードを通したシングルステッピングの場合において、排他モニタが、一旦、そのモニタを設定することによって要求されると、診断例外が取られ、この例外から戻ると、例外ハンドラが排他モニタをクリアすることになる。これは、例外が取られるときに例外ハンドラが、先に実行されていたコードに戻らなくてもよいのではなく、異なるコードに戻ることになるからであり、それゆえに、実行される次の命令ストリームがストレージ位置に排他的にアクセスできるべきではないので、排他モニタはクリアされるべきである。
しかしながら、排他モニタをクリアされたシングルステップにおいて、次いで、排他ストア命令に達すると、その命令は失敗し、これが排他モニタを要求するステップを引き起こし、これにより排他モニタが要求され、次いで、例外リターンによってクリアされ、その結果、シングルステップでは、排他ストア命令が繰り返して失敗することになり、プログラムは決して進行しないことになる。
この問題を有するコードの例が以下に与えられる。
ループ
LDREX R5、 [R1] ; ロック(排他ロード)を読み取る
CMP R5、 #0 ; 0であるかをチェックする
STREXEQ R5、 R0、 [R1] ; 新しい値を格納することを試みる
CMPEQ R5、 #0 ; 格納が成功したかを検査する
BNE ループ ; そうでない場合には再試行する
診断例外から戻ると排他モニタまたはロック位置をクリアし、ステップモードにあるときにこのコード内に無限ループを発生させる例外ハンドラに関する問題が、知られており、これらのものなどのブロックの位置を判断するために、コードを通したステッピングより前に命令をスキャンすることによって、PowerおよびMIPSアーキテクチャのためのGDBにおいて対処される。それらは、ブレークポイントがこの場合において排他ストア命令後に設定されるようにコマンドが使用されるまでステップを一旦確認されると、例外はこのブロック内の命令間で取られず、ロック位置は、例外ハンドラによってクリアされない。
この解決策の欠点は、問題のコードを識別するために全てのコードが検査される必要があることである。このことは、診断システムが、命令ストリームの実行を制御しているオペレーティングシステムに進み、コードを解析し得るためにコードをフェッチすることをそのオペレーティングシステムに問う必要があることになるので、かなりのオーバーヘッドを有する。診断装置が処理装置から遠く離れている場合、オーバーヘッドが特に大きくなる。
Powerは、(Powerアーキテクチャにおいてトレース例外と呼ばれる)ステップ例外が、その状態へ戻ることを許可するために取られるときに、プロセッサの状態についての情報を格納するシンドロームレジスタの使用を開示する。そのシンドロームレジスタが格納する1つの情報は、排他ロード命令が実行されていることと、位置が例外を取る前にロックされることと、を示すインジケータである。この値がどのように使用されるかについての情報は無い。
実行パスが命令間で例外を取ることによって変更される種類のコードがある場合でさえも、シングルステッププロシージャを用いてコードを診断することができることが望ましいであろう。
本発明の第1の態様は、命令ストリームを処理するプロセッサを診断する方法であって、(i)命令ストリームからの単一命令が実行されるように、シングルステップモードにおいて実行するようにプロセッサを制御することであって、プロセッサは、単一命令が少なくとも1つの既定種類の命令の1つであるかどうかを判断し、データストレージ位置に種類インジケータを格納し、診断例外は、プロセッサが単一命令を処理した後に取られる、当該プロセッサを制御することと、(ii)データストレージ位置に格納された種類インジケータにアクセスすることを含む診断例外の後に続く診断動作を実行することと、(iiia)単一命令が既定種類の1つではなかったことを示す種類インジケータに応答して、次の単一命令が、例外から戻ると実行されるように、シングルステップモードにおける命令を実行し続けるようにプロセッサを制御することと、(iiib)単一命令が、少なくとも1つの既定種類の1つであったことを示す種類インジケータに応答して、シングルステップモードを出て、後に診断例外が続く単一命令として命令ストリーム内の次の命令を実行しないようプロセッサを制御することと、を含む方法を提供する。
本発明は、コードを通したシングルステッピングの際に問題が生じ得ることと、いくつかの場合には、シングルステッピングが適切ではないところを判断し、シングルステッピングを抑制することは有利であり得ることとを認識する。例えば、命令ストリームが、ストリーム内の後の命令によって取られる実行パスが命令間で例外を取ることによって変更される命令を含む場合には、シングルステッピングは、コードのその部分の実行を解析する適切な手法ではないことになり、抑制されるべきである。本発明はまた、これが特定の問題であり得ることも、例外を取ることが無限ループに入るコードをトリガーする場合には、認識する。本発明は、実行される命令が既定種類のものであるか否かを判断し、もしそうであった場合、シングルステッピングを続けるのではなく、異なるプロシージャを実行することによって、上記問題に対処する。多くの場合において、命令が既定種類のものであるか否かは実行の間に判断され得るし、シングルステッピングは、必要に応じて抑制され得る。
いくつかの実施形態では、ステップ(iiib)は、例外から戻ると命令ストリーム内の複数の命令を実行するようプロセッサを制御することを含む。
実行パスを変更する命令間の例外の問題に対処するために、複数の命令が、例外が発生することなく、全て順次実行されるように、複数の命令についてシングルステップモードを抑制することが適切であろう。順次実行される命令の数は、コード次第で選択され得るし、シングルステップモードは、そのコードに適した命令ストリーム内のポイントに戻され得る。
いくつかの実施形態では、複数の命令は、命令ストリームにおける実行された単一命令の後に続く複数の命令を備える。
例外から戻ると実行される複数の命令は、命令ストリームにおける実行された単一命令の後に続く命令であってもよい。あるいは、実行された命令が、いくつかの次の命令と共に再度実行されてもよい。後者は、この命令を再実行することが可能であることを判断した場合にのみ可能である。いくつかの場合では、これは不可能であり得る。しかしながら、それが可能である場合、その後に例外が続かないで命令が再度実行されることは、有利であろう。
いくつかの実施形態では、単一命令が少なくとも1つの既定種類の1つであったことを示すその種類インジケータに応答して、複数の命令が、少なくとも1つのブレークポイントに達するまで実行されるように、命令ストリーム内に少なくとも1つのブレークポイントを設定し、少なくとも1つのブレークポイントに達することに応答して、ブレークポイント診断例外を取る更なるステップがある。既定種類の命令が検出される場合には、いくつかの実施形態では、ブレークポイントが、既定種類の命令の次のコード内のポイントに設定され得る。次いで、シングルステップモードは中断され、命令はブレークポイントに達するまで実行され、その結果、ブレークポイント診断例外が取られる。このことに応答して、プロセッサは、適切な場合、シングルステップモードに戻ってもよいし、あるいは、更なるブレークポイントが設定されてもよいし、または、検査されるコードの終了に達していてもよい。
いくつかの実施形態では、ステップ(iiib)は、命令ストリーム内の実行された単一命令および少なくとも1つの後の命令をエミュレートすることと、次いで、エミュレートされた少なくとも1つの後の命令の次の命令ストリームにおける命令からシングルステップモードを開始するようプロセッサを制御することと、を含む。
いくつかの実施形態では、命令を実行するのではなくて、命令は、例えば診断装置によってエミュレートされてもよく、これらのエミュレートされた命令が一旦実行されると、プロセッサは、命令ストリーム内の適切な命令からシングルステップモードを再開するよう制御され得る。シングルステップモードが、各命令間で取られた診断例外が、命令ストリームが進む様式を変えない命令から再開するように、エミュレートされた命令は、選択されることになる。
いくつかの実施形態では、データストレージ位置内に格納された種類インジケータは、命令が既定種類の1つであったこと、または命令が既定種類の1つではなかったこと、あるいは、命令が未知の種類のものであることを示し、種類インジケータにアクセスするステップにおいて、種類インジケータは、その種類が未知のものであることを示すことが判断された場合に単一命令を検査し、単一命令が、既定種類のものであるかを判断する追加的ステップが実行される。
種類インジケータは、命令が既定種類のものであるか否かを示し得る、命令が未知である場合、その命令が既定種類のものであるか否かも示し得る。後者の場合において、本方法は、命令がどの種類かを判断するために命令を検査する。このことは、命令が解析され得るように、命令がフェッチされることが要求され得る。そのようなステップは、そのことと関連付けられたレイテンシオーバーヘッドを有するが、未知の種類が示されることになるのはわずかな場合だけであろうし、それゆえに、このことは、全体の診断方法を過度に実行するためのオーバーヘッドを増加させないであろう。
いくつかの実施形態では、種類インジケータは2つのインジケータ値を備え、第1の値は、命令が既定種類のものであるか、または既定種類のものではないかを示し、第2の有効値は、第1の値が有効であるかどうかを示し、無効である第2の有効値は、命令が未知の種類のものであることを示す。
種類の表示は、2つの値、または2つのビットを用いて行われてもよく、一方が種類を示し、有効ビットである他方が、種類ビットが無効、すなわち、種類が未知である場合を示す。このことは、種類値がもはや信頼され得ないことを意味する状況が生じるとき、有効ビットは単に無効に設定され得るので、その値を表わす便利な手法であり得る。
他の実施形態では、種類の表示は単一値であってもよい。この値は、いくつかの実施形態では、取られた診断例外の種類の表示を更に含んでもよい。
例えば、表示は、取られたブレークポイントまたは停止要求などの診断例外の理由を示してもよい。
いくつかの実施形態では、次の診断例外を取る前のプロセッサのフラッシュ状態に応答して、種類インジケータは、実行された命令が未知の種類のものであることを示すように設定される。
次の診断例外を取る前にプロセッサの状態がフラッシュされる場合には、命令種類は未知に設定されるべきであり、そのことは、いくつかの実施形態では、有効ビットを無効に設定することによって行われ得る。状態をフラッシュすることは、パイプライン化されたプロセッサ内のパイプラインをフラッシュすることに応答して、あるいは、フラッシュ命令に応答して、起こり得る。
いくつかの実施形態では、その方法は、単一命令ステップ診断方法が実行されることを示す単一命令ステップ制御値を設定し、命令ストリーム内の単一命令が次の診断例外が取られる前に実行されることを示すステップインジケータ値を設定する最初のステップを含む。
シングルステップモードは、格納された制御値によって示され得、この制御値が設定されるときに、プロセッサが、シングルステップモードにおいて動作していることと、各命令が実行された後に、診断例外を取るべきであることとを知っているように、示され得る。また、1つのステップが実行されることを示す例えば1などの1つの値に設定されるステップインジケータ値があってもよく、命令が処理されている場合、それは、別の値、例えばゼロに設定され、次の診断例外が取られる前に更なる命令が実行されないことを示す。
いくつかの実施形態では、次の診断例外を取る前にゼロ命令が実行されることを示すステップインジケータ値に応答して、種類インジケータは、次の診断例外を取ると、未知の種類に設定される。
ステップインジケータ値は、診断例外ではない例外が、シングルステップモードの間に取られている場合、有用であり得る。そのような場合には、ステップインジケータ内の値は、例外から戻ると、命令が実行されるべきか、または診断例外が即時に取られるべきかを示す。その上、実行されるゼロ命令を示すことが設定される場合には、これは、命令が実行された後ではあるが、後の診断例外が取られる前に、例外が取られていることを示し、この場合において、例外を取ることが種類インジケータを変更している場合があるので、命令の種類が未知に設定される場合に有利である。
既定種類の命令は、多くのことであり得るが、いくつかの実施形態では、少なくとも1つの既定種類の命令の1つは、命令の後に続く例外を実行することが、命令ストリーム内の少なくとも1つの後の命令を別々に実行させ得る命令の種類を含む。特に、命令ストリーム内の後の命令が別々に実行し得るように、その既定種類は、診断例外へ入るまたは診断例外から戻ると、例外ハンドラによって実行される動作が、プロセッサを備える装置の状態を変更する命令の種類を備える。そのような命令は、シングルステップモードにおける解析に適さない。
例外が元の命令ストリームの実行のパスを変更する命令は、シングルステップモードにおける解析に適さず、それゆえに、これらの命令がどれであるかを判断し、次いで、シングルステップモードを抑制し得る診断方法は、有利である。
いくつかの実施形態では、少なくとも1つの既定種類の命令の1つは、ロック位置にアクセスする命令を備え、ロック位置は、ロック値とクリア値とのうちの1つを格納し、クリア値は、プロセッサが既定ストレージ位置に書き込み得ることを示し、ロック値は、ロック値を格納したプロセッサのための既定ストレージ位置への排他書き込みアクセスを示す。
命令ストリームの処理の間に例外を取る場合、その例外から戻ると、プロセッサは、その命令ストリームが割り込まれたポイントで実行を再開しなくてもよいが、異なるポイントで実行することを開始してもよく、例えば、異なるアプリケーションからの命令を実行することを開始してもよい。それゆえに、ロック位置があり、そのロック位置において、格納されたロック値が、既定ストレージ位置がロックされたことを示し、そのアプリケーションからの既定アドレスへの排他ストアアクセスによってだけ書き込まれ得る場合、例外からの復帰は、アプリケーション内の同じポイントまでではない可能性があり、次いで、ロック値は、実行される次の命令に適さないであろうから、ロック値は、その例外から戻るとクリアされる。このことは、例外が各命令間に生じるステップモードに問題を引き起こし、それゆえに、この種類の命令が、ステップモードから出させる既定種類の1つである場合に有利である。
本発明の第2の態様は、データ処理装置によって実行されるときに、本発明の第1の態様に係る方法におけるステップを実行するように、データ処理装置を制御するコンピュータプログラムを格納するためのコンピュータプログラム製品を提供する。
本発明の第3の態様は、命令ストリームを処理するプロセッサを解析するための診断装置であって、制御信号をプロセッサに出力するための出力、およびプロセッサからデータを受信するための入力と、診断動作を実行するための診断回路と、を備え、命令ストリーム内の単一命令が実行され、次いで、診断例外が取られるように、診断回路は、プロセッサがシングルステップモードにおいて動作するためのものであることを示すインジケータ値を設定するために、制御信号をプロセッサに出力するように構成され、診断回路は、実行された単一命令が少なくとも1つの既定種類の命令の1つであったかどうかを示す種類インジケータを格納するためにストレージ位置にアクセスするよう構成され、実行された単一命令が既定種類の1つではなかったことを示す種類インジケータに応答して、診断回路は、例外から戻ると次の単一命令が実行されるように、シングルステップモードにおける命令を実行し続けるために、プロセッサを制御するよう構成され、実行された単一命令が少なくとも1つの既定種類の1つであったことを示す種類インジケータに応答して、診断回路は、シングルステップモードを出て、後に例外が続く単一命令として命令ストリーム内の次の命令を実行しないように、プロセッサを制御するよう構成される、診断装置を提供する。
本発明の第4の態様は、命令ストリームを処理するためのプロセッサと、プロセッサを解析するための本発明の第3の態様に係る診断装置と、を備える、データ処理装置を提供する。
本発明の第5の態様は、データを処理するためのプロセッサと制御データを格納するための複数のストレージ位置とを備えるデータ処理装置であって、ストレージ位置の少なくとも1つは、シングルステップモード制御値を格納し、当該データ処理装置は、診断例外が、命令のそれぞれの実行後に取られるように、シングルステップモードにおける命令ストリームからの命令を実行するように設定されたシングルステップモード制御値に応答するように構成され、プロセッサは、シングルステップモード制御値が設定されるときに、プロセッサによって実行された各命令についてその命令が少なくとも1つの既定種類の1つであるかどうかを判断し、ストレージ位置の1つの中に種類インジケータを格納するように構成され、種類インジケータは、その命令が既定種類の1つであったこと、またはその命令が既定種類の1つではなかったこと、あるいはその命令が未知の種類のものであることを示す、データ処理装置を提供する。
データ処理装置がシングルステップモードにおいて実行するとき、命令は1つずつ実行され、このモードにおける全ての命令の実行後に、診断例外が取られ、これにより、処理装置の状態が解析され得る。診断例外は、別の例外が、命令の実行の間に受信され得、これは最初に取られ得るという点で、命令の実行後に即時に取られなくてもよいことが留意されるべきである。しかしながら、この例外から戻ると、診断例外は、命令ストリーム内の次の命令が実行される前に取られることになる。発明のこの態様では、プロセッサは、実行される各単一命令についてその命令が既定種類のものであるか否かを判断し、その命令が既定種類のものである場合、その命令が既定種類のものではない場合、あるいはその種類が未知である場合を示す種類インジケータを格納する。
いくつかの実施形態では、種類インジケータ格納装置は、2つの値のための格納装置を備え、第1の値は、種類が既定種類のものであるか否かを示し、第2の値は、第1の値が有効であるか否かを示し、未知の種類は、第1の値が無効であることを示す第2の値によって表わされる。
種類情報を格納する便利な手法は、2つの値を用いることであり、第1の値は種類を示し、第2の値は、第1の値が有効であるか否か、すなわち、その種類が既知または未知であるかを示す。値は、2つの値の1つをそれぞれ有することができるので、それらの値は、単一ビットによってそれぞれ表わされ得る。
他の実施形態では、種類情報は単一値であり、いくつかの実施形態では、取られる診断例外の種類の表示を更に備える。例えば、その表示は、診断例外の理由を示してもよく、それゆえに、これは、診断例外が、既定種類の命令のソフトウェアステップ、既定種類のものではない命令のソフトウェアステップ、または、例えば取られたブレークポイントもしくは停止要求などのいくつかの他のデバッグイベントに起因することであり得る。
いくつかの実施形態では、データ処理装置は、次の診断例外を取る前のプロセッサのフラッシュ状態に応答して、実行された命令が未知の種類のものであることを示すよう種類インジケータを設定するように、構成される。
一般に、命令を実行するとき、プロセッサは、その命令が既定種類のものであるか否かを判断することができ、この情報を格納することができる。しかしながら、一定の状況では、プロセッサの状態は、フラッシュされるであろうし、この情報は失われるであろう。それゆえに、そのような状況において、種類インジケータが未知に設定され、そのため、これが認識されることは重要である。状態のフラッシュは、例えば、実行される明示的なフラッシュ命令に応答してまたは例外から戻ると、起こる。
いくつかの実施形態では、ストレージ位置の1つは、1またはゼロ命令が、次の診断例外を取る前に実行されることを示すステップインジケータ値を格納するよう構成され、データ処理装置は、ステップインジケータ値がゼロであることに応答して診断例外を取ると、種類インジケータを未知の種類に設定するよう構成される。
データ処理装置は、いくつかの実施形態では、例外から戻ると、ステップインジケータ値がゼロであることに応答して命令が実行されないように、また保留の診断例外が取られるように、診断例外が取られる前に、単一命令の1つの実行の後に取られる例外に応答して、ステップインジケータ値をゼロに設定するように、構成される。この時点では、種類インジケータは、他の命令が、他の例外に応答して実行されているかもしれないので、未知に設定されるべきであり、それゆえに、この値は、ステップモードにおいて実行された前の単一命令をもはや示さない可能性がある。
いくつかの実施形態では、既定種類は、命令ストリーム内の後の命令が別々に実行されてもよいように、診断例外へ入るまたは診断例外から戻ると例外ハンドラによって実行される動作が処理装置の状態を変更する命令の種類を備える。
本発明の第6の態様は、データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンを提供し、その仮想マシンは、本発明の第4または第5の態様のデータ処理装置に係る命令実行環境を提供する。
本発明は、ほんの一例として、添付の図面に例示されるように本発明の実施形態を参照して、更に記載される。
本発明の実施形態に係るデータ処理装置に接続された遠隔診断装置を備えるデータ処理装置を示す。 本発明の実施形態に係る診断回路を組み込むデータ処理装置を示す。 本発明の実施形態に係るシングルステップ診断モードにおいて実行する命令ストリーム内の排他ロード命令の処理を示す。 割り込みが排他ロード命令後に生じるシングルステップ診断モードにおける命令ストリームの処理を示す。 割り込みが排他ロード命令の実行前に生じるシングルステップ診断モードにおける命令ストリームの処理を示す。 シングルステップ診断モードにおいて動作するプロセッサの可能な状態を示す。 本発明の実施形態に係る方法におけるステップを例示するフロー図を示す。 本発明の更なる実施形態に係る方法におけるステップを例示するフロー図を示す。 ステップを踏まれる命令の種類と共にデバッグイベントの理由を示すインジケータについての可能な値の表を示す。 本発明の実施形態の仮想マシンインプリメンテーションを示す。
図1は、命令ストリームを処理するためのプロセッサ20を有するデータ処理装置10を示す。プロセッサは、命令キャッシュ22からの命令をフェッチするためのフェッチユニット20aと、命令を復号するための復号ユニット20bと、復号された命令を実行するための実行ユニット20cと、を有するパイプラインを備える。データ処理装置10はまた、処理の間に使用されたデータを格納するためのレジスタを備えるレジスタバンク30を有する。これらは、プロセッサの現在の状態を格納する状態レジスタと、制御値を格納するための少なくとも1つの制御レジスタと、を含む。状態レジスタは、例えば割り込みがなされ、プロセッサの現在の状態が格納される必要があり、そのため、割り込みから戻るとその現在の状態が復元され得る場合に、必要とされ得る。
データ処理装置10はまた、診断回路42を含む診断装置40と接続する外部ポート12を有する。診断回路42は、データ処理装置の動作を解析するために使用され、それゆえに、プロセッサ20の実行を制御するための信号を送信することができ、解析のためにプロセッサからのデータ出力を受信することができる。
この実施形態では、診断回路42は、その診断回路が命令ストリームのプロセッサの実行を解析することを望む場合、シングルステップモードにおいて動作するために、プロセッサ20を制御するよう構成される。各命令の実行の後のシングルステップモードにおいて、診断例外が、命令ストリーム内の次の命令の実行前に取られる。このようにして、プロセッサはプログラムを通してステップを踏み、各ステップの後のプロセッサの状態は、診断回路42によって解析され得る。診断回路42は、制御レジスタEDECRにビットEDECR.SSを設定することによってシングルステップモードにおいて動作するようにプロセッサを制御し、このビットが設定されて、プロセッサがシングルステップモードにおいて動作すべきことをプロセッサ20に示す。命令が実行されるときにデクリメントされ、診断例外を取ることによってインクリメントされるビットEDESR.SSを有する更なる制御レジスタEDESRがある。このビットは、プロセッサが、シングルステップモードの間に非診断的例外が取られる場合、命令が、非診断的例外から戻ると実行されるべきか、あるいは診断例外が取られるかどうかを知ることを可能にする。更なる状態レジスタEDSCRがあり、その状態レジスタEDSCRは、診断例外を取る理由を記録するビットフィールドEDSCR.MOEを有する。
診断例外が取られると、診断コードが診断回路42によって実行され、その診断回路42は、データ処理装置10の状態を検出し、解析のためにこの情報のいくつかを格納する。
診断回路42が処理を終了することを望む場合、診断回路42は、制御レジスタ内のシングルステップビットEDECR.SSおよびEDESR.SSをリセットし、次いで、プロセッサは、通常実行モードに戻る。
シングルステップモードにおいて動作するためにプロセッサを制御することに加えて、診断回路42はまた、実行される他の診断動作を制御することができる。例えば、その診断回路は、ブレークポイントまたは実行されるコード内の監視ポイントを設定することができ、これらは、コードが、そのコードの実行における一定の設定ポイントで割り込まれることを可能にし、次いで、プロセッサの状態は、これらのポイントで解析され得る。
図1では、処理装置10の外部にあるように診断回路42が示されるが、多くの実施形態、例えば図2などでは、診断回路42は、処理装置の内側にある。
それゆえに、図2は、診断回路42、レジスタバンク30、および、いくつかの実施形態では診断回路42内のプロセッサによって、その一方で他の実施形態ではプロセッサ20自体上で、実行され得る診断ソフトウェアを格納するためのデータストアを備えるデータ処理装置10を示す。いくつかの実施形態では、診断ソフトウェアは、外部メモリ44内に格納されてもよい。
上で詳記された場合において、診断例外を取ることは、格納装置43またはメモリ44内に格納されプロセッサ20によって実行される診断ソフトウェアをトリガーすることになる。この実施形態では、レジスタバンク30内に格納された値は、図1のレジスタバンク内に格納された値とは少し異なる。この実施形態では、ユーザは、シングルステップ診断モードが入れられるべきであることを示してもよく、診断回路42は、レジスタバンク30内の制御レジスタに書き込み、信号ステップモードを示すMDSCRレジスタ内のシングルステップビットMDSCR.SSと、1または0に取られるステップの数を示す保存された状態レジスタSPSR内の保存されたステップ数ビットSPSR.SSと、を設定するであろう。次いで、診断回路42は、デバッグされるソフトウェアを実行することをプロセッサ20に命令する。プロセッサは、この要求に応答して、SPSR.SSビットを現在の状態レジスタCPSR内の現在のステップ数ビットCPSR.SSにコピーする。
それゆえに、設定されるこれらのビットに応答して、プロセッサは、単一命令を処理し、プロセッサが1つの命令を実行していることを示すようにCPSR.SSビットを0に設定し、次いで、診断例外を取る。プロセッサ20は、診断例外を取る一部としてステップ数ビットを現在の状態レジスタCPSR.SSから保存された状態レジスタSPSR.SSにコピーする。
プロセッサ20はまた、診断例外についての更なる情報をレジスタバンク30内の更なる状態レジスタESRに書き込み、それは、診断例外を含む例外についての情報を記録するために使用される。
プロセッサ20は、後に診断コードが続く例外ハンドラコードを実行し、プロセッサの現在の状態が解析される。SPSRレジスタ内のステップ数ビットSPSR.SSは、命令ストリーム内の次の命令が今から実行されるべきであることを示す1に設定される。シングルステップ診断モードが終了されると、レジスタSPSR内の制御ビットMDSCR.SSおよびSPSR.SSと、レジスタバンク30内のMDSCRがリセットされる。
複数の階層的処理状態、または例外レベルが実装される場合には、各例外レベルは、それ自体のSPSRおよびESRレジスタ、例外レベル1についてのSPSR_EL1およびESR_EL1、例外レベル2についてのSPSR_EL2およびESR_EL2などを有する。
図3は、排他ロード命令LDREXを含む命令コードが、本発明の実施形態に係るシングルステップ診断モードにおいてどのように実行されるかを示す。この図面において、時間は左から右に流れる。それゆえに、SPSR.SSビットおよびMDSCR.SSビットは、動作のシングルステップモードを示す1に設定され、例外リターンERET命令は、デバッグされるソフトウェアに飛び入るよう実行される。これは、SPSR.SSをCPSR.SSにコピーし、次いで、デバッグされるソフトウェアからの単一命令が実行される。この命令は排他ロード命令LDREX命令であり、実行される排他ロード命令LDREXに応答して、CPSR.SSビットは、診断例外が取られる前に更なる命令が実行されるべきではないことを示す0に設定される。
診断例外が取られ、CPSR.SSはSPSR.SSにコピーされ、状態レジスタ内のシンドロームビットESR.EXは、排他ロード命令LDREXが実行されたことを示す1に設定される。このレジスタ内の有効ビットESR.ISVがまた設定され、その有効ビットESR.ISVは、これが、このビットについて有効値であることを示す。
これらのシンドロームおよび対応有効ビットは、特定種類の命令が実行される場合は常に、発明の実施形態において設定される。これらは、モニタを排他的に要求する命令の種類であってもよく、次いで、そのモニタは、それらが、特定ストレージ位置、例えば排他ロード命令などに排他的にアクセスできることを示す。それらはまた、命令ストリーム内の後の命令の実行が例外ハンドラの実行によって変えられ得る他の種類の命令であってもよい。
LDREX命令が第1の位置にアクセスすると、モニタビットは、この第1の位置がアクセスされたことを記録する。モニタは、2つの状態、すなわち、「オープンアクセス」および「排他アクセス」を有する。LDREXは、モニタを「排他アクセス」状態にすることによって第1の位置へのアクセスを要求し、モニタは、アクセスされたアドレスの記録をアドレスタグの形態で保持する。
モニタおよびそれのタグは、排他ストアSTREX命令上でチェックされる。STREX命令は、値が第2の位置に書き込まれることを要求するストア命令である。STREX命令は、モニタが「排他アクセス」状態にある場合にだけ、書き込みを進めることが許され、STREXはタグ付きアドレスに書き込む、すなわち、第2の位置が第1の位置に一致する。モニタは、STREXそれ自体によってばかりではなく、排他クリアCLREX命令によっても、あるいはことによると、タグ付きアドレスにアクセスするいくつかの他の命令によっても、「オープンアクセス」に戻ることを強要される。LDREX命令とSTREX命令との間のソフトウェアコンテキストの変更を引き起こす例外ハンドラに起因して起こり得るソフトウェア誤動作を避けるために、排他モニタはまた、例外リターンによって「オープンアクセス」に戻ることを強要される。このことは、ソフトウェア規定によって、例えば、ERET前にCLREX命令を常に実行することによって行われてもよいし、あるいは、ERET命令を実行するとモニタを「オープンアクセス」状態に戻すことを強要するハードウェアによって強制されてもよい。
マルチプロセッサシステムにおける広域モニタのために、STREXは、アクセスがまた、LDREXを発行した同一プロセッサから生じる場合にだけ書き込みを可能にする。モニタはまた、タグ付きアドレスに近いものなどの他の位置にアクセスする他の命令によって「オープンアクセス」状態にクリアされてもよい。
それゆえに、単一LDREX命令の実行に続くこの実施形態では、シングルステップモードを示すよう設定されたMDSCR.SS制御ビットに応答して、診断例外は取られ、ESR.EXおよびESR.ISVビットが設定され、次いで、診断コードが実行される。診断コードは、ESR.ISV有効ビットおよび対応ESR.EXシンドロームビットが設定されることを検出し、これらは、前の命令が、シングルステップモードが適切ではない既定種類の1つであったことを示すので、例外ハンドラから戻るとシングルステップモードが実行され、命令ストリームの通常実行が生じるように、プロセッサにMDSCR.SSおよびSPSR.SSビットをクリアすることを命令する。
診断コードはまた、命令ストリーム内のポイントを示す適切なブレークポイントを設定し、このことは、診断回路が、このポイントで通常実行を中断し、必要に応じて、シングルステップモードを再開することを可能にする。
次いで、プロセッサは、ブレークポイントに達するまで、命令ストリームの次の部分を実行する。このブレークポイントは、コードのブロックの後にあるコード内の位置に設定されていることになり、そしてそれの実行は、命令間で生じている例外によって変えられる。
実行されるコードは、例えば、セマフォ変数への排他アクセスを得るように試みるコードであってもよい。
ループ
LDREX R5、 [R1] ; ロック(排他ロード)を読み取る
CMP R5、 #0 ; 0かどうかをチェックする
STREXEQ R5、 R0、 [R1] ; 新しい値を格納することを試みる
CMPEQ R5、 #0 ; 格納が成功したかどうかを検査する
BNE ループ ; そうではない場合、再試行する
この例において、コードは、セマフォを取得するまでループする。次いで、コードは、ループを正常に出ることになり、したがって、ブレークポイントは、シングルステップモードに戻ることを可能にするコードのこのセクションの後に置かれ得る。
他のコードでは、ソフトウェアは、それがセマフォを取得しない場合、何か他のことをするよう望む可能性がある。コードは、別の処理がセマフォを取得した可能性があり、それゆえ、それが、利用可能になるためにいくらか時間がかかり得る場合を考慮に入れるように、このようにして書き込まれ得る。これは、異なる種類のコードである。


ループ
LDREX R5、 [R1] ; ロック(排他ロード)を読み取る
CMP R5、 #0 ; 0(セマフォがフリーである)かどうかを
チェックする
BNE SomethingElse ; そうではない場合、何か他のことをする
STREX R5、 R0、 [R1] ; 新しい値を格納することを試みる
CMP R5、 #0 ; 格納が成功したかどうかを検査する
BNE ループ ; そうではない場合、再試行する
STREXの失敗は、セマフォが別の処理によって取られていないことを必ずしも暗示しないので、STREXが失敗する場合、コードはループし、再試行する価値があることに留意する。
LDREXのステップを踏んだこの場合において、デバッガは、ループについて2つの出口ポイントを見つけ、1つは、コードのこのセグメントの終わりにあり、1つは、ラベル「SomethingElse」(図示しない)にある。そのため、デバッガは、それらの両方上にブレークポイントを設定しなければならない。
上記実施形態では、プロセッサは、通常実行を再開し、排他ロード命令後からコードを実行し続けた。他の実施形態では、診断コードは、これが適切である場合、排他ロード命令を再実行するためにプロセッサを制御してもよいし、あるいは、シングルステップモードにおいて実行されるべきではないコードのセクションをそれ自体でエミュレートし、次いで、コードのこのセクションの後に、この場合においては排他ストア命令後に、コードの実行を開始するようプロセッサを制御してもよい。
診断コードが、設定される有効ビットESR.ISVおよびシンドロームビットESR.EXに応答して、シングルステップ診断モードを出るためにプロセッサを制御するよう構成されなかった場合、診断例外から戻ると、例外ハンドラは、排他モニタをクリアすることになり、コードは、前進しないことになる。
図4は、優先度の高い割り込みが、排他ロード命令がシングルステップモードにおいて実行された(MDSCR.SS=1)後に保留になっている実施形態を示す。この実施形態では、複数の例外レベルがある。診断コードは、EL1で実行しており、単一命令がシングルステップモードにおいて実行されることを示すことは、それの保存された状態レジスタ内の保存されたステップ数ビット、SPSR_EL1.SSを1に設定する。それは、ERET命令を実行し、図3に示すように、そのERET命令はSPSR_EL1.SSをCPSR.SSにコピーする。排他ロード命令が実行された後に、CPSR.SSは0にクリアされる。それゆえに、割り込みが、保留になってもいる診断例外に優先して例外レベル2EL2で取られると、プロセッサは、EL2 SPSR_EL2.SSビットについて保存されたステップ数ビットを0に設定する。割り込みが処理されている場合、割り込みから戻るための命令が実行される。これは、(例外から戻ると一般に行われるように)排他モニタをクリアし、SPSR_EL2.SSをCPSR.SSにコピーする。ステップ数ビットCPSR.SSはここで0に設定されるので、診断例外が、何の命令も実行することなく生じられる。命令が実行されなかったので、プロセッサ20は、排他モニタと関連付けられた有効ビットESR.ISVをゼロに設定し、前に実行されている命令の種類であって、排他モニタを要求した可能性がある命令の種類が、未知であることを示す。
ゼロであるESR.ISVを検出することに応答して、デバッグコードは、どの命令が前に実行されたかを判断する必要があり、それゆえに、この命令のためのコードをプロセッサに要求する。そのような要求と関連付けられたいくつかのオーバーヘッドがあるが、この要求は、命令がシングルステップモードにおいて実行された後に例外が発生している状況だけに必要とされ、それゆえに、要求される各命令を必要とすることとはかなり異なる。
図5は、命令がシングルステップを踏まれるすぐ前にEL2優先度割り込みが受信される場合に、何が起こるかを示す。この場合において、ステップ数インジケータCPSR.SSは、割り込みがなされる場合に1に設定され、したがって、SPSR_EL2.SSは1に設定され、それゆえに、この例外から戻ると、次の命令、排他ロードが実行され、次いで、診断例外が取られる。実行された命令が排他ロード命令であったので、プロセッサ20は、ESR.EXビットおよびESR.ISVビットを設定し、それゆえに、診断コードは、これに応答してSPSR_EL1.SSおよびMDSCR.SS値をクリアし、1つまたは複数の第1の設定ブレークポイントを有する通常オペレーティングモードに入るようにプロセッサを制御する。
要約すれば、ソフトウェアステップ診断例外が命令ステップのすぐ後に続いて生じられる場合、有効ビットESR.ISVが1に設定され、ソフトウェアステップデバッグ例外が、命令をちょうど実行すること無く生じられる場合には、有効ビットESR.ISVが0に設定される。
図6は、ソフトウェアステップモードにおけるプロセッサの可能な状態を示す。
MDSCR.SSビットが設定されない場合には、プロセッサは、シングルステップモードにおいて実行していない。それゆえに、最初に、プロセッサのソフトウェアステップ状態は、非アクティブ状態であり、無効化され、デバッガは診断ソフトウェアを実行する。次いで、MDSCR.SSビットおよびSPSR.SSビットは、ステップモードが、デバッガからの例外リターンを実行すると入れられることを示すように設定される。例外から戻ると、プロセッサは、アクティブな非保留状態に入り、その状態において、単一命令が実行され得る(すなわち、ソフトウェアステップはアクティブであるが、この時点で診断例外は保留になっていない)。プロセッサは、デバッギーコードを実行している場合、この状態にあり、MDSCR.SSビットはシングルステップモードを示して設定され、CPSR.SSビットは1つの命令が実行されることを示して設定される。
プロセッサは、単一命令を実行することによって、あるいは取られる例外によって、この状態から出る可能性がある。プロセッサが命令を実行する場合には、CPSR.SSは、シングルステップが完了したことを示すゼロにリセットされる。この段階では、ソフトウェアステップ診断例外は、ここで保留になっており、それゆえ、ソフトウェアステップ状態は、アクティブな保留状態になっている。
プロセッサはまた、ソフトウェアステップ診断例外以外の例外を取ることによってこの状態から出る可能性があり、その結果、この例外が診断例外よりも高い優先度のものである場合、ソフトウェアステップ状態は、それが処理される間に無効化される。例外の種類次第で、および、例外が、命令が実行される前または後に生じるかどうかによって、SPSR.SSビットは、例外を取ると1または0であり、次いで、例外ハンドラから戻ると、プロセッサは、アクティブな非保留状態またはアクティブな保留状態に戻る。
しかしながら、他の例外が診断例外よりも低い優先度のものである場合、CPSR.SSビットは、シングルステップが完了したことを示すゼロにリセットされる。この段階では、ソフトウェアステップ診断例外はここで保留になっており、それゆえ、ソフトウェアステップ状態は、アクティブな保留状態になっている。
アクティブな保留状態から、ソフトウェアステップ診断例外が取られ、CPSR.SSをSPSR.SSにコピーする。実行はデバッガに戻り、ソフトウェアステップ状態は無効化される。MDSCR.SSビットは、まだシングルステップモードを示して設定され、SPSR.SSビットは、ステップが実行されたことを示してクリアされる。
図7aは、本発明の実施形態に係る方法におけるステップを例示するフロー図を示す。その方法は、診断装置が、制御レジスタにおけるシングルステップビットを設定することと、ステップ数を1に設定することとによって、シングルステップ診断モードに入ることで始まる。
次いで、その方法は、(「A」とラベルされた接続経由で)ステップを踏まれるコードに戻ることによって進む。
最初にステップ数は1であるので、次いで、保留になっている例外が無い場合、単一命令が実行される。この命令が例外を生じさせないことを仮定すると、ステップ数は、ゼロに設定され、他の例外が保留になっていない場合、装置はまた、命令が既定種類のものであったかを判断し、この種類は、命令の実行後に例外を取ることが、次の命令がどのように実行するかに影響を及ぼすことになる種類である。次いで、その命令がその種類である場合、有効ビットは状態レジスタにおいて設定され、そうではない場合、有効ビットが設定され、その種類ビットはクリアされる。診断例外はここで取られ、方法は(「B」とラベルされた接続経由で)続く。
その方法が完了していないと仮定すると(これがどのように判断されるかについての詳細は図示しない)、診断装置は、診断例外がソフトウェアステップに起因したことを判断し、更に、そうである場合、有効ビットおよび種類ビットが設定されるかどうかが更に判断される。有効ビットが設定され、種類ビットがクリアされる場合には、その方法は、ステップ数を1に設定するために戻り(シングルステップ制御ビットはまだ設定される)、次の命令のステップを踏むことによって続く。これは、その方法を通した最も一般的なパスであり、また最適なパスであることに留意する。
しかしながら、有効ビットおよび種類ビットの両方が設定される場合には、これは、シングルステップモードが抑制されるべきことの表示であり、シングルステップビットはクリアされ、(複数の)ブレークポイントは、シングルステップモードが再開され得るコード内の(複数の)適切なポイントに設定される。
同様に、有効ビットが、診断例外を取ると設定されないよう判断された場合には、その方法は、(複数の)既定種類の1つであったかどうかを見るためにステップを踏まれた命令の直接検査を実行する。この検査に基づいて、その方法は、シングルステップモードを進めるか、あるいは(複数の)ブレークポイントを設定するかどうかを判断する。その方法は、(接続「A」経由で)ステップを踏まれるコードに戻ることによって再度進行する。
(複数の)ブレークポイントが使用されている場合には、しかしながら、ブレークポイントに達し、診断例外が取られるまで、命令が命令ストリームとして実行されるように、シングルステップ制御ビットは設定されない。診断例外がブレークポイントに起因したことが後で判断されるので、(複数の)ブレークポイントは取り除かれ、シングルステップ制御ビットが設定され、ステップ数が1に設定され、それゆえ、シングルステップモードが再開する。
割り込みおよび他の例外が、通常の手法における命令ストリームの実行の間に生じ、取られる可能性があることが留意されるべきである。
デバッグされるコードからの(複数の)命令を実行する間はいつでも、非診断例外が保留になっている場合には、その非診断例外が取られることになる。命令が実行される前に取られる例外について、および、実行される命令によって生じるシステムコール(syscall)例外(メモリ管理障害など)以外の例外について、ステップ数は例外を取る前に変更されない(1である)。これらの場合において、例外は有効に命令をキャンセルし、それが、ステップを踏まれた場合、再度ステップを踏まれるべきであることを意味する。
それゆえに、例外を取ると、ステップ数は例外ハンドラのためにSPSR内に記録される。次いで、ステップ数はゼロに設定される。
非診断例外は、診断例外の優先度よりも低い優先度を有し得ることが更に留意されるべきである。この場合には、ソフトウェアステップ制御ビットは非診断例外の処理の間に有効であり、そして、ステップ数がここでゼロであるので、診断例外は即時に取られることになる。命令は実行されないので、有効ビットおよび種類ビットの両方がクリアされる。
命令後に取られる高優先度の割り込みおよび命令によって生じるシステムコール例外について、命令は有効に完了し、そうして、ステップ数は例外を取る前にゼロに設定される。診断例外およびシステムコール例外よりも高い優先度を有する割り込みだけが、このポイントで取られ得る。
そうではない場合、例外から戻ると、シングルステップ制御ビットが設定される場合、ステップ数がSPSRから復元され、評価される。ステップ数が1である場合には、これは例外が、ステップモードにおける命令が完了される前に取られたことを示し、次いで、例外から戻ると、ストリーム内の命令が再実行される。
ステップ数がゼロである場合には、これは、例外が、ステップモードにおける命令の実行が完了した後であって、その命令と関連付けられた診断例外を取る前に取られたことを示す。この場合において、優先度の高い例外が保留になっていないことを仮定すると、診断例外が即時に取られる。しかしながら、有効ビットおよび関連付けられた種類ビットは、命令の種類を示す値は、他の命令が一方で実行されることになるので判断され得ないことを示すために、クリアされなければならない。
それゆえに、(「B」経由で)診断例外を取ると、有効ビットがクリアであることが判断されることになり、その方法は、(複数の)既定種類の1つであったかどうかを見るために、ステップを踏まれた命令の直接検査を実行する。この検査に基づいて、その方法は、シングルステップモードを進めるべきかどうか、あるいは(複数の)ブレークポイントを設定するかどうかを判断する。
その方法は、上記したように、ステップを踏まれるコードに戻ることによって(「A」経由で)再度進行する。
図7bは、本発明の更なる実施形態に係る方法におけるステップを例示するフロー図を示す。この方法は、一般に、デバッガが例えば図1に示される外部装置などの外部装置上にある「外部デバッグ」の場合のために使用される。この場合において、インジケータ値は、プログラムがステップを踏んでいることであり得る診断例外の理由を示し、その場合において、インジケータ値は、命令の種類を示すことになり、あるいは、デバッグイベント/診断例外の別の理由であり得る。それゆえに、このインジケータ値は、既定種類のものではないステップを踏まれる命令、既定種類のステップを踏まれる命令、未知の種類のステップを踏まれる命令を含む複数の可能な値を有し、その3つの種類についての値は、0110、0111、および1110であり得る。他の値は、デバッグイベント/診断例外の他の理由、例えば取られるブレークポイント、停止要求などを示すために使用される。これらの可能な値は、図7cの表に示される。これらは、その方法において生じ得る単なるイベント種類であるので、ステップおよびブレークポイント値だけが図7bのフロー図において考慮される。
それゆえに、図7aに示すように、その方法は、制御レジスタ内でシングルステップビットを設定し、ステップ数を1に設定することによって、診断装置をシングルステップ診断モードに入れることによって始まる。
次いで、その方法は、ステップを踏まれるコードに戻ることによって(「A」とラベルされた接続経由で)進行する。
最初にステップ数は1であるので、保留になっている例外がない場合、単一命令が実行される。この命令が例外を生じないことを仮定すると、ステップ数はゼロに設定され、他の例外が保留になっていない場合、装置はまた、命令が既定種類のものであったかどうかを判断し、この種類は、命令の実行後に例外を取ることが、次の命令をどのように実行するかに影響を及ぼすことになる種類である。命令が既定種類のものである場合には、種類表示は、状態レジスタ内でSTEPexclに設定され、命令が既定種類の1つではない場合には、種類表示はSTEPokに設定される。診断例外はここで取られ、方法は(「B」とラベルされた接続経由で)続く。
その方法が完了していないと仮定すると(これがどのように判断されるかについての詳細は図示しない)、診断装置は、種類の表示が何に設定されるかを判断する。その種類表示が、命令が既定種類の1つではなかったことを示すSTEPokに設定された場合には、その方法は、ステップ数を1に設定するよう戻り(シングルステップ制御ビットはまだ設定される)、次の命令のステップを踏むことによって続く。これは、その方法を通した最も一般的なパスであり、また最適なパスであることに留意する。
種類の表示が、命令の種類が未知であることを示すSTEPunknownに設定される場合には、その方法は、命令が(複数の)既定種類の1つであったかどうかを見るために、ステップを踏まれた命令の直接検査を実行する。この検査に基づいて、その方法は、シングルステップモードを続けるかどうか、あるいは(複数の)ブレークポイントを設定するかどうかを判断する。その方法は、ステップを踏まれるコードに戻ることによって(接続「A」経由で)再度進行する。
種類の表示が、ステップを踏まれた命令が既定種類のものであったことを示すSTEPexclに設定される場合には、これは、シングルステップモードが抑制されるべきであるという表示であり、シングルステップ制御ビットはクリアされ、(複数の)ブレークポイントは、シングルステップモードが再開され得るコード内の(複数の)適切なポイントに設定される。
(複数の)ブレークポイントが使用されている場合には、シングルステップ制御ビットは、ブレークポイントに達するまで、命令が命令ストリームとして実行されるよう設定されない。この時点では、表示種類は、診断例外がブレークポイントに起因するものであるのでBRKに設定され、診断例外が取られる。後ほど、BRKである種類表示に応答して、(複数の)ブレークポイントが取り除かれ、シングルステップ制御ビットが設定され、ステップ数が1に設定され、次いで、シングルステップモードが再開する。
割り込みおよび他の例外は、通常の手法における命令ストリームの実行の間に、生じ、取られる可能性があることが留意されるべきである。
デバッグされるコードからの(複数の)命令を実行する間はいつでも、非診断例外は、保留になっている場合には、取られることになる。命令が実行される前に取られる例外について、および、実行される命令によって生じるシステムコール(syscall)例外以外の例外(メモリ管理障害など)について、ステップ数は、例外を取る前に変更されない(1である)。これらの場合において、例外は、有効に命令をキャンセルし、それがステップを踏まれていた場合、再度ステップを踏まれるべきであることを意味する。
ステップ数は、例外ハンドラのためにSPSR内に記録される。次いで、ステップ数はゼロに設定される。
非診断例外は、診断例外の優先度よりも低い優先度を有し得ることが更に留意されるべきである。この場合には、ソフトウェアステップ制御ビットは、非診断例外の処理の間に有効であり、そして、ステップ数はここでゼロであるので、診断例外は即時に取られることになる。命令は実行されないので、種類の表示はSTEPunknownに設定される(図示しない)。
命令後に取られた優先度の高い割り込みおよび命令によって生じたシステムコール例外について、命令は有効に完了し、次いで、ステップ数は、例外を取る前にゼロに設定される。診断例外およびシステムコール例外よりも高い優先度を有する割り込みだけが、このポイントで取られ得る。
その他の場合には、シングルステップ制御ビットが設定される場合、例外から戻ると、ステップ数はSPSRから復元され、評価される。ステップ数が1である場合には、これは、例外が、ステップモードにおける命令が完了される前に取られたことを示し、次いで、例外から戻ると、ストリームにおける命令が再実行される。
それがゼロである場合には、これは、例外が、ステップモードにおける命令の実行が完了した後ではあるが、その命令と関連付けられた診断例外を取る前に、取られたことを示す。この場合において、優先度の高い例外が保留になっていないことを仮定すると、診断例外が即時に取られ、種類の表示が、診断例外を取るより前にSTEPunknownに設定され、命令の種類が、他の命令が一方で実行されていることになるので判断され得ないことを示す。
それゆえに、(「B」経由で)診断例外を取ると、表示種類がSTEPunknownであることが判断されることになり、その方法は、命令が(複数の)既定種類の1つであったかを見るために、ステップを踏まれた命令の直接検査を実行する。この検査に基づいて、その方法は、シングルステップモードを進めるかどうか、あるいは(複数の)ブレークポイントを設定するかどうかを判断する。
図8は、使用され得る仮想マシンインプリメンテーションを例示する。前に記載した実施形態は、関係している技術を支援する特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実施するが、ハードウェアデバイスのいわゆる仮想マシンインプリメンテーションを提供することも可能である。これらの仮想マシンインプリメンテーションは、仮想マシンプログラム510を支援するホストオペレーティングシステム520を典型的に走らせるホストプロセッサ530上で走る。典型的に、大型で強力なプロセッサは、適度な速度で実行する仮想マシンインプリメンテーションを提供するよう要求されるが、そのようなアプローチは、一定状況、例えば、互換性または再利用の理由のために別のプロセッサ生まれのコードを走らせる要望があるときなどにおいて、妥当とされ得る。仮想マシンプログラム510は、そのような実際のハードウェアデバイスによるプログラムの実行で与えられることになるのと同じ結果を与えるように、アプリケーションプログラム(またはオペレーティングシステム)500を実行することができる。それゆえに、動作のこのモードへの出入りの制御を含むプログラム命令の診断ステップは、仮想マシンプログラム510を用いてアプリケーションプログラム500内から実行されてもよい。
本発明の様々な更なる態様および特徴は、添付された特許請求の範囲において定義される。様々な修正は、本発明の範囲から逸脱することなく、前に記載された本明細書中における実施形態になされ得る。

Claims (37)

  1. 命令ストリームを処理するプロセッサを診断する方法であって、
    (i)前記命令ストリームからの単一命令が実行されるように、シングルステップモードにおいて実行するように前記プロセッサを制御することであって、前記プロセッサは、前記単一命令が、少なくとも1つの既定種類の命令の1つであるかどうかを判断し、データストレージ位置に種類インジケータを格納し、診断例外は、前記プロセッサが前記単一命令を処理した後に取られる、前記プロセッサを制御することと、
    (ii)前記データストレージ位置内に格納された前記種類インジケータにアクセスすることを含む前記診断例外の後に続く診断動作を実行することと、
    (iiia)前記単一命令が前記既定種類の1つではなかったことを示す前記種類インジケータに応答して、次の単一命令が、前記診断例外から戻ると実行されるように、前記シングルステップモードにおける命令を実行し続けるように前記プロセッサを制御することと、
    (iiib)前記単一命令が前記少なくとも1つの既定種類の1つであったことを示す前記種類インジケータに応答して、前記シングルステップモードを出て、後に診断例外が続く単一命令として前記命令ストリーム内の前記次の命令を実行しないように前記プロセッサを制御することと、を含む、方法。
  2. 前記ステップ(iiib)は、前記診断例外から戻ると、前記命令ストリーム内の複数の命令を実行するように前記プロセッサを制御することを含む、請求項1に記載の方法。
  3. 前記複数の命令は、前記命令ストリーム内の前記実行された単一命令に続く複数の命令を備える、請求項2に記載の方法。
  4. 前記複数の命令は、前記命令ストリーム内の前記実行された単一命令に続く複数の命令であって前記単一命令を含む複数の命令を備える、請求項2に記載の方法。
  5. 前記複数の命令が、少なくとも1つのブレークポイントに達するまで実行されるように、前記単一命令が、前記命令ストリーム内の前記少なくとも1つのブレークポイントを設定する前記少なくとも1つの既定種類の1つであったことを示す前記種類インジケータに応答して、もし他の例外が前記複数の命令の実行の間に受信されないならば、前記少なくとも1つのブレークポイントに達したことに応答してブレークポイント診断例外を取る更なるステップを含む、請求項2〜4のいずれか一項に記載の方法。
  6. 前記ステップ(iiib)は、前記命令ストリーム内の前記実行された単一命令および少なくとも1つの後の命令をエミュレートすることと、次いで、エミュレートされた前記少なくとも1つの後の命令の後に続く前記命令ストリーム内の命令から前記シングルステップモードを開始するよう前記プロセッサを制御することと、を含む、請求項1に記載の方法。
  7. 前記データストレージ位置内に格納された前記種類インジケータは、前記命令が前記既定種類の1つであったこと、または前記命令が前記既定種類の1つではなかったこと、あるいは前記命令が未知の種類のものであることを示し、前記種類インジケータにアクセスする前記ステップにおいて、前記種類インジケータが、前記命令が未知の種類のものであることを示すことが判断される場合、前記単一命令を検査し、前記単一命令が前記既定種類のものであるかを判断する追加的ステップが、実行される、請求項1〜6のいずれかに記載の方法。
  8. 前記種類インジケータは2つのインジケータ値を備え、第1の値は、前記命令が、前記既定種類のものであるか、または前記既定種類のものではないかを示し、第2の値は、前記第1の値が有効であるかどうかを示し、無効である前記第2の有効値は、前記命令が前記未知の種類のものであることを示す、請求項7に記載の方法。
  9. 前記種類インジケータは、取られた診断例外の種類の表示を更に備える、請求項7に記載の方法。
  10. 前記方法は、前記単一命令ステップ診断方法が実行されることを示す単一命令ステップ制御値を設定し、前記命令ストリーム内の単一命令が、次の診断例外が取られる前に実行されることを示すステップインジケータ値を設定する最初のステップを含む、請求項1〜9のいずれかに記載の方法。
  11. ゼロ命令が、次の診断例外を取る前に実行されることを示す前記ステップインジケータ値に応答して、前記種類インジケータは、前記診断例外を取ると未知の種類に設定される、請求項7〜9のいずれか一項に従属する場合の請求項10に記載の方法。
  12. 前記次の診断例外を取る前の前記プロセッサのフラッシュ状態に応答して、前記種類インジケータは、前記実行された命令が前記未知の種類のものであることを示すように設定される、請求項7〜9のいずれか一項に従属する場合の請求項10に記載の方法。
  13. 前記命令ストリーム内の少なくとも1つの後の命令が別々に実行し得るように、前記既定種類は、例外へ入るまたは例外から戻ると例外ハンドラによって実行される動作が、前記プロセッサを備える装置の状態を変更する命令の種類を含む、請求項1〜12のいずれかに記載の方法。
  14. 前記少なくとも1つの既定種類の命令の1つは、ロック位置にアクセスする命令を含み、前記ロック位置はロック値とクリア値とのうちの1つを格納し、前記クリア値は、プロセッサが既定ストレージ位置に書き込むことができることを示し、前記ロック値は、前記ロック値を格納したプロセッサのための前記既定ストレージ位置への排他書き込みアクセスを示す、請求項13に記載の方法。
  15. 請求項1〜14のいずれか一項に記載の方法におけるステップを実行するために、データ処理装置によって実行されるときに前記データ処理装置を制御するコンピュータプログラムを格納するためのコンピュータプログラム製品。
  16. 命令ストリームを処理するプロセッサを解析するための診断装置であって、
    前記診断装置は、
    制御信号を前記プロセッサに出力するための出力、およびデータを前記プロセッサから受信するための入力と、
    診断動作を実行するための診断回路と、を備え
    前記診断回路は、前記命令ストリーム内の単一命令が実行され、次いで、診断例外が取られるように、前記プロセッサがシングルステップモードにおいて実行するためのものであることを示すインジケータ値を設定するために、制御信号を前記プロセッサに出力するように構成され、
    前記診断回路は、前記実行された単一命令が、少なくとも1つの既定種類の命令の1つであったかどうかを示す種類インジケータを格納するためにストレージ位置にアクセスするように構成され、
    前記実行された単一命令が前記既定種類の1つではなかったことを示す前記種類インジケータに応答して、次の単一命令が、前記診断例外から戻ると実行されるように、前記診断回路は、前記シングルステップモードにおける命令を実行し続けるために前記プロセッサを制御するように構成され、
    前記実行された単一命令が前記少なくとも1つの既定種類の1つであったことを示す前記種類インジケータに応答して、前記診断回路は、前記シングルステップモードを出て、前記命令ストリーム内の前記次の命令を診断例外の後に続く単一命令として実行しないために、前記プロセッサを制御するように構成される、診断装置。
  17. 前記実行された単一命令が、前記少なくとも1つの既定種類の1つであったことを示す前記種類インジケータに応答して、前記診断回路は、前記診断例外から戻ると、前記命令ストリーム内の複数の命令を実行するために、前記プロセッサを制御するように構成される、請求項16に記載の診断装置。
  18. 前記複数の命令は、前記命令ストリームにおいて前記実行された単一命令の後に続く複数の命令を備える、請求項17に記載の診断装置。
  19. 前記複数の命令は、前記命令ストリームにおいて前記実行された単一命令の後に続く複数の命令であって、前記単一命令を含む複数の命令を備える、請求項17に記載の診断装置。
  20. 前記診断回路は、前記実行された命令が前記少なくとも1つの既定種類の1つであったことを示す前記種類インジケータに応答して、前記複数の命令の後に前記命令ストリーム内にブレークポイントを設定するように、構成される、請求項17〜19のいずれか一項に記載の診断装置。
  21. 前記診断回路は、前記命令ストリームにおける前記実行された単一命令および少なくとも1つの後の命令をエミュレートし、エミュレートされた前記少なくとも1つの後の命令に続く命令から前記シングルステップモードを開始するよう制御信号を前記プロセッサに出すように構成される、請求項16に記載の診断装置。
  22. 前記データストレージ位置内に格納された前記種類インジケータは、前記命令が前記既定種類の1つであったこと、または前記命令が前記既定種類の1つではなかったこと、あるいは、前記命令が未知の種類のものであることを示し、前記診断回路は、前記種類が未知であることを示す前記種類インジケータに応答して、前記プロセッサに前記実行される単一命令を要求し、前記命令から前記種類を判断するように、構成される、請求項16〜21のいずれか一項に記載の診断装置。
  23. 前記種類インジケータは2つのインジケータ値を備え、第1の値は、前記既定種類であることまたは前記既定種類ではないことを示し、第2の有効値は、前記第1の値が有効であるかどうかを示し、無効である前記第2の有効値は、前記命令が前記未知の種類のものであることを示す、請求項16〜22のいずれか一項に記載の診断装置。
  24. 前記種類インジケータは、取られる診断例外の種類の表示を更に備える、請求項16〜22のいずれか一項に記載の診断装置。
  25. 命令ストリームを処理するためのプロセッサと、前記プロセッサを解析するための請求項16〜24のいずれか一項に記載の診断装置と、を備える、データ処理装置。
  26. 前記種類インジケータを格納するためのストレージ位置を備え、前記プロセッサは、前記命令ストリームからの前記単一命令を実行することに応答して、前記単一命令が少なくとも1つの既定種類の1つであるかどうかを判断し、前記単一命令が前記既定種類のものであるか否かを示す種類インジケータを格納するように構成される、請求項25に記載のデータ処理装置。
  27. 前記プロセッサは、前記単一命令の1つの実行の後に前記診断例外以外の例外を取ることに応答して、前記実行された命令が未知の種類のものであることを示すために前記種類インジケータを設定するように、構成される、請求項25または26に記載のデータ処理装置。
  28. 前記診断装置は、単一命令ステップ診断方法を実行し、前記方法を実行するときに、前記単一命令ステップ診断方法が実行されることを示す単一命令ステップ制御値を設定し、前記命令ストリームにおける単一命令が、次の診断例外が取られる前に実行されることを示すステップインジケータ値を設定するように構成される、請求項25〜27のいずれか一項に記載のデータ処理装置。
  29. 前記プロセッサは、前記単一命令の1つの実行の後に取られる前記診断例外以外の例外に応答して、ゼロ命令を示す前記ステップインジケータ値を設定するように、構成され、前記例外から戻ると、前記ステップインジケータ値に応答して、全く命令が実行されず、前記プロセッサが保留になっている診断例外を取るように、構成される、請求項28に記載のデータ処理装置。
  30. 前記少なくとも1つの既定種類の命令の1つは、ロック位置にアクセスする命令を含み、前記ロック位置は、ロック値とクリア値とのうちの1つを格納し、前記クリア値は、プロセッサが既定ストレージ位置に書き込むことができることを示し、前記ロック値は、前記ロック値を格納したプロセッサのための前記既定ストレージ位置への排他書き込みアクセスを示す、請求項25〜29のいずれか一項に記載のデータ処理装置。
  31. データを処理するためのプロセッサと、制御データを格納するための複数のストレージ位置とを備える、データ処理装置であって、
    前記ストレージ位置の少なくとも1つはシングルステップモード制御値を格納し、前記データ処理装置は、診断例外が各命令の実行後に取られるように、シングルステップモードにおける命令ストリームからの前記命令を実行するように設定された前記シングルステップモード制御値に応答するよう構成され、
    前記プロセッサは、前記シングルステップモード制御値が設定されるときに、前記プロセッサによって実行される各命令について前記命令が少なくとも1つの既定種類の1つであろうかどうかを判断し、種類インジケータを前記ストレージ位置の1つの中に格納するように構成され、前記種類インジケータは、前記命令が前記既定種類の1つであったこと、または前記命令が前記既定種類の1つではなかったこと、あるいは前記命令が未知の種類のものであることを示す、データ処理装置。
  32. 前記種類インジケータの格納装置は、2つの値用の格納装置を備え、第1の値は、前記種類が前記既定種類のものであるか否かを示し、第2の値は、前記第1の値が有効であるか否かを示し、前記未知の種類は、前記第1の値が無効であることを示す前記第2の値によって表わされる、請求項31に記載のデータ処理装置。
  33. 前記種類インジケータは、取られた診断例外の種類の表示を更に備える、請求項31に記載のデータ処理装置。
  34. 前記データ処理装置は、前記次の診断例外を取る前の前記プロセッサのフラッシュ状態に応答して、前記実行された命令が前記未知の種類のものであることを示すために前記種類インジケータを設定するように、構成される、請求項31〜34のいずれか一項に記載のデータ処理装置。
  35. 前記ストレージ位置の1つは、1またはゼロ命令が、次の診断例外を取る前に実行されることを示すステップインジケータ値を格納するように構成され、前記データ処理装置は、ゼロである前記ステップインジケータ値に応答して前記診断例外を取ると、前記種類インジケータを前記未知の種類に設定するように構成される、請求項31〜34のいずれか一項に記載のデータ処理装置。
  36. 前記既定種類は、前記命令ストリーム内の後の命令が別々に実行され得るように、例外へ入るまたは例外から戻ると例外ハンドラによって実行される動作が、前記処理装置の状態を変更する命令の種類を含む、請求項30〜34のいずれか一項に記載のデータ処理装置。
  37. データ処理装置上で実行するコンピュータプログラムによって提供された仮想マシンであって、請求項25〜36のいずれか一項に記載の前記データ処理装置に係る命令実行環境を提供する仮想マシン。
JP2013558495A 2011-03-14 2012-02-03 シングルステップ実行を用いる診断コード Active JP5905911B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1104254.6 2011-03-14
GB1104254.6A GB2489000B (en) 2011-03-14 2011-03-14 Diagnosing code using single step execution
PCT/GB2012/050232 WO2012123706A1 (en) 2011-03-14 2012-02-03 Diagnosing code using single step execution

Publications (2)

Publication Number Publication Date
JP2014508367A true JP2014508367A (ja) 2014-04-03
JP5905911B2 JP5905911B2 (ja) 2016-04-20

Family

ID=43980928

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013558495A Active JP5905911B2 (ja) 2011-03-14 2012-02-03 シングルステップ実行を用いる診断コード

Country Status (10)

Country Link
US (2) US8839038B2 (ja)
EP (1) EP2686772B1 (ja)
JP (1) JP5905911B2 (ja)
KR (1) KR102025078B1 (ja)
CN (2) CN107577593B (ja)
GB (1) GB2489000B (ja)
IL (1) IL227769A (ja)
MY (1) MY158480A (ja)
TW (1) TWI544410B (ja)
WO (1) WO2012123706A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2489000B (en) * 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
WO2013095532A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Interrupt return instruction with embedded interrupt service functionality
GB2517494B (en) * 2013-08-23 2021-02-24 Advanced Risc Mach Ltd Handling time intensive instructions
US9411542B2 (en) * 2014-02-21 2016-08-09 Analog Devices Global Interruptible store exclusive
US20170212763A1 (en) * 2014-07-25 2017-07-27 Hewlettt Packard Enterprise Development Lp Exception handling predicate register
GB2535212B (en) 2015-02-13 2021-08-04 Advanced Risc Mach Ltd An apparatus and method for controlling debugging of program instructions including a transaction
GB2535213B (en) 2015-02-13 2021-10-06 Advanced Risc Mach Ltd An apparatus and method for controlling debugging of program instructions including a transaction
WO2016162802A1 (en) * 2015-04-10 2016-10-13 Oxford University Innovation Limited Computer-aided tracking and motion analysis with ultrasound for measuring joint kinematics
US10747647B2 (en) * 2015-12-22 2020-08-18 Arm Limited Method, apparatus and system for diagnosing a processor executing a stream of instructions
CN106371996B (zh) * 2016-09-07 2019-05-28 东信和平科技股份有限公司 一种断电测试方法及系统
CN114185324B (zh) * 2021-10-25 2024-04-02 华能澜沧江水电股份有限公司 自动发电控制程序的异常点检测方法、装置及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6376028A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd 仮想計算機システムにおける命令ステツプ実行制御方式
JPH05120053A (ja) * 1991-10-25 1993-05-18 Hitachi Ltd データ処理装置
JP2000076095A (ja) * 1998-08-28 2000-03-14 Fujitsu Ltd プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体
JP2008097602A (ja) * 2006-10-10 2008-04-24 Internatl Business Mach Corp <Ibm> 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819234A (en) * 1987-05-01 1989-04-04 Prime Computer, Inc. Operating system debugger
US5050168A (en) * 1989-12-29 1991-09-17 Paterson Timothy L Test coverage analyzer
US5621886A (en) * 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
US5790843A (en) * 1996-09-19 1998-08-04 International Business Machines Corporation System for modifying microprocessor operations independently of the execution unit upon detection of preselected opcodes
US5938778A (en) * 1997-11-10 1999-08-17 International Business Machines Corporation System and method for tracing instructions in an information handling system without changing the system source code
JP2003508864A (ja) * 1999-09-07 2003-03-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ スレッド志向デバッギング
US7302676B2 (en) * 2000-08-07 2007-11-27 Siemens Aktiengesselschaft Method for debugging flowchart programs for industrial controllers
US6986026B2 (en) * 2000-12-15 2006-01-10 Intel Corporation Single-step processing and selecting debugging modes
GB0124563D0 (en) * 2001-10-12 2001-12-05 Siroyan Ltd Debug exception registers
US7350110B2 (en) * 2002-01-14 2008-03-25 International Business Machines Corporation Method and system using hardware assistance for continuance of trap mode during or after interruption sequences
JP3982353B2 (ja) 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7062684B2 (en) * 2002-12-19 2006-06-13 International Business Machines Corporation Enabling tracing of a repeat instruction
US20050028036A1 (en) * 2003-07-30 2005-02-03 Kohsaku Shibata Program debug apparatus, program debug method and program
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7277998B1 (en) 2004-08-12 2007-10-02 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
JP4537908B2 (ja) 2005-03-29 2010-09-08 株式会社東芝 プロセッサ、メモリ、コンピュータシステムおよびシステムlsi
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US20070168729A1 (en) 2005-12-06 2007-07-19 Mediatek Inc. System and method for testing and debugging electronic apparatus in single connection port
US7853834B2 (en) * 2007-01-30 2010-12-14 Freescale Semiconductor, Inc. Instruction-based timer control during debug
US7823022B2 (en) * 2007-02-20 2010-10-26 Red Hat, Inc. Methods and systems for first occurence debugging
US7827391B2 (en) * 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
US8261240B2 (en) * 2008-01-15 2012-09-04 Microsoft Corporation Debugging lazily evaluated program components
US7992043B2 (en) * 2008-10-22 2011-08-02 International Business Machines Corporation Software debugger for packets in a network on a chip
US8429622B2 (en) * 2010-04-15 2013-04-23 Oracle International Corporation Business process debugger with parallel-step debug operation
US20120102469A1 (en) * 2010-10-22 2012-04-26 International Business Machines Corporation Deterministic application breakpoint halting by logically relating breakpoints in a graph
TW201235833A (en) * 2011-02-16 2012-09-01 Ind Tech Res Inst System and method for multi-core synchronous debugging of a multi-core platform
GB2489000B (en) * 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
US8522213B2 (en) * 2011-05-12 2013-08-27 International Business Machines Corporation Debugger and debugging methods using breakpoints conditioned on the static identity of data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6376028A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd 仮想計算機システムにおける命令ステツプ実行制御方式
JPH05120053A (ja) * 1991-10-25 1993-05-18 Hitachi Ltd データ処理装置
JP2000076095A (ja) * 1998-08-28 2000-03-14 Fujitsu Ltd プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体
JP2008097602A (ja) * 2006-10-10 2008-04-24 Internatl Business Mach Corp <Ibm> 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム

Also Published As

Publication number Publication date
CN107577593A (zh) 2018-01-12
KR102025078B1 (ko) 2019-11-04
IL227769A (en) 2015-03-31
US20140344621A1 (en) 2014-11-20
US20120239913A1 (en) 2012-09-20
KR20140013005A (ko) 2014-02-04
IL227769A0 (en) 2013-09-30
TWI544410B (zh) 2016-08-01
CN103430158A (zh) 2013-12-04
MY158480A (en) 2016-10-14
GB2489000A (en) 2012-09-19
GB2489000B (en) 2019-09-11
JP5905911B2 (ja) 2016-04-20
WO2012123706A1 (en) 2012-09-20
CN103430158B (zh) 2017-08-04
US8839038B2 (en) 2014-09-16
US9201749B2 (en) 2015-12-01
EP2686772A1 (en) 2014-01-22
CN107577593B (zh) 2021-07-06
EP2686772B1 (en) 2018-11-28
TW201237749A (en) 2012-09-16
GB201104254D0 (en) 2011-04-27

Similar Documents

Publication Publication Date Title
JP5905911B2 (ja) シングルステップ実行を用いる診断コード
US6708326B1 (en) Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence
JP5788370B2 (ja) プロセッサ命令セット動作モードを比較するデバッグ回路
JP4094724B2 (ja) ソフトウェアをデバッグする際に例外を識別するための装置および方法
US5751942A (en) Trace event detection during trace enable transitions
US20040030870A1 (en) Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems
KR20070109432A (ko) 커널 인지 디버깅 장치 및 방법
US7793160B1 (en) Systems and methods for tracing errors
KR20200088760A (ko) 체크섬 생성
JPH11110255A (ja) ソフトウェアをデバッグするための装置および方法
US10747647B2 (en) Method, apparatus and system for diagnosing a processor executing a stream of instructions
JP2646957B2 (ja) キャッシュ内蔵マイクロプロセッサ及びそのトレースシステム
US20110185156A1 (en) Executing watchpoint events for debugging in a &#34;break before make&#34; manner
JPH0528002A (ja) マイクロプロセツサ
JP3068578B2 (ja) インサーキットエミュレータおよび飽和演算処理方法
JP2786215B2 (ja) 再開処理制御方式
Zhou et al. A. Summary of the Work
KR19990076180A (ko) 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법
JPS6240550A (ja) プログラムデバツク装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150714

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151014

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160223

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160317

R150 Certificate of patent or registration of utility model

Ref document number: 5905911

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250