JP2007128132A - スレッドデバッグ装置、スレッドデバッグ方法及びプログラム - Google Patents

スレッドデバッグ装置、スレッドデバッグ方法及びプログラム Download PDF

Info

Publication number
JP2007128132A
JP2007128132A JP2005318078A JP2005318078A JP2007128132A JP 2007128132 A JP2007128132 A JP 2007128132A JP 2005318078 A JP2005318078 A JP 2005318078A JP 2005318078 A JP2005318078 A JP 2005318078A JP 2007128132 A JP2007128132 A JP 2007128132A
Authority
JP
Japan
Prior art keywords
thread
threads
target
computer
instruction
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
JP2005318078A
Other languages
English (en)
Other versions
JP4388518B2 (ja
Inventor
Yosuke Konishi
洋祐 小西
Shinichiro Mikami
慎一郎 三上
Makoto Ishii
誠 石井
Yasuyuki Kinoshita
康幸 木下
Atsuhiko Fujimoto
篤彦 藤本
Masayuki Takahashi
誠之 高橋
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2005318078A priority Critical patent/JP4388518B2/ja
Priority to US11/586,345 priority patent/US8136097B2/en
Priority to EP06255589A priority patent/EP1785872A3/en
Publication of JP2007128132A publication Critical patent/JP2007128132A/ja
Application granted granted Critical
Publication of JP4388518B2 publication Critical patent/JP4388518B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/3636Software debugging by tracing the execution of the program
    • 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/3644Software debugging by instrumenting at runtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行う場合に、信頼性の高いデバッグを行うことのできるスレッドデバッグ装置を提供する。
【解決手段】相互に関連して実行される複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、ターゲットコンピュータ20に実行させるとともに、前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記対象スレッドの実行中に、ターゲットコンピュータ20の少なくとも一部のハードウェア資源へのアクセスを制限しつつ、ターゲットコンピュータ20に実行させるスレッドデバッグ装置である。
【選択図】図1

Description

本発明は、コンピュータ上で相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うスレッドデバッグ装置、スレッドデバッグ方法及びプログラムに関する。
デバッガは、コンピュータプログラムの不具合(バグ)発見を支援するコンピュータプログラムである。デバッガを用いることにより、ユーザは任意にソースプログラム中にブレークポイントを設定して、当該ブレークポイントに対応する命令箇所でプログラムの実行を中断させたり、中断させたプログラムの実行を再開させたりすることができる。また、決まった処理量(例えばソースプログラムにおける1ステップに相当する命令)ずつプログラムを実行させたり、プログラム実行中や中断中にレジスタやメモリに格納されたデータの内容を確認したりすることもできる。
特に、GDB(The GNU Source-Level Debugger)を用いたデバッガは、コンピュータ上で実行される複数のスレッドやプロセスなどのうち一部又は全部を任意に指定して、それら指定されたスレッドやプロセスの実行を中断又は再開させたり、それらの実行を所定の処理量ずつ行わせたりすることができる(非特許文献1参照)。
リチャード ストールマン、ローランド ペッシュ、スタン シェブス他、"Debugging with GDB"、[online]、平成12年3月、[平成17年9月22日検索]、インターネット<URL: http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gdb-5.0/gdb-ja_toc.html>
しかしながら、上記従来例の技術を相互に関連して動作する複数のスレッド群の一部に対して適用すると、不都合が生じる場合がある。すなわち、相互に関連して動作する複数のスレッド群のうち、デバッグ対象となる一部のスレッドだけを実行させた場合、当該デバッグ対象スレッドの実行環境は、本来の実行環境とは大きく異なってしまう。なぜなら、デバッグの対象外であるスレッドが実行されないため、これらのスレッドとの間で共有されるメモリ上のデータなどが参照できなくなったり、デバッグ対象スレッドが参照するアドレス空間自体が、スレッド間で共有されるハードウェア資源がマッピングされずに本来のものと異なるものになったりするためである。
一方で、本来の実行環境に近い実行環境でデバッグするために、相互に関連して動作する複数のスレッド群を同時期に実行させることとすると、デバッグ対象以外のスレッドがコンピュータ上のメモリなどのハードウェア資源にアクセスし、例えば共通して参照する変数の書き換えなどを行ってしまう。そのため、例えばある時点以降におけるデバッグ対象スレッドのみの処理内容を検証しようとしても、正しくデバッグ対象スレッドのみの動作を追跡することができない。
本発明は上記実情に鑑みてなされたものであって、その目的の一つは、相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行う場合に、信頼性の高いデバッグを行うことのできるスレッドデバッグ装置、スレッドデバッグ方法及びプログラムを提供することにある。
上記課題を解決するための本発明に係るスレッドデバッグ装置は、コンピュータ上で相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うスレッドデバッグ装置であって、前記複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、前記コンピュータに実行させる対象スレッド実行手段と、前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記対象スレッド実行手段による前記対象スレッドの実行中に、前記コンピュータの少なくとも一部のハードウェア資源へのアクセスを制限しつつ、前記コンピュータに実行させる対象外スレッド実行手段と、を含むことを特徴とする。
これにより、本発明に係るスレッドデバッグ装置は、デバッグ対象スレッドの実行中に、デバッグ対象スレッドと相互に関連するスレッドを、ハードウェア資源へのアクセスを制限しつつ実行させることで、信頼性の高いデバッグを行うことができる。
また、上記スレッドデバッグ装置は、前記対象外スレッドのそれぞれに、自分自身にジャンプする処理を実行する命令を埋め込む命令埋め込み手段をさらに含み、前記対象外スレッド実行手段は、前記対象外スレッドに前記埋め込まれた命令を実行させることで、前記ハードウェア資源へのアクセスを制限することとしてもよい。これにより、本発明に係るスレッドデバッグ装置は、デバッグ対象外のスレッドに対して簡易な処理でハードウェア資源へのアクセスを制限することができる。
さらに、上記スレッドデバッグ装置は、前記複数のスレッドに含まれる各スレッドと、当該各スレッドに対して前記命令埋め込み手段による命令の埋め込みを行ったか否かを表す情報と、を対応づけるスレッドテーブルを保持するテーブル保持手段をさらに含み、前記対象スレッド実行手段は、前記スレッドテーブルに基づいて、前記対象外スレッドの全てに対して、前記命令埋め込み手段による命令の埋め込みを行ったと判定した場合に、前記対象スレッドを前記コンピュータに実行させることとしてもよい。これにより、本発明に係るスレッドデバッグ装置は、例えば各スレッドに対する命令の埋め込みを独立したデバッグプログラムが実行する場合であっても、デバッグ対象外のスレッドに命令を埋め込んで各スレッドを実行させる準備が完了するのを待って、各スレッドを実行させることができる。
また、本発明に係るスレッドデバッグ装置において、前記複数のスレッドは、同時期にそれぞれ前記コンピュータが備える複数のプロセッサのいずれかに割り当てられて実行され、前記各スレッドが割り当てられた前記プロセッサ内のハードウェア資源を互いに参照できるように、前記各スレッドが参照するアドレス空間に前記プロセッサ内のハードウェア資源をマッピングすることとしてもよい。これにより、例えば同時実行させる複数のスレッドによりパイプライン処理などを実現するなどの場合において、信頼性の高いデバッグを行うことができる。
また、本発明に係る他のスレッドデバッグ装置は、コンピュータ上で相互に関連して実行される複数のスレッドであって、それぞれ所定の命令列を順次実行する複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うスレッドデバッグ装置であって、前記複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、前記コンピュータに実行させる対象スレッド実行手段と、前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記対象スレッド実行手段による前記対象スレッドの実行中に、当該対象外スレッドの命令列の処理の進行を制限しつつ、前記コンピュータに実行させる対象外スレッド実行手段と、を含むことを特徴とする。これにより、対象外スレッドの所定の命令箇所以降の命令を実行させないこととなり、複数スレッドを実行する環境におけるデバッグ対象スレッドのみの処理内容を検証でき、信頼性の高いデバッグを行うことができる。
また、本発明に係るスレッドデバッグ方法は、コンピュータ上で相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うスレッドデバッグ方法であって、前記複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、前記コンピュータに実行させる第1のステップと、前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記第1のステップによる前記対象スレッドの実行中に、前記コンピュータの少なくとも一部のハードウェア資源へのアクセスを制限しつつ、前記コンピュータに実行させる第2のステップと、を含むことを特徴とする。
また、本発明に係るプログラムは、コンピュータ上で相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うプログラムであって、前記複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、前記コンピュータに実行させる対象スレッド実行手段、及び前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記対象スレッド実行手段による前記対象スレッドの実行中に、前記コンピュータの少なくとも一部のハードウェア資源へのアクセスを制限しつつ、前記コンピュータに実行させる対象外スレッド実行手段、としてコンピュータを機能させることを特徴とする。
以下、本発明の好適な実施の形態について、図面を参照しながら説明する。
図1は、本発明の一実施形態に係るプログラム開発環境の一例を表す図である。このプログラム開発環境10は、本発明の一実施形態に係るプログラムデバッグ方法を適用したものであり、図示しないデータ通信ネットワークによって接続されたターゲットコンピュータ20及びホストコンピュータ30を含んで構成されている。
ターゲットコンピュータ20は、ホストコンピュータ30によるデバッグの対象となる複数のスレッドを含むプログラムが実行されるコンピュータである。また、ホストコンピュータ30は、本発明の一実施形態に係るスレッドデバッグ装置として機能し、ターゲットコンピュータ20上で実行されるスレッドのデバッグを行うためのコンピュータである。これらのコンピュータとしては、例えば公知のパーソナルコンピュータシステムやワークステーション、あるいはプログラムを実行可能なゲーム機等を用いることができる。
また、ここでは、ターゲットコンピュータ20は、複数のプロセッサユニット(PU)を含んで構成されているものとする。PUは、当該PUに割り当てられたスレッドなどのプログラムに含まれる命令を実行するプロセッサと、当該プロセッサからデータの読み書きが可能なローカルメモリとを含む。
ターゲットコンピュータ20においては、OS(オペレーティングシステム)21が動作している。また、OS21上で、ユーザアプリケーションプログラム22とデバッグエージェントプログラム23が実行される。ユーザアプリケーションプログラム22は、複数のスレッドを実行するプログラムであり、ユーザのデバッグ作業の対象となる。OS21は、これら複数のスレッドを、所定の順序及びタイミングにより複数のPUのいずれかに割り当てるスケジューリング処理を実行する。これにより、複数のスレッドは、ターゲットコンピュータ20上において同時期に実行されることができる。
デバッグエージェントプログラム23は、OS21上で動作する一種のアプリケーションプログラムであって、ホストコンピュータ30からの制御に従って動作し、またOS21から取得したデバッグ用の各種データをホストコンピュータ30に対して送信する。OS21は各種デバッグ用のライブラリプログラムを含んでおり、デバッグエージェントプログラム23はこれらのプログラムを利用してユーザアプリケーションプログラム22に対してスレッドの実行中断や実行再開などの制御を実行したり、メモリやレジスタの内容確認等を行ったりすることができる。また、デバッグエージェントプログラム23は、ユーザアプリケーションプログラム22の処理が予め設定したブレークポイントに到達したことや、プログラム例外の発生、ステップ実行の終了などのイベントを監視し、所定のイベントを検知した場合にホストコンピュータ30に通知する。
ホストコンピュータ30においては、OS31が動作している。また、OS31上で、デバッグ通信プログラム32とホストデバッガプログラム33が実行される。デバッグ通信プログラム32は、ホストデバッガプログラム33とデバッグエージェントプログラム23とのデータ通信を中継するものであり、ホストデバッガプログラム33からの制御命令などのデータをデバッグエージェントプログラム23により処理可能な形式に変換してデータ通信ネットワーク経由で送信する。また、デバッグエージェントプログラム23から送信されたデータをデータ通信ネットワーク経由で受信し、ホストデバッガプログラム33で処理可能な形式に変換してホストデバッガプログラム33に対して出力する。
ホストデバッガプログラム33は、ユーザアプリケーションプログラム22のデバッグ作業を行うための一種のアプリケーションプログラムであり、ユーザアプリケーションプログラム22によって起動される複数のスレッドのうち一部又は全部を指定して、その実行中断や実行再開を指示することができる。また、ユーザアプリケーションプログラム22のソースコード中の任意の位置に対応する命令箇所にブレークポイントを設定したり、ターゲットコンピュータ20のメモリやレジスタにデータを書き込んだり、またそこからデータを読み出したりすることができる。さらに、ターゲットコンピュータ20のメモリやレジスタを参照することで、スレッドリストの取得やスレッドの状態に関する情報の取得を行うことができる。
なお、ここでは、ホストデバッガプログラム33は、少なくとも一つのプロセッサユニット(PU)デバッガ34と、統合開発環境プログラム35と、を含んで構成されているものとする。PUデバッガ34は、ターゲットコンピュータ20が備える複数のPUのうち少なくとも一部のPUに1対1で対応するデバッガプログラムである。PUデバッガ34は、それぞれ対応するPUに割り当てられて実行されているユーザアプリケーションプログラム22のスレッドに対して、制御命令等を発行することによりデバッグ処理を行う。また、統合開発環境プログラム35は、ユーザに統合開発環境を提供するアプリケーションプログラムであって、本実施の形態においてはPUデバッガ34とユーザとの間のインタフェースの役割を果たす。具体的に、統合開発環境プログラム35は、ユーザからのデバッグ指示を行う操作を受け付けて、その指示内容に応じた制御命令等のデータを各PUデバッガ34に対して出力する。また各PUデバッガ34が取得した対応するスレッドの状態や各スレッドが参照するメモリやレジスタの内容等の情報を、ホストコンピュータ30に接続されたディスプレイ等に出力する制御を行う。
また、ホストコンピュータ30は、デバッグ通信プログラム32により読み書き可能なスレッドテーブルを保持している。スレッドテーブルは、例えば図2(a)の例により表されるような内容を含んだデータベースである。図2(a)の例においては、スレッドテーブルは、スレッド識別子と、スレッドグループ識別子と、プロセス識別子と、TCPソケット番号と、当該スレッドの制御情報とを対応づけて保持している。
ここで、スレッド識別子は各スレッドを識別する識別情報であって、OS21上で実行されているスレッドごとに一意の値となる。また、スレッドグループ識別子は、複数のスレッドがOS21上でグループとして管理されている場合に、各スレッドの属するスレッドグループを識別する識別情報である。また、プロセス識別子は当該スレッドを起動したプロセスを識別する識別情報である。これらの識別子の情報は、デバッグエージェントプログラム23から取得できる。また、TCPソケット番号は、各スレッドを制御するPUデバッガ34と通信するためのTCPソケットを表す番号である。さらに、スレッドの制御情報は、PUデバッガ34から出力される各スレッドに対する制御命令と、デバッグエージェントプログラム23から送信されるスレッドの状態に関する情報と、の少なくとも一方に基づいて更新される情報であって、当該スレッドを制御可能な接続が確立しているか否かの情報を含むスレッドの制御のために用いられる情報である。
以下では、プログラム開発環境10による処理の一例について、タイムチャートに基づいて説明する。なお、以下の説明においては、ユーザアプリケーションプログラム22に含まれる複数のスレッドは、それぞれ所定の命令列を順次実行するプログラムであるとする。また、一例として、ユーザアプリケーションプログラム22に含まれる複数のスレッドのうち、スレッドTa、スレッドTb及びスレッドTcの3つのスレッドが相互に関連するものであるとする。
具体的には、これら相互に関連する3つのスレッドはスレッドグループGに属している。OS21は、スレッドグループGに属するこれら全てのスレッドを、同時期にそれぞれ複数のPUのいずれかに割り当てて実行させるように制御するものとする。また、これらのスレッドは、割り当てられたPU内の例えばローカルメモリ等のハードウェア資源を互いに参照できるように、各スレッドが参照するアドレス空間に、同一スレッドグループに属するスレッドで共有されるハードウェア資源をマッピングしているものとする。このように同一スレッドグループに属するスレッドの動作を制御することにより、複数のスレッドによりパイプライン処理などを実現する場合に、処理の効率化を図ることができる。
なお、以下では、スレッドTaが割り当てられたPUに対応するPUデバッガをPUデバッガ34a、スレッドTbが割り当てられたPUに対応するPUデバッガをPUデバッガ34b、スレッドTcが割り当てられたPUに対応するPUデバッガをPUデバッガ34cと表記することとする。また、スレッドTa、スレッドTb及びスレッドTcは、それぞれ図2のスレッドテーブルにおいて、No.が1,2,及び3のスレッドに対応しているものとする。
まず、ユーザからの指示に基づいて、スレッドTaの所定の命令箇所にブレークポイントを設定して、スレッドグループGに属する3つのスレッドを実行させる場合の例について、図3のタイムチャートに基づいて説明する。
ユーザからの指示を受け付けた統合開発環境プログラム35は、まずブレークポイント設定の対象となるスレッド(対象スレッド)が、複数のスレッドを含んだスレッドグループに属するスレッドであるか否かを判定する。具体的に、統合開発環境プログラム35は、ホストコンピュータ30が保持するスレッドテーブルを参照して、対象スレッドのスレッドグループ識別子を取得する。そして、スレッドテーブルから、当該スレッドグループ識別子と同じスレッドグループ識別子を持つスレッドの情報を取得する。同じスレッドグループ識別子を持つスレッドがなければ、スレッドグループに属するスレッドの制御は必要ないので、統合開発環境プログラム35は対象スレッドに対応するPUデバッガ34に対して通常のブレークポイント設定の指示命令を出力する。一方、同じスレッドグループ識別子を持つスレッドが対象スレッドの他にある場合、以下に説明するように、スレッドグループに属する各スレッドに対して指示命令の出力を行う。
ユーザからの指示の対象となった対象スレッドが複数のスレッドを含むスレッドグループに属している場合、統合開発環境プログラム35は、ユーザからの指示に応じて、各PUデバッガ34向けの指示命令を出力する(S1)。具体的に、統合開発環境プログラム35は、デバッグ対象となる対象スレッドであるスレッドTaに対応するPUデバッガ34aに対しては、ブレークポイントを設定させる命令を出力する。一方、スレッドグループGに属するスレッドのうち、デバッグ対象を除いた対象外スレッドであるスレッドTb及びTcに対応するPUデバッガ34b及び34cに対しては、ハードウェア資源へのアクセスを制限させるための命令埋め込みを実行させる命令を出力する。
S1の処理により出力された命令を受け取ったPUデバッガ34aは、まずスレッドTaにブレークポイントを設定する旨の制御命令を、ブレークポイントを設定する位置の情報とともにデバッグ通信プログラム32に対して出力する(S2)。ここで、ブレークポイントを設定する位置の情報は、ユーザの指定したソースコード上の位置に対応するスレッドTaの命令箇所を表すプログラムカウンタの値である。
この制御命令を受け取ったデバッグ通信プログラム32は、当該制御命令をデバッグエージェントプログラム23で処理可能な形式に変換して、デバッグエージェントプログラム23に対して送信する(S3)。デバッグエージェントプログラム23は、受信した制御命令に応じて、スレッドTaのプログラムの指示された命令箇所に、ブレークポイントを設定する(S4)。
また、PUデバッガ34aは、S2の処理に続いて、スレッドTaの実行開始を指示する制御命令を、デバッグ通信プログラム32に対して出力する(S5)。ここで、PUデバッガ34aは、スレッドTaの実行前に必要なブレークポイント設定の命令は既に出力しているので、続けてスレッドTaの実行を開始する制御命令を出力してしまう。しかし、デバッグ通信プログラム32は、そのままスレッドTaの実行を開始する制御命令をデバッグエージェントプログラム23に送信するわけではなく、まずスレッドテーブルにおけるスレッドTaの制御情報を更新する(S6)。具体的に、デバッグ通信プログラム32は、スレッドTaの制御情報を、スレッドTaに対して実行開始を指示する制御命令を受け取ったことを表す情報(ここでは「cont」とする)を含むものに更新する。これにより、スレッドテーブルの内容は例えば図2(b)に示すようなものになる。
一方、S1の処理により出力された命令を受け取ったPUデバッガ34bは、スレッドTbのハードウェア資源へのアクセスを制限するための命令埋め込みを行わせる制御命令を、デバッグ通信プログラム32に対して出力する(S7)。なお、この制御命令は、スレッドTbにおいて命令を埋め込む位置を表すプログラムカウンタの値などの情報を含んでもよい。この制御命令を受け取ったデバッグ通信プログラム32は、スレッドテーブルにおけるスレッドTbの制御情報を更新する(S8)。具体的に、デバッグ通信プログラム32は、スレッドTbの制御情報を、スレッドTbに対して命令埋め込みを行う制御命令を受け取ったことを表す情報(ここでは「lcont」とする)を含むものに更新する。これにより、スレッドテーブルの内容は例えば図2(c)に示すようなものになる。
さらに、デバッグ通信プログラム32は、S7の処理により出力された制御命令をデバッグエージェントプログラム23で処理可能な形式に変換して、デバッグエージェントプログラム23に対して送信する(S9)。デバッグエージェントプログラム23は、受信した制御命令に応じて、スレッドTbのプログラムの所定の命令箇所に、所定の命令を埋め込む(S10)。
ここで、PUデバッガ34bからの制御命令に基づいて、スレッドTbに埋め込まれる命令について説明する。この命令は、スレッドTbによるターゲットコンピュータ20の少なくとも一部のハードウェア資源へのアクセスを制限するためのものである。具体的には、この命令の埋め込みにより、例えばスレッドグループGに属するスレッドが共通して参照する、PU内のローカルメモリやPU外のメモリ、その他のディスクドライブなどの記憶装置等に対するスレッドTbのアクセスを制限する。
埋め込まれる命令は、メモリ等へのアクセスを行わない例えば単に演算を行う命令などであってもよいが、この場合スレッドTbにおいて実行される全ての命令をこのような命令で置き換える必要がある。そのため、ここでは、自分自身にジャンプする処理を実行するループ命令を埋め込むこととする。これは、例えば「BR 00」などの形式で表される命令であり、この場合のBRは指定された位置の命令箇所にジャンプする命令であること、00はジャンプする位置が現在の命令箇所に対して相対的に0であることを表している。このようなループ命令を埋め込んで実行させることにより、スレッドTbが実行する処理はこの命令箇所において自分自身に対するループを繰り返すこととなり、埋め込まれた命令箇所以降の処理命令は、実行されない。これにより、スレッドTbの命令列のうち1箇所に命令を埋め込むことで、メモリ等のハードウェア資源へのスレッドTbのアクセスを制限できる。
ここで、命令を埋め込む箇所は、スレッドTbにおいて次に実行される命令箇所とする。そうすれば、スレッドTbの実行を開始した後、スレッドTbは直ちにループ処理を繰り返し、メモリ等のハードウェア資源に対するアクセスは行わないことになる。ここで、次に実行される命令の箇所は、前述したようにS7の処理でPUデバッガ34bが指定してもよいし、デバッグエージェントプログラム23がPUにおいて管理されているプログラムカウンタの値などを参照することで取得してもよい。
また、このループ命令は、スレッドTbの命令列の処理の進行を制限するためのものでもある。これにより、スレッドTbのループ命令を埋め込んだ箇所以降の命令列の実行を制限でき、スレッドTaの処理に影響を与えるようなスレッドTbの処理を実行させないことができる。なお、ここで説明したループ命令の埋め込みに代えて、次にPUが実行する命令列のアドレスを表すプログラムカウンタの値を制御するなど、他の方法によりスレッドTbの命令列の処理の進行を制限することとしてもよい。
一方、PUデバッガ34cは、PUデバッガ34bと同様に、スレッドTcにハードウェア資源へのアクセスを制限するための命令埋め込みを行う制御命令を、デバッグ通信プログラム32に対して出力する(S11)。この制御命令を受け取ったデバッグ通信プログラム32は、スレッドテーブルにおけるスレッドTcの制御情報を更新する(S12)。これにより、スレッドテーブルの内容は例えば図2(d)に示すようなものになる。
さらに、デバッグ通信プログラム32は、S11の処理で出力された制御命令をデバッグエージェントプログラム23に送信し(S13)、デバッグエージェントプログラム23は、受信した制御命令に応じて、スレッドTcに対してスレッドTbの場合と同様にループ命令の埋め込みを実行する(S14)。
ここで、前述したS6、S8及びS12の処理により、デバッグ通信プログラム32はスレッドテーブルにおけるスレッドグループGに属する各スレッドの制御情報を更新している。デバッグ通信プログラム32は、各スレッドの制御情報を、当該スレッドを実行開始可能な状態になったことを示す情報(ここでは、cont又はlcontを含む情報)に更新したタイミングで、スレッドテーブルを参照し、スレッドグループGに属する各スレッドの実行を開始させるか否かの判定を行う。
具体的には、デバッグ通信プログラム32は、制御情報を更新したスレッドのスレッドグループ識別子を取得し、取得したスレッドグループ識別子と同一のスレッドグループ識別子を持つ各スレッドの制御情報を取得する。そして、取得した各スレッドの制御情報が全てcont又はlcontのいずれかを含んでいる場合、デバッグ通信プログラム32は、同一スレッドグループに属する全てのスレッドを実行させる準備が整ったと判定する。
図3に示すタイムチャートにおいては、S12の処理により、図2(d)に示すようにスレッドグループGに属する3つのスレッドの制御情報が全てcont又はlcontのいずれかを含むものになる。よって、デバッグ通信プログラム32は、この処理の後に、スレッドグループGに属するスレッドの実行を開始する制御命令をデバッグエージェントプログラム23に対して送信する(S15)。これにより、デバッグエージェントプログラム23は、スレッドグループGに属するスレッドTa、Tb及びTcの実行を開始させる(S16)。
以上説明したように、デバッグ通信プログラム32は、各スレッドに対する制御命令に基づいてスレッドテーブルを更新し、同一スレッドグループに属するスレッドについてのスレッドテーブル上の制御情報に基づいて、スレッドの実行を開始させる制御命令をデバッグエージェントプログラム23に送信するか否かの判定を行う。これにより、各スレッドに対するデバッグ処理の制御をそれぞれ独立したPUデバッガが行う場合であっても、同一スレッドグループに属するスレッドの制御を望ましいタイミングで行うことができる。
次に、以上説明した例によりブレークポイントを設定した命令箇所までスレッドTaの処理が実行された場合に、当該ブレークポイントの到来をトリガとしてプログラム開発環境10により実行される処理の例について、図4のタイムチャートに基づいて説明する。
まず、デバッグエージェントプログラム23は、スレッドTaにおけるブレークポイント到来のイベントを検知すると、これに応じてスレッドTaの実行を停止させる(S21)。なお、このとき、スレッドTaの実行が停止されると、OS21によりスレッドTaと同時期に実行されるように制御されているスレッドグループGに属するスレッドTb及びスレッドTcについても、その実行が停止される。
続いて、デバッグエージェントプログラム23は、当該イベントの発生を示す情報をデバッグ通信プログラム32に対して送信する(S22)。イベント発生の情報を受信したデバッグ通信プログラム32は、この情報をイベントの発生したスレッドTaに対応するPUデバッガ34aに対して出力する(S23)。
スレッドTaが停止したことを通知する情報を受け取ったPUデバッガ34aは、スレッドTaの属するスレッドグループGの停止に応じた処理を実行させる制御命令をデバッグ通信プログラム32に対して出力する(S24)。この制御命令は、実際にターゲットコンピュータ20上におけるスレッドの実行を停止させるものではなく、ホストコンピュータ30上でスレッドの実行停止に応じた処理を実行するために必要となる。なぜなら、スレッドグループGに属するスレッドTb及びスレッドTcは、ブレークポイント到来にもスレッドの終了にもよらずに、OS21の制御により実行が停止されているため、スレッドTaの場合と異なり、実行停止をホストコンピュータ30に対して通知するためのイベントが発生しないためである。
S24の処理によるスレッドグループGの停止の通知を受け取ったデバッグ通信プログラム32は、スレッドテーブルにおける各スレッドの制御情報を更新する(S25)。具体的には、スレッドグループGに属する各スレッドの制御情報を、スレッドの実行が停止していることを表す情報(ここでは「stop」とする)を含んだものに更新する。これにより、スレッドテーブルの内容は、図2(a)に示すようなものに戻る。
続いて、デバッグ通信プログラム32は、スレッドグループGに属するスレッドTaを除いた各スレッドについて、対応するPUデバッガ34に対してスレッドの停止を通知する情報を出力する(S26)。具体的には、スレッドTbが停止したことをPUデバッガ34bに対して通知し、スレッドTcが停止したことをPUデバッガ34cに対して通知する。
S23及びS26の処理により、対応するスレッドが停止したことの通知を受け取った各PUデバッガ34は、それぞれ統合開発環境プログラム35に対して各スレッドの現在の状態に関する情報などを出力する(S27、S28及びS29)。これにより、統合開発環境プログラム35は、ユーザに提示する各スレッドに関する情報を更新する。
以上説明した処理により、ホストコンピュータ30は、ブレークポイント到来によってスレッドグループGに属する各スレッドが停止した場合に、ブレークポイントの設定されたスレッドTaの実行が停止されたことを示すイベント情報に基づいて、スレッドTb及びTcの実行も停止されたことに応じた処理を実行することができる。
以上説明した本実施の形態によれば、ホストデバッガプログラム33からの制御命令により、デバッグ対象スレッドをターゲットコンピュータ20上で実行させるとともに、当該スレッドの実行中にデバッグ対象外のスレッドをターゲットコンピュータ20の少なくとも一部のハードウェア資源へのアクセスを制限しつつ実行させることができる。これにより、相互に関連する複数のスレッドを本来の実行環境に近い状態で実行させつつ、デバッグ対象となる特定のスレッドの動作を検証でき、信頼性の高いデバッグを行うことができる。
なお、以上の説明においては、スレッドグループに属するスレッドに対してブレークポイントを設定して各スレッドを実行させる場合の例について説明したが、本実施形態に係るプログラム開発環境10は、他のデバッグ処理を実行する場合にも同様にデバッグ対象外のスレッドをハードウェア資源へのアクセスを制限しつつ実行させることができる。例えば、スレッドグループGに属するスレッドのうち、あるスレッド(例えばスレッドTb)をソースプログラムにおける1ステップに相当する命令ずつ実行させて動作検証を行いたい場合、予めデバッグ対象外となるスレッドTa及びTcに前述したループ命令を埋め込んで、スレッドグループGに属する各スレッドを実行させる。これにより、スレッドTa及びスレッドTcによるメモリ等のハードウェア資源へのアクセスを制限しつつ、スレッドTbをソースプログラムの1ステップずつ実行させることができる。
また、本実施形態に係るプログラム開発環境10においては、デバッグ対象のスレッドとして複数のスレッドを実行させつつ、当該複数のスレッドと相互に関連して動作するデバッグ対象外のスレッドを、ハードウェア資源へのアクセスを制限しつつ実行させることもできる。これにより、デバッグ対象となる複数のスレッドが相互に関連して実行する処理の検証を行いたい場合にも、本来の実行環境に近い状態でデバッグ作業を行うことができる。
また、本発明は上記実施形態に限定されるものではなく、種々の実施形態により実現可能である。例えば、上記の説明においてはデバッグ対象のスレッドを実行するターゲットコンピュータ20とは異なるホストコンピュータ30においてデバッグ処理を行うこととしたが、ターゲットコンピュータ20においてホストデバッガプログラム33に相当するプログラムを実行させることとしてもよい。この場合、ユーザは1つのコンピュータ上でプログラムのデバッグ作業を行うことができる。また、上記の説明においてデバッグ通信プログラム32により実現したスレッドテーブルによる同一スレッドグループに属するスレッドの制御を、ホストデバッガプログラム33やデバッグエージェントプログラム23などの他のプログラムにより実現することとしてもよい。
本発明の実施の形態に係るプログラム開発環境を表す図である。 ホストコンピュータが保持するスレッドテーブルの一例を表す図である。 ブレークポイントを設定する処理の一例を表すフロー図である。 ブレークポイント到来時の処理の一例を表すフロー図である。
符号の説明
10 プログラム開発環境、20 ターゲットコンピュータ、21,31 オペレーティングシステム、22 ユーザアプリケーションプログラム、23 デバッグエージェントプログラム、30 ホストコンピュータ、32 デバッグ通信プログラム、33 ホストデバッガプログラム、34 プロセッサユニットデバッガ、35 統合開発環境プログラム。

Claims (7)

  1. コンピュータ上で相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うスレッドデバッグ装置であって、
    前記複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、前記コンピュータに実行させる対象スレッド実行手段と、
    前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記対象スレッド実行手段による前記対象スレッドの実行中に、前記コンピュータの少なくとも一部のハードウェア資源へのアクセスを制限しつつ、前記コンピュータに実行させる対象外スレッド実行手段と、
    を含むことを特徴とするスレッドデバッグ装置。
  2. 請求項1に記載のスレッドデバッグ装置において、
    前記対象外スレッドのそれぞれに、自分自身にジャンプする処理を実行する命令を埋め込む命令埋め込み手段をさらに含み、
    前記対象外スレッド実行手段は、前記対象外スレッドに前記埋め込まれた命令を実行させることで、前記ハードウェア資源へのアクセスを制限することを特徴とするスレッドデバッグ装置。
  3. 請求項2に記載のスレッドデバッグ装置において、
    前記複数のスレッドに含まれる各スレッドと、当該各スレッドに対して前記命令埋め込み手段による命令の埋め込みを行ったか否かを表す情報と、を対応づけるスレッドテーブルを保持するテーブル保持手段をさらに含み、
    前記対象スレッド実行手段は、前記スレッドテーブルに基づいて、前記対象外スレッドの全てに対して、前記命令埋め込み手段による命令の埋め込みを行ったと判定した場合に、前記対象スレッドを前記コンピュータに実行させることを特徴とするスレッドデバッグ装置。
  4. 請求項1乃至3のいずれか一項に記載のスレッドデバッグ装置において、
    前記複数のスレッドは、同時期にそれぞれ前記コンピュータが備える複数のプロセッサのいずれかに割り当てられて実行され、前記各スレッドが割り当てられた前記プロセッサ内のハードウェア資源を互いに参照できるように、前記各スレッドが参照するアドレス空間に前記プロセッサ内のハードウェア資源をマッピングすることを特徴とするスレッドデバッグ装置。
  5. コンピュータ上で相互に関連して実行される複数のスレッドであって、それぞれ所定の命令列を順次実行する複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うスレッドデバッグ装置であって、
    前記複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、前記コンピュータに実行させる対象スレッド実行手段と、
    前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記対象スレッド実行手段による前記対象スレッドの実行中に、当該対象外スレッドの命令列の処理の進行を制限しつつ、前記コンピュータに実行させる対象外スレッド実行手段と、
    を含むことを特徴とするスレッドデバッグ装置。
  6. コンピュータ上で相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うスレッドデバッグ方法であって、
    前記複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、前記コンピュータに実行させる第1のステップと、
    前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記第1のステップによる前記対象スレッドの実行中に、前記コンピュータの少なくとも一部のハードウェア資源へのアクセスを制限しつつ、前記コンピュータに実行させる第2のステップと、
    を含むことを特徴とするスレッドデバッグ方法。
  7. コンピュータ上で相互に関連して実行される複数のスレッドに対して、当該複数のスレッドのうち一部のスレッドに対するデバッグを行うプログラムであって、
    前記複数のスレッドのうちデバッグ対象となる少なくとも1つの対象スレッドの、少なくとも一部の処理を、前記コンピュータに実行させる対象スレッド実行手段、及び
    前記複数のスレッドのうち前記対象スレッドを除いた対象外スレッドを、前記対象スレッド実行手段による前記対象スレッドの実行中に、前記コンピュータの少なくとも一部のハードウェア資源へのアクセスを制限しつつ、前記コンピュータに実行させる対象外スレッド実行手段、
    としてコンピュータを機能させることを特徴とするプログラム。
JP2005318078A 2005-11-01 2005-11-01 スレッドデバッグ装置、スレッドデバッグ方法及びプログラム Expired - Fee Related JP4388518B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005318078A JP4388518B2 (ja) 2005-11-01 2005-11-01 スレッドデバッグ装置、スレッドデバッグ方法及びプログラム
US11/586,345 US8136097B2 (en) 2005-11-01 2006-10-25 Thread debugging device, thread debugging method and information storage medium
EP06255589A EP1785872A3 (en) 2005-11-01 2006-10-30 Thread debugging device, thread debugging method and information storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005318078A JP4388518B2 (ja) 2005-11-01 2005-11-01 スレッドデバッグ装置、スレッドデバッグ方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2007128132A true JP2007128132A (ja) 2007-05-24
JP4388518B2 JP4388518B2 (ja) 2009-12-24

Family

ID=37946042

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005318078A Expired - Fee Related JP4388518B2 (ja) 2005-11-01 2005-11-01 スレッドデバッグ装置、スレッドデバッグ方法及びプログラム

Country Status (3)

Country Link
US (1) US8136097B2 (ja)
EP (1) EP1785872A3 (ja)
JP (1) JP4388518B2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
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
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US8739133B2 (en) * 2007-12-21 2014-05-27 International Business Machines Corporation Multi-threaded debugger support
US8291388B2 (en) * 2008-01-09 2012-10-16 International Business Machines Corporation System, method and program for executing a debugger
US20100049956A1 (en) * 2008-08-20 2010-02-25 Moyer William C Debug instruction for use in a multi-threaded data processing system
US9395983B2 (en) * 2008-08-20 2016-07-19 Freescale Semiconductor, Inc. Debug instruction for execution by a first thread to generate a debug event in a second thread to cause a halting operation
KR101581001B1 (ko) * 2009-03-30 2015-12-30 삼성전자주식회사 프로그램의 동적 분석 방법 및 그 장치
US8561041B1 (en) * 2009-06-22 2013-10-15 The Mathworks, Inc. Parallel execution of function calls in a graphical model
US8549523B2 (en) * 2009-11-23 2013-10-01 International Business Machines Corporation Performing runtime analysis and control of folding identified threads by assuming context of another thread and executing in lieu of another thread folding tool
KR20110095050A (ko) * 2010-02-18 2011-08-24 삼성전자주식회사 공유 라이브러리 디버깅 장치
US8719797B2 (en) * 2010-05-18 2014-05-06 Blackberry Limited System and method for debugging dynamically generated code of an application
KR20120019941A (ko) * 2010-08-27 2012-03-07 삼성전자주식회사 프로그램의 동적 분석방법 및 그 장치
US8527970B1 (en) * 2010-09-09 2013-09-03 The Boeing Company Methods and systems for mapping threads to processor cores
US8589885B2 (en) * 2010-09-30 2013-11-19 Microsoft Corporation Debugger launch and attach on compute clusters
US8589922B2 (en) 2010-10-08 2013-11-19 International Business Machines Corporation Performance monitor design for counting events generated by thread groups
US8601193B2 (en) 2010-10-08 2013-12-03 International Business Machines Corporation Performance monitor design for instruction profiling using shared counters
US8489787B2 (en) 2010-10-12 2013-07-16 International Business Machines Corporation Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors
US8661413B2 (en) 2011-04-13 2014-02-25 International Business Machines Corporation Impact indication of thread-specific events in a non-stop debugging environment
US10754759B1 (en) * 2018-02-05 2020-08-25 Xilinx, Inc. Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit
US11748233B2 (en) * 2020-04-30 2023-09-05 Red Hat, Inc. Debugging a native compiled application from an integrated development environment
CN115048145B (zh) * 2022-06-14 2023-04-25 海光信息技术股份有限公司 一种信息采集方法、装置及相关设备

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450592A (en) * 1992-09-02 1995-09-12 Data General Corporation Shared resource control using a deferred operations list
JPH11338733A (ja) 1998-02-27 1999-12-10 Toshiba Corp デバッグ装置及び記録媒体
US6862635B1 (en) * 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US20020059544A1 (en) 1999-02-04 2002-05-16 Boucher Michael L. Methods and systems for determining and displaying activities of concurrent processes
US6587967B1 (en) * 1999-02-22 2003-07-01 International Business Machines Corporation Debugger thread monitor
US6418442B1 (en) * 1999-06-29 2002-07-09 Sun Microsystems, Inc. Method and apparatus for providing thread-specific computer system parameters
US6681384B1 (en) * 1999-12-23 2004-01-20 International Business Machines Corporation Multi-threaded break-point
US7213247B1 (en) 2000-01-10 2007-05-01 Wind River Systems, Inc. Protection domains for a computer operating system
US6754850B2 (en) * 2001-03-02 2004-06-22 National Instruments Corporation System and method for performing batch synchronization for a test sequence
US6971084B2 (en) * 2001-03-02 2005-11-29 National Instruments Corporation System and method for synchronizing execution of a batch of threads
US7320125B2 (en) * 2001-05-24 2008-01-15 Techtracker, Inc. Program execution stack signatures
US7058948B2 (en) * 2001-08-10 2006-06-06 Hewlett-Packard Development Company, L.P. Synchronization objects for multi-computer systems
US7036125B2 (en) * 2002-08-13 2006-04-25 International Business Machines Corporation Eliminating memory corruption when performing tree functions on multiple threads
US6983456B2 (en) * 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US7237241B2 (en) * 2003-06-23 2007-06-26 Microsoft Corporation Methods and systems for managing access to shared resources using control flow
US7496897B1 (en) * 2004-03-17 2009-02-24 Timesys Corporation Multiple code sets for multiple execution contexts
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
JP4606142B2 (ja) * 2004-12-01 2011-01-05 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
US7774783B2 (en) * 2004-12-23 2010-08-10 Microsoft Corporation Method and apparatus for detecting deadlocks
US20070094669A1 (en) * 2005-10-25 2007-04-26 Microsoft Corporation Shared resource acquisition

Also Published As

Publication number Publication date
EP1785872A2 (en) 2007-05-16
EP1785872A3 (en) 2010-03-31
US8136097B2 (en) 2012-03-13
JP4388518B2 (ja) 2009-12-24
US20070168985A1 (en) 2007-07-19

Similar Documents

Publication Publication Date Title
JP4388518B2 (ja) スレッドデバッグ装置、スレッドデバッグ方法及びプログラム
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
US7992042B2 (en) Debug support device, and program for directing computer to perform debugging method
US8327336B2 (en) Enhanced thread stepping
US10191835B2 (en) Multi-threaded debugger support
US5630049A (en) Method and apparatus for testing software on a computer network
JP3965142B2 (ja) コンピュータ・プログラムをデバックするための方法、システムおよびソフトウェア・プロダクト
JP3571976B2 (ja) デバッグ装置及び方法並びにプログラム記録媒体
US20050034104A1 (en) Method for multi-language debugging
KR102025078B1 (ko) 단일 스텝 실행을 이용한 코드 진단
US8423970B2 (en) Method, computer program product, and hardware product for handling breakpoints in an asynchronous debug model
US20060259750A1 (en) Selectively embedding event-generating instructions
JP2008052533A (ja) デバッグ装置
CN112711527A (zh) 一种实时进程的调试方法、装置、目标机和存储介质
JP2007004516A (ja) 組込みシステムのプログラムデバッグ方法
JP2010015364A (ja) マルチプロセッサシステム及び情報処理装置
JP2008140124A (ja) データ処理装置
CN112802527B (zh) 嵌入式闪存高速编程的实现方法、嵌入式闪存的编程系统
WO2006070510A1 (ja) プログラムデバッグ装置、プログラムデバッグ方法及び情報記憶媒体
JP2007213396A (ja) デバッグシステム、オペレーションシステム、デバッグ方法、プログラム
JP2006293515A (ja) Osエミュレータ時間経過制御装置
JP2002366378A (ja) プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体
JP2006350676A (ja) 組込みシステムのプログラムデバッグ方法
JP2002244883A (ja) デバッグ支援装置、デバッグ支援方法及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2007041887A (ja) デバッグ装置、そのメモリアクセス方法およびメモリアクセス方法を実現するプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090220

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: 20090929

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091002

R150 Certificate of patent or registration of utility model

Ref document number: 4388518

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131009

Year of fee payment: 4

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

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

LAPS Cancellation because of no payment of annual fees