JP4222370B2 - デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム - Google Patents

デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム Download PDF

Info

Publication number
JP4222370B2
JP4222370B2 JP2006003529A JP2006003529A JP4222370B2 JP 4222370 B2 JP4222370 B2 JP 4222370B2 JP 2006003529 A JP2006003529 A JP 2006003529A JP 2006003529 A JP2006003529 A JP 2006003529A JP 4222370 B2 JP4222370 B2 JP 4222370B2
Authority
JP
Japan
Prior art keywords
unit
processor
thread
processors
unit processor
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.)
Expired - Fee Related
Application number
JP2006003529A
Other languages
English (en)
Other versions
JP2007188147A (ja
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2006003529A priority Critical patent/JP4222370B2/ja
Priority to US11/651,549 priority patent/US7992042B2/en
Priority to KR1020077018139A priority patent/KR20070091047A/ko
Priority to EP07706614A priority patent/EP1855205A4/en
Priority to PCT/JP2007/050267 priority patent/WO2007080931A1/ja
Priority to CNA2007800000762A priority patent/CN101213523A/zh
Publication of JP2007188147A publication Critical patent/JP2007188147A/ja
Application granted granted Critical
Publication of JP4222370B2 publication Critical patent/JP4222370B2/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
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

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

Description

本発明は、プログラムをデバッグ処理するデバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラムに係り、特に複数のプロセッサを備えるマルチプロセッサ形式のプロセッサで実行されるプログラムをデバッグ処理するデバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラムに関する。
現在、コンピュータのソフトウェア開発にデバッガと呼ばれるツールが使用されている。デバッガは、コンピュータのプロセッサやメモリを模擬的に動作させるため、コンピュータにプログラムへの割込み、ブレークポイントの設定、シングルステップ実行させる機能を有するものである。デバッガには、ソフトウェアのみで実装されたオンラインデバッガと、ハードウェアとの組合せで実装されたICE(In-Circuit Emulator)とがある。ICEは高機能であるものの高価である。また、オンラインデバッガはICEに比べて安価ではあるがICEと同等の機能は有していない。
デバッガでは、プログラム中にブレークポイントと呼ばれるプログラム中断機能が設定されている。ブレークポイントが実行された場合、デバッガが起動し、デバッガ起動した時点でプロセッサが備えるレジスタやメモリ、I/Oを参照、変更をすることができる。
ところで、近年、複数のプロセッサを組み合わせ、複数のプロセッサを並列に動作させるプロセッサがある。このようなプロセッサには、マルチスレッドプロセッサやマルチプロセッサがあって、本明細書で、マルチスレッドプロセッサ、マルチプロセッサ等の複数のプロセッサを組み合わせたプロセッサを総称してマルチプロセッサシステムと記す。
マルチプロセッサシステムのデバッグ作業を支援する場合、1つのプロセッサでブレークポイントが起こったときに他のプロセッサをも停止させ、マルチプロセッサシステムで実行されている全てのプロセッサのプログラム状態の把握する技術がある。このような従来技術として、例えば、特許文献1が挙げられる。
特許文献1は、デバッグの対象となるプロセッサがブレークポイントに達して停止信号を送出した時、プロセッサのマシンサイクルの切れ目等でシステムクロックを停止する。また、この時点でシステム全体の全ての構成要素の動作を同時に停止させ、停止時における全プロセッサのメモリ、レジスタの内容、他のハードウエアモジュールのレジスタの内容等を読み出す。このような特許文献1は、ブレークポイントが起こったとき、プロセッサばかりでなく他のハードウェアモジュールを含むシステム内の動作状況を観測することができる。
特開平5−313946号公報
しかしながら、特許文献1の発明は、ブレークポイント命令がソフトウェアの例外発生をするだけであって、一度の処理で他のプロセッサを停止することはできない。
このため、マルチプロセッサシステムデバッグ支援の分野にあっては、より効率的にブレークポイントが発生したプロセッサと他のプロセッサとの停止タイミングを一致させる技術が望まれている。
本発明は、以上の点に鑑みてなされたものであって、マルチプロセッサシステムに含まれる複数のプロセッサを略同時に、かつ効率的に停止し、ブレークポイント発生時の各プロセッサの状態を把握できるマルチプロセッサシステムに適したデバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラムを提供することを目的とする。
以上の課題を解決するため、本発明のデバッグ支援装置は、マルチプロセッサをデバッグ処理するデバッグ支援装置であって、マルチプロセッサを構成する複数の単位プロセッサのステータスレジスタを定期的にチェックすることによってHALT状態となっている単位プロセッサを検出する単位プロセッサ選択手段と、複数の前記単位プロセッサの各々が、プログラムを構成する単位であるスレッドごとにプログラムを実行すると共に、前記スレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止手段と、マルチプロセッサを構成する複数の単位プロセッサに共用されるメモリに保存され、前記単位プロセッサ停止手段によって停止された複数の前記単位プロセッサの状態に関する情報を検出する処理であるデバッグ処理を、前記単位プロセッサのいずれかに実行させるデバッグ実行手段と、を備えてなり、前記デバッグ実行手段は、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサのうち、前記単位プロセッサ選択手段によって検出されたHALT状態となっている単位プロセッサを使ってデバッグ処理を実行することを特徴とする。
このような発明によれば、複数の単位プロセッサによって実行される複数のスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止することができる。そして、停止された単位プロセッサのうちの例外処理が発生したスレッドを実行していた単位プロセッサ、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサのいずれにも、デバッグ処理を直接実行させることができる。
この際、例外処理が発生したスレッドを実行していた単位プロセッサにおいてデバッグ処理を実行すれば、デバッグ処理に当てられる単位プロセッサを選択する処理をなくし、例外の発生後直ちにデバッガを起動することができる。
また、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサにおいてデバッグ処理を実行すれば、デバッグ処理を実行させるのに適切な単位プロセッサを選択してデバッグ処理を実行することができる。適切な単位プロセッサを選択することにより、マルチプロセッサのデバッグの効率をより高めることができる。
このため、例外処理が発生した時点でマルチプロセッサに含まれる複数の単位プロセッサを略同時に停止し、各単位プロセッサの情報を検出することができる。このような本発明は、マルチプロセッサシステムに含まれる複数のプロセッサを略同時に、かつ効率的に停止し、ブレークポイント発生時の各単位プロセッサの状態を把握できるデバッグ支援装置を提供することができるものといえる。
また、本発明のデバッグ支援装置は、前記デバッグ実行手段によるデバッグ処理の実行に使用される単位プロセッサを選択する単位プロセッサ選択手段を備え、当該単位プロセッサ選択手段は、スレッドの処理に使用されていない単位プロセッサを選択することを特徴とする。
このような発明によれば、デバッグによって停止されるスレッドの数を低減し、マルチプロセッサのデバッグの効率をより高めることができる。
また、本発明のデバッグ処理方法をコンピュータに実行させるためのプログラムは、マルチプロセッサを構成する複数の単位プロセッサに共用されるメモリに保存され、マルチプロセッサをデバッグ処理するデバッグ支援装置に適用されるデバッグ処理方法をコンピュータに実行させるためのプログラムであって、マルチプロセッサを構成する複数の単位プロセッサのステータスレジスタを定期的にチェックすることによってHALT状態となっている単位プロセッサを検出する単位プロセッサ選択ステップと、複数の前記単位プロセッサの各々によってプログラムを構成する単位であるスレッドごとに実行されているプログラムのうちの一部においてブレークポイントによるソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止ステップと、前記単位プロセッサ停止ステップにおいて停止された複数の前記単位プロセッサの状態に関する情報を検出する処理であるデバッグ処理を、前記単位プロセッサのいずれかに実行させるデバッグ実行ステップと、を含み、前記デバッグ実行ステップは、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサのうち、前記単位プロセッサ選択ステップにおいて検出されたHALT状態となっている単位プロセッサを使ってデバッグ処理を実行させる。
このような発明によれば、複数の単位プロセッサによって実行される複数のスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止することができる。そして、停止された単位プロセッサのうちの例外処理が発生したスレッドを実行していた単位プロセッサ、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサのいずれにも、デバッグ処理を直接実行させることができる。
この際、例外処理が発生したスレッドを実行していた単位プロセッサにおいてデバッグ処理を実行すれば、デバッグ処理に当てられる単位プロセッサを選択する処理をなくし、例外の発生後直ちにデバッガを起動することができる。
また、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサにおいてデバッグ処理を実行すれば、デバッグ処理を実行させるのに適切な単位プロセッサを選択してデバッグ処理を実行することができる。適切な単位プロセッサを選択することにより、マルチプロセッサのデバッグの効率をより高めることができる。
このため、例外処理が発生した時点でマルチプロセッサに含まれる複数の単位プロセッサを一度の処理で略同時に停止し、各単位プロセッサの情報を検出することができる。このような本発明は、マルチプロセッサシステムに含まれる複数のプロセッサを略同時に、かつ効率的に停止し、ブレークポイント発生時の各プロセッサの状態を正確に把握できるデバッグ支援方法をコンピュータに実行させるためのプログラムを提供することができるものといえる。
以下、図を参照して本発明に係るデバッグ支援装置及びデバッグ処理法法をコンピュータに実行させるためのプログラムの実施形態1、実施形態2を説明する。
(実施形態1)
図1は、本発明の実施形態1、実施形態2に共通の図であって、デバッグ支援装置を説明するためのブロック図である。図示したデバッグ支援装置は、複数の単位プロセッサでなるマルチプロセッサシステムに適用されるものである。
実施形態1に挙げたマルチプロセッサシステムは、複数のプロセッサ(マルチプロセッサシステムを構成するプロセッサであるため単位プロセッサと記す)P0〜P3を備えている。単位プロセッサP0〜P3は、共用メモリ102を共用するよう組み合わされるマルチプロセッサを構成する。なお、マルチプロセッサのプロセッサのみの部分をプロセッサ部101として図中に示す。
単位プロセッサP0〜P3は、各々ステートレジスタ(PSR)を有している。PSRは、単位プロセッサP0〜P3のステータスを記憶するレジスタである。ステータスとは、例えば、単位プロセッサの割込みの可否状態、単位プロセッサにおけるオーバーフローの発生状態等、単位プロセッサの状態に関する情報を記憶するレジスタである。
また、マルチプロセッサで実行されるプログラムは、スレッドの単位に分けられていて、単位プロセッサP0〜P3は、スレッドごとにプログラムを実行する。なお、スレッドの文言は、プログラムの単位を指すと共に本明細書ではスレッド単位のプログラムをも指すものとする。
実施形態1のデバッグ支援装置は、単位プロセッサP0〜P1によって実行されているスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止するオンラインデバッガ201を備えている。オンラインデバッガ201は、プロセッサ部101をターゲットとしてプログラムのバグの発見や修正を支援するソフトウェアであって、共用メモリ102に保存されている。オンラインデバッガ201に対する指示は、図示しないソフトウェアによりPCがデバッガとなって行われる。
実施形態1のデバッグ支援装置は、オンラインデバッガ201とPCのソフトウェアのみによって構成できる。このため、実施形態1のデバッグ支援装置は、ハードウェア装置を使ったデバッガより安価に製造することが可能である。
オンラインデバッガ201にはスレッドの実行を強制的に停止させるための強制実行停止コード(ブレークポイント命令)が挿入されている。単位プロセッサP0〜P3によるスレッドの処理は、ブレークポイント命令実行時にオンラインデバッガ201によって中止される。本明細書では、スレッドの実行中止をソフトウェアの例外処理とも記す。
なお、スレッドの実行中止は、単位プロセッサP0〜P3に対する割込みによって行われる。実施形態1では、割込みに使用される割込みテーブル103を共用メモリ102に保存している。
なお、割込みテーブル103は、割込み処理を割込みの順番にしたがって管理するテーブルである。マルチプロセッサの図示しない割込み制御部は、割込み処理や処理中のスレッドの優先度に応じて要求された割込みに順番を付して割込みテーブル103に追加する。このような割込みテーブル103は、マルチプロセッサに対する他の割込みにも使用されている。
図2は、オンラインデバッガ201の機能ブロック図である。オンラインデバッガ201は、割込み制御部203とデバッグ情報チェック部204とを備えている。割込み制御部203は、割込みテーブル103を参照して単位プロセッサP0〜P3に割込み処理をするプログラムである。デバッグ情報チェック部204は、停止された単位プロセッサP0〜P3の少なくとも1つにおいて、停止されている複数の単位プロセッサの状態に関する情報(以降、デバッグ情報と記す)を検出するプログラムである。このようなオンラインデバッガ201は、実施形態1において単位プロセッサ停止手段及びデバッグ実行手段として機能する。
デバックの実行は、デバッグ情報チェック部204がステートレジスタR0〜R3にアクセスし、デバッグ情報を共用メモリ102に保存することによって行われる。デバッグの実行のため、実施形態1のデバッグ支援装置は、オンラインデバッガ201によって管理される管理エリア106を共用メモリ102内に備えている。共用メモリ102内にある管理エリア106は、単位プロセッサP0〜P3のいずれもが参照可能である。
管理エリア106には、オンラインデバッガ201の状態を示す起動フラグが書き込まれる起動フラグエリア、検出された単位プロセッサP0〜P3の情報が書き込まれるレジスタエリアがある。
図3は、マルチプロセッサ上で実行されている複数のスレッドとオンラインデバッガとの実施形態1における関係を説明するための図である。実施形態1では、図示したように、オンラインデバッガ201が、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサにおいてデバッグ処理を実行する。
すなわち、図3の例では、スレッド1(スレッドS1)、スレッド2(スレッドS2)、スレッド3(スレッドS3)がマルチプロセッサ上で実行されている。実施形態1では、スレッドS1でソフトウェアの例外が発生し、オンラインデバッガ201がスレッドS2で起動する。
スレッドS2は、例外が発生したことによってオンラインデバッガ201を起動させ、スレッドS1、スレッドS3を停止すると共に自スレッドも停止する。オンラインデバッガ201は、スレッドS1、スレッドS3を実行しているプロセッサの停止を待ってオンラインデバッグを実行する。オンラインデバッガ201は、オンラインデバッグによってスレッドS1、スレッドS3のステータスレジスタ等に記録されている情報を参照し、ブレークポイントにおける複数のスレッドの状態を把握することができる。
オンラインデバッガの動作の終了後、オンラインデバッガ201は、スレッドS1、スレッドS2、スレッドS3の処理を再開させる。スレッドS1を実行していた単位プロセッサ、スレッドS3を実行していた単位プロセッサは、オンラインデバッガ201による処理の再開までの期間t停止している。
図4、図5は、図3で説明した本発明の実施形態1のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。図4は、ブレークポイントからオンラインデバッグが実行されるまでの処理を示している。また、図5は、オンラインデバッグの終了から例外発生以前の処理に戻るまでに実行されるプログラムを説明するためのフローチャートである、
本実施形態のマルチプロセッサは、マルチプロセッサのいずれかのスレッドでブレークポイントが実行された場合、オンラインデバッガ201によって制御される。オンラインデバッガ201は、マルチプロセッサ上のスレッドのいずれかにおいて実行される。
実施形態1では、複数のスレッドのうち、処理が行われていない空きスレッドを使ってオンラインデバッガ201を動作させるものとする。このような実施形態1は、スレッド及びスレッドを処理する単位プロセッサを有効に活用できるという効果を奏する。
なお、空きスレッドの検出は、例えば、オンラインデバッガ201のデバック情報チェック部204が定期的に単位プロセッサP0〜P3のステータスレジスタR0〜R3をチェックし、ステータスレジスタがHALTの状態になった単位プロセッサを検出することによっても可能である。
上記のように構成した場合、主にデバック情報チェック部204が単位プロセッサ選択手段として機能する。
マルチプロセッサに備えられる複数の単位プロセッサのうち、1つの単位プロセッサ(単位プロセッサP0とする)でソフトウェアの例外が発生すると、HALT状態にある他の単位プロセッサ(単位プロセッサP1とする)で処理されているスレッドの制御がオンラインデバッガ201に移行する(S301)。
単位プロセッサP1は、ステータスレジスタR1やプログラムカウンタ(図示せず)等に保存されている情報を管理エリア106のレジスタエリアに退避させる(S302)。そして、すでにオンラインデバッガ201が起動されているか否かを判断する(S303)。なお、この判断は、管理エリア106の起動フラグエリアに書き込まれる起動フラグを参照することによって行われる。
オンラインデバッガが起動していることを起動フラグが示している場合(S303:Yes)、オンラインデバッガ201は、処理を中止する。
一方、オンラインデバッガ201が起動していない場合(S303:Yes)、起動フラグエリアにオンラインデバッガ201が起動していることを示すフラグが書き込まれる(S304)。割込み制御部203は、単位プロセッサP1以外の単位プロセッサ(他のプロセッサ)に割込み処理し、停止するよう要求する(S305)。そして、単位プロセッサP0、P2、P3のステータスレジスタを参照して単位プロセッサP0、P2、P3が停止したか否は判断する(S306)。
ステップS306の判断の結果、単位プロセッサP0、P2、P3が停止したと判断された場合(S306:Yes)、オンラインデバッガ201は、単位プロセッサP1においてデバッグ動作を実行する(S307)。
また、図5に示したように、デバッグ処理の終了後、オンラインデバッガ201は、単位プロセッサP0、P2、P3に動作の実行(再開)を要求する(S501)。そして、起動フラグエリアに書き込まれている起動フラグをクリアする(S502)。さらに、退避したデバッグ情報等をステータスレジスタR1に復帰させる等し、単位プロセッサP1をソフトウェアの例外が発生する以前の状態に復帰させる(S503)。
以上述べた実施形態1は、例外処理が発生した時点でマルチプロセッサに含まれる複数の単位プロセッサP0〜P3を一度の処理で略同時に停止し、各単位プロセッサの情報を検出することができる。このため、マルチプロセッサシステムに含まれる複数の単位プロセッサを略同時に停止し、ブレークポイント発生時の各プロセッサの状態を把握することができる。また、実施形態1は、複数の単位プロセッサを一度の処理で停止させることができるので、単位プロセッサ停止の処理を効率的に行うことができる。
また、実施形態1は、単位プロセッサP0〜P1に割込み処理することによってスレッドの実行を停止させている。このため、例外の発生から速やかにスレッドを停止することができる。このような実施形態1は、複数の単位プロセッサを停止する処理の効率をいっそう高めることができる。
(実施形態2)
次に、本発明の実施形態2について説明する。実施形態2のデバッグ支援装置は、実施形態1で説明したデバッグ支援装置と同様の構成を有している。このため、実施形態2では、デバッグ支援装置の構成の図示及びこの説明を一部略すものとする。
実施形態2のデバッグ支援装置は、オンラインデバッガが、例外処理が発生したスレッドを実行していた単位プロセッサにおいてデバッグ処理を実行する点で実施形態1と相違する。
図6は、マルチプロセッサ上で実行されている複数のスレッドとオンラインデバッガとの実施形態2における関係を説明するための図である。実施形態2では、図示したように、オンラインデバッガ201が、例外処理が発生したスレッドを実行していた単位プロセッサ上でデバッグ処理を実行する。
すなわち、図6の例では、スレッド1(スレッドS1)、スレッド2(スレッドS2)、スレッド3(スレッドS3)がマルチプロセッサ上で実行されている。図6の例では、スレッドS1でソフトウェアの例外が発生し、オンラインデバッガ201がスレッドS1で起動する。
スレッドS1は、例外が発生したことによってオンラインデバッガ201を起動させ、スレッドS2、スレッドS3を停止すると共に自スレッドも停止する。オンラインデバッガ201は、スレッドS2、スレッドS3を実行しているプロセッサの停止を待ってオンラインデバッグを実行する。オンラインデバッガ201は、オンラインデバッグによってスレッドS2、スレッドS3のステータスレジスタ等に記録されている情報を参照し、ブレークポイントにおける複数のスレッドの状態を把握することができる。
オンラインデバッガの動作の終了後、オンラインデバッガ201は、スレッドS1、スレッドS2、スレッドS3の処理を再開させる。スレッドS2を実行していた単位プロセッサ、スレッドS3を実行していた単位プロセッサは、オンラインデバッガ201による処理の再開までの期間停止している。
図7、図8は、図6で説明した本発明の実施形態2のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。図7(a)は、オンラインデバッガが起動する単位プロセッサ(単位プロセッサP0とする)のブレークポイントからオンラインデバッグが実行されるまでの処理を示している。また、(b)は、単位プロセッサP0において、オンラインデバッグの終了から例外発生以前の処理に戻るまでに実行されるプログラムを説明するためのフローチャートである。
図8(a)は、単位プロセッサP0以外の単位プロセッサP1〜P3のブレークポイントからオンラインデバッグが実行されるまでの処理を示している。また、(b)は、単位プロセッサP1〜P3において、オンラインデバッグの終了から例外発生以前の処理に戻るまでに実行されるプログラムを説明するためのフローチャートである。
単位プロセッサP0でソフトウェアの例外が発生すると、単位プロセッサP0で処理されているスレッドの制御がオンラインデバッガ201に移行する(S701)。
オンラインデバッガ201は、ステータスレジスタR0やプログラムカウンタ(図示せず)等に保存されている情報を管理エリア106のレジスタエリアに退避させる(S702)。そして、起動フラグエリアにオンラインデバッガ201が起動していることを示すフラグを書き込む(S703)。割込み制御部203は、単位プロセッサP0以外の単位プロセッサ(他のプロセッサ)に割込み処理し、停止するよう要求する(S704)。そして、単位プロセッサP1、P2、P3のステータスレジスタを参照して単位プロセッサP1、P2、P3が停止したか否は判断する(S705)。
ステップS705の判断の結果、単位プロセッサP1、P2、P3が停止したと判断された場合(S705:Yes)、オンラインデバッガ201は、単位プロセッサP0においてデバッグ動作を実行する(S706)。
また、図7(b)に示したように、デバッグ処理の終了後、オンラインデバッガ201は、単位プロセッサP1、P2、P3に動作の実行(再開)を要求する(S710)。そして、起動フラグエリアに書き込まれている起動フラグをクリアする(S711)。さらに、退避したデバッグ情報等をステータスレジスタR0に復帰させる等し、単位プロセッサP0をソフトウェアの例外が発生する以前の状態に復帰させる(S713)。
また、単位プロセッサP0以外の単位プロセッサP1〜P3は、図8(a)に示したように、オンラインデバッガ201によって停止される。停止後、単位プロセッサP1〜P3の制御はオンラインデバッガ201に移行する(S801)。続いて、オンラインデバッガ201は、ステータスレジスタR0やプログラムカウンタ(図示せず)等に保存されている情報を管理エリア106のレジスタエリアに退避させ(S802)、処理を終了する。
図8(b)に示したように、単位プロセッサP0におけるデバッグ処理の終了後、単位プロセッサP1〜P3は、オンラインデバッガ201の要求に応じてデバッグ情報等をステータスレジスタR1〜R3に復帰させる等する(S810)。この処理により、プロセッサP1〜P3がソフトウェアの例外が発生する以前の状態に復帰する(S811)。
以上述べた実施形態2は、デバッグ処理の実行に使用される単位プロセッサとしてスレッドの処理に使用されていない単位プロセッサを選択する。このため、デバッグによって停止されるスレッドの数を低減してデバッグにかかる時間を短縮する等し、デバッグの効率をより高めることができる。
なお、図4ないし図8で述べたデバッグ処理方法をコンピュータに実行させるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フロッピー(登録商標)ディスク(FD)、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、本実施形態のデバッグ処理方法をコンピュータに実行させるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。さらに、本実施形態のデバッグ処理方法をコンピュータに実行させるためのプログラムは、コンピュータで読み取り可能なROM、フラッシュメモリ、メモリカード、USB接続型フラッシュメモリ等のメモリデバイスに記録されて提供してもよい。
本発明の実施形態1、実施形態2のデバッグ支援装置を説明するためのブロック図である。 図1に示したオンラインデバッガの機能ブロック図である。 本発明の実施形態1におけるマルチプロセッサ上で実行されている複数のスレッドとオンラインデバッガとの関係を説明するための図である。 図3で説明した本発明の実施形態1のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。 図3で説明した本発明の実施形態1のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するための他のフローチャートである。 本発明の実施形態2におけるマルチプロセッサ上で実行されている複数のスレッドとオンラインデバッガとの関係を説明するための図である。 本発明の実施形態2のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。 本発明の実施形態2のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するための他のフローチャートである。
符号の説明
101 プロセッサ部、201 オンラインデバッガ、102 共用メモリ、103 割込みテーブル、106 管理エリア、201 オンラインデバッガ、203 割込み制御部、204 デバック情報チェック部、P0,P1,P2,P3,P4 単位プロセッサP、R0,R1,R2,R3,R4 ステートレジスタ

Claims (2)

  1. マルチプロセッサをデバッグ処理するデバッグ支援装置であって、
    マルチプロセッサを構成する複数の単位プロセッサのステータスレジスタを定期的にチェックすることによってHALT状態となっている単位プロセッサを検出する単位プロセッサ選択手段と、
    複数の前記単位プロセッサの各々が、プログラムを構成する単位であるスレッドごとにプログラムを実行すると共に、前記スレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止手段と、
    マルチプロセッサを構成する複数の単位プロセッサに共用されるメモリに保存され、前記単位プロセッサ停止手段によって停止された複数の前記単位プロセッサの状態に関する情報を検出する処理であるデバッグ処理を、前記単位プロセッサのいずれかに実行させるデバッグ実行手段と、
    を備えてなり、
    前記デバッグ実行手段は、
    例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサのうち、前記単位プロセッサ選択手段によって検出されたHALT状態となっている単位プロセッサを使ってデバッグ処理を実行することを特徴とするデバッグ支援装置。
  2. マルチプロセッサを構成する複数の単位プロセッサに共用されるメモリに保存され、マルチプロセッサをデバッグ処理するデバッグ支援装置に適用されるデバッグ処理方法をコンピュータに実行させるためのプログラムであって、
    マルチプロセッサを構成する複数の単位プロセッサのステータスレジスタを定期的にチェックすることによってHALT状態となっている単位プロセッサを検出する単位プロセッサ選択ステップと、
    複数の前記単位プロセッサの各々によってプログラムを構成する単位であるスレッドごとに実行されているプログラムのうちの一部においてブレークポイントによるソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止ステップと、
    前記単位プロセッサ停止ステップにおいて停止された複数の前記単位プロセッサの状態に関する情報を検出する処理であるデバッグ処理を、前記単位プロセッサのいずれかに実行させるデバッグ実行ステップと、
    を含み、
    前記デバッグ実行ステップは、
    例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサのうち、前記単位プロセッサ選択ステップにおいて検出されたHALT状態となっている単位プロセッサを使ってデバッグ処理を実行することを特徴とするデバッグ処理方法をコンピュータに実行させるためのプログラム。
JP2006003529A 2006-01-11 2006-01-11 デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム Expired - Fee Related JP4222370B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2006003529A JP4222370B2 (ja) 2006-01-11 2006-01-11 デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
US11/651,549 US7992042B2 (en) 2006-01-11 2007-01-10 Debug support device, and program for directing computer to perform debugging method
KR1020077018139A KR20070091047A (ko) 2006-01-11 2007-01-11 디버그 지원 장치 및 디버그 처리 방법을 컴퓨터에 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
EP07706614A EP1855205A4 (en) 2006-01-11 2007-01-11 DEVICE FOR IMPLEMENTING DEBINING, AND SOFTWARE TO ENABLE THE COMPUTER TO EXECUTE THE DEBINING PROCESSING METHOD
PCT/JP2007/050267 WO2007080931A1 (ja) 2006-01-11 2007-01-11 デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
CNA2007800000762A CN101213523A (zh) 2006-01-11 2007-01-11 调试辅助装置及用于在计算机中执行调试处理方法的程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006003529A JP4222370B2 (ja) 2006-01-11 2006-01-11 デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム

Publications (2)

Publication Number Publication Date
JP2007188147A JP2007188147A (ja) 2007-07-26
JP4222370B2 true JP4222370B2 (ja) 2009-02-12

Family

ID=38256336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006003529A Expired - Fee Related JP4222370B2 (ja) 2006-01-11 2006-01-11 デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム

Country Status (6)

Country Link
US (1) US7992042B2 (ja)
EP (1) EP1855205A4 (ja)
JP (1) JP4222370B2 (ja)
KR (1) KR20070091047A (ja)
CN (1) CN101213523A (ja)
WO (1) WO2007080931A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8656145B2 (en) * 2008-09-19 2014-02-18 Qualcomm Incorporated Methods and systems for allocating interrupts in a multithreaded processor
JP2010117813A (ja) * 2008-11-12 2010-05-27 Nec Electronics Corp デバッグシステム、デバッグ方法、デバッグ制御方法及びデバッグ制御プログラム
US8140832B2 (en) * 2009-01-23 2012-03-20 International Business Machines Corporation Single step mode in a software pipeline within a highly threaded network on a chip microprocessor
US8060783B2 (en) * 2009-02-20 2011-11-15 International Business Machines Corporation Distributed runtime diagnostics in hierarchical parallel environments
US8522000B2 (en) * 2009-09-29 2013-08-27 Nvidia Corporation Trap handler architecture for a parallel processing unit
KR20110065067A (ko) * 2009-12-09 2011-06-15 삼성전자주식회사 멀티 쓰레드 테스팅시 발생되는 에러 정보에 대한 비주얼 인터페이스를 제공하는 장치 및 방법
US8504875B2 (en) * 2009-12-28 2013-08-06 International Business Machines Corporation Debugging module to load error decoding logic from firmware and to execute logic in response to an error
US8719797B2 (en) * 2010-05-18 2014-05-06 Blackberry Limited System and method for debugging dynamically generated code of an application
US8904235B2 (en) * 2011-01-12 2014-12-02 Toyota Jidosha Kabushiki Kaisha Online debug system and online debug method for information processing device
GB2487575B (en) 2011-01-28 2017-04-12 Advanced Risc Mach Ltd Controlling generation of debug exceptions
US8694832B2 (en) * 2011-03-03 2014-04-08 International Business Machines Corporation Assist thread analysis and debug mechanism
WO2013061369A1 (en) * 2011-10-26 2013-05-02 Hitachi, Ltd. Information system and control method of the same
EP2962205B1 (de) * 2013-04-09 2018-06-20 Siemens Aktiengesellschaft Mehrkern-prozessorsystem mit fehleranalysefunktion
US9684578B2 (en) 2014-10-30 2017-06-20 Qualcomm Incorporated Embedded universal serial bus (USB) debug (EUD) for multi-interfaced debugging in electronic systems
US10102050B2 (en) * 2015-02-05 2018-10-16 Microchip Technology Incorporated System and method for generating cross-core breakpoints in a multi-core microcontroller
KR102450553B1 (ko) 2015-06-04 2022-10-05 삼성전자주식회사 저장 장치 및 그것을 내장한 메인 보드 및 그것의 자가 진단 방법
US10606679B2 (en) * 2017-12-04 2020-03-31 Arm Limited Debug apparatus and method
GB2580136B (en) 2018-12-21 2021-01-20 Graphcore Ltd Handling exceptions in a multi-tile processing arrangement
GB2583574B (en) * 2018-12-21 2021-05-19 Graphcore Ltd Handling Exceptions in a Multi-Tile Processing Arrangement

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613128A (en) * 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
JPH05313946A (ja) 1992-05-06 1993-11-26 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサシステムのデバグ支援装置
ES2221921T3 (es) * 1992-07-13 2005-01-16 Shiseido Company, Ltd. Composicion para preparacion dermatologica.
JP2522158B2 (ja) 1993-05-25 1996-08-07 日本電気株式会社 マルチプロセッサシステムのプログラムデバッグ方法
US5721931A (en) * 1995-03-21 1998-02-24 Advanced Micro Devices Multiprocessing system employing an adaptive interrupt mapping mechanism and method
JP2677249B2 (ja) 1995-04-28 1997-11-17 日本電気株式会社 マルチプロセッサシステムのプログラムデバッグ方法およびデバッガ
JP2737724B2 (ja) 1995-10-09 1998-04-08 日本電気株式会社 プロセッサ間nmi通信装置およびシステムバスコントローラ
US6112298A (en) * 1996-12-20 2000-08-29 Texas Instruments Incorporated Method for managing an instruction execution pipeline during debugging of a data processing system
JPH10333938A (ja) 1997-06-04 1998-12-18 Toshiba Corp 計算機システムにおける実行ログの記録、表示方法、ならびに同方法を用いた計算機システム、及び同方法がプログラムされ記録される記録媒体
US6016555A (en) * 1997-11-19 2000-01-18 Texas Instruments Incorporated Non-intrusive software breakpoints in a processor instruction execution pipeline
US6418543B1 (en) * 1998-07-14 2002-07-09 Cisco Technology, Inc. Apparatus and method for debugging source code
CA2246270C (en) * 1998-09-01 2003-09-23 Ibm Canada Limited - Ibm Canada Limitee Debugging multiple related processes simultaneously
US6718294B1 (en) * 2000-05-16 2004-04-06 Mindspeed Technologies, Inc. System and method for synchronized control of system simulators with multiple processor cores
JP2002024196A (ja) 2000-07-11 2002-01-25 Fujitsu Ltd プロセッサ制御方式
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
EP1365328B1 (en) * 2001-02-28 2013-09-04 Fujitsu Limited Method for executing parallel process, and multi-processor computer
US6859892B2 (en) * 2001-04-25 2005-02-22 Hewlett-Packard Development Company, L.P. Synchronous breakpoint system and method
US7131114B2 (en) * 2001-07-16 2006-10-31 Texas Instruments Incorporated Debugger breakpoint management in a multicore DSP device having shared program memory
US6857084B1 (en) * 2001-08-06 2005-02-15 Lsi Logic Corporation Multiprocessor system and method for simultaneously placing all processors into debug mode
JP2003223339A (ja) 2002-01-30 2003-08-08 Denso Corp インサーキットエミュレータ
IL151251A0 (en) * 2002-08-14 2003-04-10 Elta Systems Ltd Parallel processing platform with synchronous system halt-resume
US7100033B2 (en) * 2002-10-23 2006-08-29 Intel Corporation Controlling the timing of test modes in a multiple processor system
JP2004318658A (ja) 2003-04-18 2004-11-11 Matsushita Electric Ind Co Ltd デバッグ制御装置及びその制御方法
US7444547B2 (en) * 2003-06-19 2008-10-28 International Business Machines Corproation Method, system, and product for programming in a simultaneous multi-threaded processor environment
JP4439235B2 (ja) 2003-10-15 2010-03-24 富士通株式会社 動作試験装置および動作試験方法
US7363544B2 (en) * 2003-10-30 2008-04-22 International Business Machines Corporation Program debug method and apparatus
US7222264B2 (en) * 2004-03-19 2007-05-22 Intel Corporation Debug system and method having simultaneous breakpoint setting
US7353498B2 (en) * 2004-04-29 2008-04-01 Hewlett-Packard Development Company, L.P. Multi-process debugger
JP4834983B2 (ja) 2004-12-09 2011-12-14 富士通株式会社 Iceサーバ
JP3870970B2 (ja) * 2005-03-15 2007-01-24 セイコーエプソン株式会社 プロセッサ制御装置
JP3976065B2 (ja) * 2006-01-16 2007-09-12 セイコーエプソン株式会社 マルチプロセッサシステム及びマルチプロセッサシステムの割込み制御方法をコンピュータに実行させるためのプログラム
JP5243711B2 (ja) * 2006-11-10 2013-07-24 セイコーエプソン株式会社 プロセッサ

Also Published As

Publication number Publication date
EP1855205A4 (en) 2010-04-28
US7992042B2 (en) 2011-08-02
WO2007080931A1 (ja) 2007-07-19
KR20070091047A (ko) 2007-09-06
CN101213523A (zh) 2008-07-02
JP2007188147A (ja) 2007-07-26
EP1855205A1 (en) 2007-11-14
US20070180322A1 (en) 2007-08-02

Similar Documents

Publication Publication Date Title
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
US8136097B2 (en) Thread debugging device, thread debugging method and information storage medium
JP3571976B2 (ja) デバッグ装置及び方法並びにプログラム記録媒体
JP6086230B2 (ja) 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法
KR102025078B1 (ko) 단일 스텝 실행을 이용한 코드 진단
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
JP2004086910A (ja) コンピュータ・プログラムをデバックするための方法、システムおよびソフトウェア・プロダクト
US20070174703A1 (en) Method for enhancing debugger performance of hardware assisted breakpoints
CN115576734B (zh) 一种多核异构日志存储方法和***
JP5452336B2 (ja) 周辺機器障害模擬システム、周辺機器障害模擬方法および周辺機器障害模擬プログラム
JP2009175960A (ja) 仮想マルチプロセッサシステム
JP2004302731A (ja) 情報処理装置および障害診断方法
JPH02294739A (ja) 障害検出方式
US8726244B2 (en) Software breakpoint handling by eliminating instruction replacement and execution under certain conditions
JP2010015364A (ja) マルチプロセッサシステム及び情報処理装置
JP2005352591A (ja) マルチプロセッサシステム、デバッグ方法、及びプログラム
TWI736564B (zh) 用於診斷執行指令串流的處理器之方法、設備、及系統
JP2008140124A (ja) データ処理装置
JP5425445B2 (ja) 処理制御システム、方法及びプログラム
US9342359B2 (en) Information processing system and information processing method
JP2017199180A (ja) 画像処理装置
JP2006079142A (ja) マルチプロセッサ装置
JPH04199336A (ja) マイクロコンピュータ
JP2007213396A (ja) デバッグシステム、オペレーションシステム、デバッグ方法、プログラム
JP2004318469A (ja) プログラムトレース装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071001

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071204

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080128

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081006

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111128

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111128

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131128

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees