"複数の記憶領域からなる共有メモリと、それぞれ独立した仮想アドレス空間をもち前記共有メモリ内の記憶領域を仮想アドレス空間内の仮想アドレスにマップする複数のプロセスを、処理装置により実行するプロセス実行部と、前記プロセス実行部で実行されるプロセスごとに前記共有メモリ内の記憶領域と仮想アドレスとのマッピング関係を管理するデータを記憶装置に記憶するマッピング管理部と、プロセス及び仮想アドレスが指定されると、前記マッピング管理部で記憶されたデータを参照して当該プロセスが当該仮想アドレスにマップしている記憶領域を特定し、特定した記憶領域に対するアクセスを前記処理装置により監視する共有メモリ監視部と、記憶領域を指定する入力を入力装置により受け付ける記憶領域指定部と、前記マッピング管理部で記憶されたデータを検索して、前記記憶領域指定部で指定された記憶領域を仮想アドレスにマップしているプロセス及び当該仮想アドレスを前記処理装置により抽出するプロセス検索部と、前記プロセス検索部で抽出されたプロセス及び仮想アドレスを前記共有メモリ監視部に対して指定するアドレス指定部とを備えることを特徴とする共有メモリデバッグ装置。前記プロセス実行部は、前記記憶領域指定部で記憶領域が指定されると指定された記憶領域を仮想アドレスにマップして当該仮想アドレスを前記プロセス検索部に通知する管理プロセスを、前記複数のプロセスの1つとして実行し、前記プロセス検索部は、前記マッピング管理部で記憶されたデータを検索して、前記プロセス実行部で実行された管理プロセスから通知された仮想アドレスがマップされている記憶領域を特定し、特定した記憶領域を仮想アドレスにマップしているプロセス及び当該仮想アドレスを抽出することを特徴とする請求項1の共有メモリデバッグ装置。前記アドレス指定部は、前記プロセス実行部で実行されるプロセスが前記記憶領域指定部で指定された記憶領域を新たに仮想アドレスにマップした場合、当該プロセス及び当該仮想アドレスを前記共有メモリ監視部に対して指定することを特徴とする請求項1又は2の共有メモリデバッグ装置。複数の記憶領域からなる共有メモリを備えるコンピュータを、それぞれ独立した仮想アドレス空間をもち前記共有メモリ内の記憶領域を仮想アドレス空間内の仮想アドレスにマップする複数のプロセスを、処理装置により実行するプロセス実行部と、前記プロセス実行部で実行されるプロセスごとに前記共有メモリ内の記憶領域と仮想アドレスとのマッピング関係を管理するデータを記憶装置に記憶するマッピング管理部と、プロセス及び仮想アドレスが指定されると、前記マッピング管理部で記憶されたデータを参照して当該プロセスが当該仮想アドレスにマップしている記憶領域を特定し、特定した記憶領域に対するアクセスを前記処理装置により監視する共有メモリ監視部と、記憶領域を指定する入力を入力装置により受け付ける記憶領域指定部と、前記マッピング管理部で記憶されたデータを検索して、前記記憶領域指定部で指定された記憶領域を仮想アドレスにマップしているプロセス及び当該仮想アドレスを前記処理装置により抽出するプロセス検索部と、前記プロセス検索部で抽出されたプロセス及び仮想アドレスを前記共有メモリ監視部に対して指定するアドレス指定部として機能させるためのプログラム。非特許文献1のように、仮想アドレスが指定されると、その仮想アドレスへのデータ書き込みを検出するCPUを、共有メモリへのデータ書き込みを検出するために使用する場合、以下の課題があった。1OS上では複数のプロセスが動作しており、それらの中には書き込み検出対象となる共有メモリを仮想空間にマップしているものもあれば、マップしていない利用していないものもある。そのため、仮想空間にマップしているプロセスを選び出して、人手でデータ書き込み検出の設定をCPUに行わなければならない。あるいは、それがアプリケーションプログラムのプロセスであれば、アプリケーションプログラム側でデータ書き込み検出の設定をCPUに行わなければならない。2複数のプロセスが同じ共有メモリをマップする場合でも、マップ先仮想アドレスはプロセスごとに異なるアドレスになる。そのため、データ書き込み検出対象の仮想アドレスがどこになるかを予め特定することができず、共有メモリのマップ後にマップされたアドレスを基に人手でデータ書き込み検出の設定をCPUにしなければならない。3プロセスがデータ書き込み検出対象の共有メモリを新たにマップした場合は、その共有メモリへの書き込み検出ができない。本発明は、例えば、非特許文献1のように仮想アドレスが指定されるとメモリのアクセスを捕捉するCPUを用いて、人手を介さず、アプリケーションプログラムにも手を加えることなく、共有メモリの特定部分へのデータ書き込みを検出することを目的とする。本発明の一の態様に係る共有メモリデバッグ装置は、複数の記憶領域からなる共有メモリと、それぞれ独立した仮想アドレス空間をもち前記共有メモリ内の記憶領域を仮想アドレス空間内の仮想アドレスにマップする複数のプロセスを、処理装置により実行するプロセス実行部と、前記プロセス実行部で実行されるプロセスごとに前記共有メモリ内の記憶領域と仮想アドレスとのマッピング関係を管理するデータを記憶装置に記憶するマッピング管理部と、プロセス及び仮想アドレスが指定されると、前記マッピング管理部で記憶されたデータを参照して当該プロセスが当該仮想アドレスにマップしている記憶領域を特定し、特定した記憶領域に対するアクセスを前記処理装置により監視する共有メモリ監視部と、記憶領域を指定する入力を入力装置により受け付ける記憶領域指定部と、前記マッピング管理部で記憶されたデータを検索して、前記記憶領域指定部で指定された記憶領域を仮想アドレスにマップしているプロセス及び当該仮想アドレスを前記処理装置により抽出するプロセス検索部と、前記プロセス検索部で抽出されたプロセス及び仮想アドレスを前記共有メモリ監視部に対して指定するアドレス指定部とを備える。本発明の一の態様によれば、非特許文献1のように仮想アドレスが指定されるとメモリのアクセスを捕捉するCPUを用いて、人手を介さず、アプリケーションプログラムにも手を加えることなく、共有メモリの特定部分へのデータ書き込みを検出することが可能となる。以下、本発明の実施の形態について、図を用いて説明する。実施の形態1.図1は、本実施の形態に係る共有メモリデバッグ装置100の構成を示すブロック図である。図1において、共有メモリデバッグ装置100は、プロセス実行部101、マッピング管理部102、共有メモリ監視部103、記憶領域指定部104、プロセス検索部105、アドレス指定部106を備える。共有メモリデバッグ装置100の各部の動作については後述する。また、共有メモリデバッグ装置100は、CPU191、メモリ192、入力装置193、出力装置194等のハードウェアを備える。ハードウェアは共有メモリデバッグ装置100の各部によって利用される。CPU191は、処理装置の一例であり、共有メモリデバッグ装置100の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。CPU191は、非特許文献1に示されているCPUと同様に、仮想アドレスが指定されるとメモリ192内の該当する記憶領域へのアクセスを捕捉する機能をもっている。メモリ192は、記憶装置の一例であり、共有メモリデバッグ装置100の各部でデータや情報を記憶するために利用される。メモリ192上では、1つの共有メモリ又は複数の共有メモリからなる共有メモリ群110が任意に設定確保される。入力装置193は、共有メモリデバッグ装置100の各部でデータや情報を入力するために、出力装置194は、共有メモリデバッグ装置100の各部でデータや情報を出力するために利用される。図2は、共有メモリデバッグ装置100のハードウェア構成の一例を示す図である。図2において、共有メモリデバッグ装置100は、コンピュータであり、LCD901LiquidCrystalDisplay、キーボード902K/B、マウス903、FDD904FlexibleDiskDrive、CDD905CompactDiscDrive、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRTCathodeRayTube、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。共有メモリデバッグ装置100は、前述したように、CPU191を備えている。CPU191は、バス912を介してROM913ReadOnlyMemory、メモリ192、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920HardDiskDriveと接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。メモリ192は、例えばRAMRandomAccessMemoryで構成される。RAM、ROM913、FDD904、CDD905、HDD920は、記憶装置の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置193の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置194の一例である。通信ボード915は、LANLocalAreaNetwork等に接続されている。通信ボード915は、LANに限らず、IP-VPNInternetProtocolVirtualPrivateNetwork、広域LAN、ATMAsynchronousTransferModeネットワークといったWANWideAreaNetwork、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。HDD920には、OS120、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU191、OS120、ウィンドウシステム922により実行される。OS120、ウィンドウシステム922もプログラムであり、CPU191により実行される。OS120、ウィンドウシステム922、プログラム群923には、本実施の形態の説明において~部として説明する機能を実行するプログラムが含まれている。プログラムは、CPU191により読み出され実行される。ファイル群924には、本実施の形態の説明において、~データ、~情報、~ID識別子、~フラグ、~結果として説明するデータや情報や信号値や変数値やパラメータが、~ファイルや~データベースや~テーブルの各項目として含まれている。~ファイルや~データベースや~テーブルは、HDD920等の記録媒体に記憶される。HDD920等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU191によりメモリ192に読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU191の処理動作に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU191の処理中、データや情報や信号値や変数値やパラメータは、メモリ192に一時的に記憶される。本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、メモリ192、FDD904のフレキシブルディスクFD、CDD905のコンパクトディスクCD、HDD920の磁気ディスク、光ディスク、DVDDigitalVersatileDisc、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。本実施の形態の説明において~部として説明するものは、~回路、~装置、~機器であってもよく、また、~ステップ、~工程、~手順、~処理であってもよい。即ち、~部として説明するものは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わないし、ROM913に記憶されたファームウェアとハードウェアとの組み合わせで実現されていても構わない。あるいは、~部として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとファームウェアとハードウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU191により読み出され、CPU191により実行される。即ち、プログラムは、本実施の形態の説明で述べる~部としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる~部の手順や方法をコンピュータに実行させるものである。図3は、OS120の構成及びOS120上で実行されるプロセス群150複数のプロセスの例を示すブロック図である。図3において、プロセス群150に含まれるプロセスA~Dは、OS120上で実行中のプログラムである。プロセスA~Dは、それぞれ独立した仮想空間仮想アドレス空間をもつ。そして、プロセスA~Dは、メモリ192上に展開記憶されているか、あるいは、メモリ192上に展開可能な例えばHDD920等の記録媒体に記憶されていて必要時にメモリ192に読み出されるオブジェクトを仮想空間にマップする。オブジェクトとしては、プロセスが実行する命令を格納しているファイル、プロセスが利用するデータを格納しているファイル等のほか、共有メモリ群110に含まれる共有メモリがある。以下では、共有メモリ群110に含まれる共有メモリの一例として、2つの共有メモリX,Yがメモリ192上に設定されているものとする。共有メモリX,Yは、それぞれ複数の記憶領域からなる。プロセス群150に含まれる少なくとも一部のプロセスは、共有メモリX,Yのいずれか又は両方を仮想空間にマップする。本例では、プロセスAとプロセスDは同じ共有メモリXをそれぞれのプロセスの仮想空間内にマップしている。つまり、プロセスAとプロセスDは共有メモリX内の各記憶領域を、それぞれの仮想空間内の各仮想アドレスにマップしている。このとき、プロセスAとプロセスDの仮想空間はそれぞれ独立して設定されているため、共有メモリX内の同じ記憶領域にマップされている仮想アドレスはプロセスAとプロセスDとの間で同じであるとは限らない。また、プロセスBはプロセスA、プロセスDとは異なる共有メモリYをマップしている。つまり、プロセスBは共有メモリY内の各記憶領域を、自己の仮想空間内の各仮想アドレスにマップしている。プロセスCは共有メモリをマップしていない。設定/管理プロセス151は、利用者が書き込み捕捉検出対象の仮想アドレスとデータ長を指定するために用いるプログラムであり、通常のプロセスA~Dにはない共有メモリ指定処理152を含む。設定/管理プロセス151も、プロセス群150に含まれるプロセスの1つであり、プロセスA~Dと同様に、独自の仮想空間をもっている。そして、共有メモリ群110に含まれる共有メモリを仮想空間にマップすることができる。本例では、利用者が書き込み捕捉対象として共有メモリX内の記憶領域を指定した場合を想定している。そのため、設定/管理プロセス151は、共有メモリ指定処理152の動作により共有メモリXを仮想空間内にマップしている。つまり、設定/管理プロセス151は共有メモリX内の各記憶領域を、自己の仮想空間内の各仮想アドレスにマップしている。共有メモリ指定処理152については後述する。OS120は、一般的なOSと同様に、メモリ管理121、共有メモリ管理122、プロセス管理123、I/O管理124インプット/アウトプット管理、ネットワーク管理125等の各処理をカーネル内に含む。また、OS120は、捕捉対象の仮想アドレスにCPU191がアクセスしたときに発生するトラップ割り込みにより呼び出される書き込みトラップ処理126をカーネル内に含む。さらに、OS120は、捕捉対象のプロセス実行時にCPU191に対して書き込み捕捉設定を行う捕捉設定処理130をカーネル内に含む。捕捉設定処理130は、プロセス検索処理131、アドレス指定処理132、マップ検出処理133からなる。これらの処理については後述する。図4は、OS120のプロセス管理123及びプロセス検索処理131で用いるデータの例を示す図である。図4において、プロセスを管理するデータ201は、プロセス群150に含まれる個々のプロセスを管理するデータ202の集合である。個々のプロセスを管理するデータ202としては、プロセスAを管理するデータ202a、プロセスBを管理するデータ202b等のほか、設定/管理プロセス151を管理するデータ202’がある。プロセス管理123は、プロセスが起動されると、そのプロセスを管理するデータ202を生成し、メモリ192に記憶する。その後、プロセス管理123は、必要に応じて、そのプロセスを管理するデータ202を更新する。また、プロセス管理123は、プロセスが終了等すると、そのプロセスを管理するデータ202をメモリ192から削除する。1つのプロセスを管理するデータ202には、そのプロセスの仮想空間を管理するデータ205へのポインタ203が含まれる。また、CPU191により実行されていたプロセスが他のプロセスに切り替わるときは、プロセス実行時のCPU191のレジスタの内容が、個々のプロセスを管理するデータ202の中にCPUレジスタ保存データ204として保持される。プロセス管理123は、そのプロセスが再びCPU191により実行される際に、CPUレジスタ保存データ204の内容をCPU191のレジスタに反映させる。プロセスの仮想空間は、命令を保持する領域、データを保持する領域、スタックを保持する領域、共有メモリの領域等、複数の領域からなる。複数の共有メモリをマップしている場合は、共有メモリごとに領域が確保される。プロセスの仮想空間を管理するデータ205は、仮想空間に含まれる個々の領域を管理するデータ206の集合である。個々の領域を管理するデータ206としては、例えば共有メモリXがマップされているのであれば、共有メモリXの領域を管理するデータ206xがあり、共有メモリYがマップされているのであれば、共有メモリYの領域を管理するデータ206yがある。プロセス管理123は、プロセスが仮想空間内の領域にオブジェクトをマップすると、その領域を管理するデータ206を生成し、メモリ192に記憶する。このとき、プロセス管理123は、その領域を管理するデータ206に対するポインタ203を、該当するプロセスを管理するデータ202に設定する。仮想空間内の1つの領域を管理するデータ206には、その領域の先頭仮想アドレス207、その領域のサイズ208長さ、その領域にマップしているオブジェクトを管理するデータ210へのポインタ209が含まれる。異なるプロセスが同一の共有メモリをマップしている場合、それぞれのプロセスの仮想空間内の当該共有メモリの領域を管理するデータ206からは、同一のオブジェクト即ち、共有メモリを管理するデータ210がポイントされることになるポインタ209のポイント先が同一になる。仮想空間にマップしているオブジェクトを管理するデータ210は、オブジェクトを一意に特定するデータであり、このようなデータとしては、オブジェクトのIDやメモリ192内でのオブジェクトの位置物理アドレス等を使用することができる。プロセス管理123は、オブジェクトを管理するデータ210をメモリ192に記憶しておき、そのオブジェクトをプロセスがマップすると、そのオブジェクトを管理するデータ210に対するポインタ209を、そのプロセスの仮想空間内の該当する領域を管理するデータ206に設定する。共有メモリ内オフセット211、データの長さ212、ターゲット識別ポインタ213は、順番に、書き込み検出対象の共有メモリ内のオフセット、当該オフセットからの書き込み検出対象とする範囲、その共有メモリを管理するデータ210へのポインタである。プロセス検索処理131は、後述する動作により、これらのデータを作成し、メモリ192に記憶する。以下、共有メモリデバッグ装置100の動作本実施の形態に係る共有メモリデバッグ方法、本実施の形態に係るプログラムの処理手順について説明する。図1に示したプロセス実行部101は、プロセス群150に含まれる複数のプロセスをCPU191によりOS120上で実行する。プロセス実行部101で実行されるプロセスとしては、図3に示したように、通常のプロセスA~D等のほか、設定/管理プロセス151がある。図1に示したマッピング管理部102は、OS120のプロセス管理123の動作により、プロセス実行部101で実行されるプロセスごとに共有メモリ群110に含まれる共有メモリ内の記憶領域と仮想アドレスとのマッピング関係を管理するデータをメモリ192に記憶する。例えばプロセスAについて、マッピング管理部102で記憶されるデータマッピング関係を管理するデータとしては、図4に示したように、プロセスAを管理するデータ202aのポインタ203が指し示すプロセスAの仮想空間を管理するデータ205の中に、共有メモリXの領域を管理するデータ206xがある。具体的には、共有メモリXの領域を管理するデータ206xの中に、共有メモリX内の先頭の記憶領域がマップされた仮想アドレスである先頭仮想アドレス207と、共有メモリXのサイズ208と、共有メモリXを管理するデータ210へのポインタ209がある。プロセスB~D等、設定/管理プロセス151についても、マッピング管理部102で記憶されるデータとしては、同様のデータがある。図5は、設定/管理プロセス151の動作を示すフローチャートである。ステップS101において、図1に示した記憶領域指定部104は、共有メモリ内の記憶領域を指定する入力を入力装置193により受け付ける。具体的には、まず、利用者が、LCD901等の出力装置194により表示されたターミナルウィンドウに、書き込みの捕捉対象の共有メモリを指定するコマンドをキーボード902により入力する。このとき、コマンドのパラメータとして、利用者が書き込みを捕捉したい共有メモリXのIDと、その先頭からのオフセットと、データの長さが指定される。そして、記憶領域指定部104が、入力されたコマンドを解析して、その解析結果に基づき、プロセス実行部101に設定/管理プロセス151を実行させる。ステップS102において、プロセス実行部101で実行される設定/管理プロセス151は、記憶領域指定部104で指定された共有メモリ内の記憶領域を自己の仮想空間内の仮想アドレスにマップする。具体的には、設定/管理プロセス151の共有メモリ指定処理152が、ステップS101でIDが入力された共有メモリXを設定/管理プロセス151の仮想空間にマップする。ステップS103において、プロセス実行部101で実行される設定/管理プロセス151は、ステップS102でマップした仮想アドレスを、図1に示したプロセス検索部105に通知する。具体的には、設定/管理プロセス151の共有メモリ指定処理152が、ステップS102でマップした共有メモリXの先頭仮想アドレスと、ステップS101で入力された共有メモリXの先頭からのオフセットとデータの長さをOS120の捕捉設定処理130に通知する。ステップS103の実行後、図1に示したプロセス検索部105は、OS120の捕捉設定処理130の動作後述するステップS201~S205により、マッピング管理部102で記憶されたデータを検索して、プロセス実行部101で実行された設定/管理プロセス151から通知された仮想アドレスがマップされている共有メモリ内の記憶領域を特定する。そして、プロセス検索部105は、捕捉設定処理130の動作後述するステップS206により、特定した記憶領域を仮想アドレスにマップしているプロセス及び当該仮想アドレスを抽出する。図1に示したアドレス指定部106は、捕捉設定処理130の動作後述するステップS207により、プロセス検索部105で抽出されたプロセス及び仮想アドレスを共有メモリ監視部103に対して指定する。図1に示した共有メモリ監視部103は、CPU191がもつ、非特許文献1に示されているCPUと同様の機能を利用して、プロセス及び仮想アドレスが指定されると、マッピング管理部102で記憶されたデータを参照して当該プロセスが当該仮想アドレスにマップしている記憶領域を特定し、特定した記憶領域に対するアクセス書き込みだけでなく、読み出しを含めてもよいを監視するトレース処理を開始する。具体的には、共有メモリ監視部103は、プロセス及び仮想アドレスが指定されると、指定されたプロセスの実行中に、指定された仮想アドレスを捕捉対象としてCPU191のデバッグレジスタに格納する。CPU191は、前述した機能により、デバッグレジスタ内の仮想アドレスへのアクセスを検知すると、トラップを発生させる。これにより、OS120の書き込みトラップ処理126が呼び出され、書き込みトラップ処理126が、実行中のプロセスのIDや書き込みを行った命令のアドレス等をデバッグ用のログデータとしてメモリ192に記憶する。なお、実行中のプロセスが他のプロセスに切り替わる際には、CPU191のデバッグレジスタの内容が、切り替え前のプロセスのCPUレジスタ保存データ204としてメモリ192に記憶される。そして、そのプロセスが再び実行される際には、CPUレジスタ保存データ204の内容がデバッグレジスタに戻される。図6は、捕捉設定処理130の動作を示すフローチャートである。ステップS201において、捕捉設定処理130のプロセス検索処理131は、ステップS103で設定/管理プロセス151から通知された、共有メモリXの先頭仮想アドレスと共有メモリXの先頭からのオフセットとデータの長さを受け取る。そして、プロセス検索処理131は、受け取った共有メモリXの先頭からのオフセットとデータの長さを、それぞれメモリ192に記憶した共有メモリ内オフセット211とデータの長さ212に設定する。ステップS202において、プロセス検索処理131は、プロセス管理123がメモリ192に記憶したプロセスを管理するデータ201から、設定/管理プロセス151を管理するデータ202’を取り出す。ステップS203において、プロセス検索処理131は、ステップS202で取り出した設定/管理プロセス151を管理するデータ202’に含まれるポインタ203が指し示す設定/管理プロセス151の仮想空間を管理するデータ205を取得する。ステップS204において、プロセス検索処理131は、ステップS203で取得した設定/管理プロセス151の仮想空間を管理するデータ205に含まれる各領域を管理するデータ206の先頭仮想アドレス207を調べ、ステップS201で受け取った共有メモリXの先頭仮想アドレスと一致するものを探し出す。ここでは、プロセス検索処理131は、共有メモリXの領域を管理するデータ206xを抽出する。ステップS205において、プロセス検索処理131は、ステップS204で抽出した共有メモリXの領域を管理するデータ206xに含まれるポインタ209が指し示す、仮想空間にマップしているオブジェクト即ち、共有メモリXを管理するデータ210を取得する。そして、プロセス検索処理131は、取得した共有メモリXを管理するデータ210へのポインタを、メモリ192に記憶したターゲット識別ポインタ213に設定する。ステップS206において、プロセス検索処理131は、各プロセスを管理するデータ202a,202b,に対して、そこから辿ることができる仮想空間内の各領域を管理するデータ206からオブジェクトを管理するデータ210を指し示すポインタ209が、ターゲット識別ポインタ213に一致するものを探し出す。探し出したプロセスを管理するデータ202全てが、書き込み捕捉対象の共有メモリXをマップしているプロセスを管理するデータ202である。ここでは、プロセス検索処理131は、プロセスAを管理するデータ202aのほか、プロセスDを管理するデータ202を抽出する。ステップS207において、捕捉設定処理130のアドレス指定処理132は、ステップS206でプロセスを管理するデータ202が抽出されたプロセスAとプロセスDに対して、書き込み捕捉設定を行う。具体的には、まず、アドレス指定処理132は、プロセスAの仮想空間内を管理するデータ205に含まれる共有メモリXの領域を管理するデータ206xから先頭仮想アドレス207を取り出す。次に、アドレス指定処理132は、取り出した先頭仮想アドレス207に、ステップS201でメモリ192に記憶された共有メモリ内オフセットを加算することで、捕捉対象となる先頭の仮想アドレスを求める。そして、アドレス指定処理132は、求めた仮想アドレスと、ステップS201でメモリ192に記憶されたデータの長さ212を、プロセスAが実行中であればCPU191のデバッグレジスタに書き込む。プロセスAが実行中でなければプロセスAを管理するデータ202aのCPUレジスタ保存データ204にデバッグレジスタ用のデータとして書き込む。アドレス指定処理132は、プロセスDについても同様の動作を行う。図1に示したアドレス指定部106は、プロセス実行部101で実行されるプロセスが記憶領域指定部104で指定された記憶領域を新たに仮想アドレスにマップした場合にも、捕捉設定処理130の動作後述するステップS301~S303により、当該プロセス及び当該仮想アドレスを共有メモリ監視部103に対して指定する。図7は、トレース処理中にプロセスが共有メモリを新たにマップしたときの捕捉設定処理130の動作を示すフローチャートである。プロセスが共有メモリXをマップすると、ステップS301において、共有メモリ管理122により捕捉設定処理130のマップ検出処理133が呼び出される。ステップS302において、マップ検出処理133は、共有メモリXを新たにマップしたプロセスを管理するデータ202に含まれるポインタ203が指し示すプロセスの仮想空間を管理するデータ205を取得する。そして、マップ検出処理133は、取得したプロセスの仮想空間を管理するデータ205に含まれる各領域を管理するデータ206のポインタ209を調べ、ターゲット識別ポインタ213と同一のオブジェクトを管理するデータ210を指し示しているものを探し出す。該当するものがない場合は何も行わない。該当するものがある場合、ステップS303に進む。ステップS303において、捕捉設定処理130のアドレス指定処理132は、共有メモリXを新たにマップしたプロセスに対して、ステップS207と同様に、書き込み捕捉設定を行う。以上説明したように、本実施の形態に係る共有メモリデバッグ装置100は、共有メモリへの書き込みをトレースする際に、ユーザから書き込み対象の共有メモリを特定するIDと、書き込みを検出したい共有メモリの先頭からのオフセットアドレスとデータ長を設定/管理プロセス151に対して指定する入力を受け付ける。そして、共有メモリデバッグ装置100で実行される設定/管理プロセス151は、指定された共有メモリを自プロセスの仮想空間にマップし、マップした仮想アドレスと共有メモリの先頭からのオフセットアドレスとデータ長を、カーネル内の捕捉設定処理130に渡す。捕捉設定処理130は、設定/管理プロセス151がマップした共有メモリと同一の共有メモリをマップしているプロセスをOS120のプロセスの仮想空間を管理するデータ205から検索し、マップしている仮想アドレスを求め、データ書き込み捕捉対象の仮想アドレスを計算し、データ書き込み捕捉の設定を行う。これにより、本実施の形態では、非特許文献1のように仮想アドレスが指定されるとメモリのアクセスを捕捉するCPU191を用いて、人手を介さず、アプリケーションプログラムにも手を加えることなく、共有メモリの特定部分へのデータ書き込みを検出することが可能となる。また、本実施の形態において、捕捉設定処理130は、プロセスが共有メモリをマップしたとき、その共有メモリがトレース対象の共有メモリであるかを調べ、トレース対象の共有メモリである場合、マップした仮想アドレスを求め、データ書き込み捕捉対象の仮想アドレスを計算し、データ書き込み捕捉の設定を行う。これにより、本実施の形態では、新たに共有メモリをマップしたプロセスに対する捕捉設定を行うことができる。なお、本実施の形態では、捕捉対象を先頭のアドレスオフセットや仮想アドレスとデータの長さとの組み合わせにより指定しているが、捕捉対象を先頭のアドレスと最後尾のアドレスオフセットや仮想アドレスとの組み合わせにより指定しても構わない。即ち、捕捉対象の範囲をデータの長さで特定する代わりに、先頭と最後尾のアドレスで特定するようにしても構わない。また、本実施の形態では、各プロセスを管理するデータ202と各プロセスの仮想空間を管理するデータ205との対応付けリンクを、各プロセスを管理するデータ202に含まれるポインタ203のみで示しているが、各プロセスの仮想空間を管理するデータ205に逆向きのポインタを含めてもよい。即ち、各プロセスの仮想空間を管理するデータ205が各プロセスを管理するデータ202を指し示すポインタを含んでいても構わない。また、本実施の形態では、各プロセスの仮想空間内の各領域を管理するデータ206とオブジェクトを管理するデータ210との対応付けリンクを、各プロセスの仮想空間内の各領域を管理するデータ206に含まれるポインタ209のみで示しているが、オブジェクトを管理するデータ210に逆向きのポインタを含めてもよい。即ち、オブジェクトを管理するデータ210が各プロセスの仮想空間内の各領域を管理するデータ206を指し示すポインタを含んでいても構わない。この場合、ステップS206の処理が効率化できる。また、本実施の形態では、利用者から捕捉対象の共有メモリのIDと先頭からのオフセットとデータの長さが指定されると、設定/管理プロセス151を実行して、捕捉対象の共有メモリの先頭仮想アドレスと先頭からのオフセットとデータの長さを捕捉設定処理130に通知しているが、利用者から指定された情報をそのまま捕捉設定処理130に通知しても構わない。即ち、捕捉対象の共有メモリを指定する情報として、設定/管理プロセス151の仮想空間内で、その共有メモリの先頭がマップされた仮想アドレスを通知する代わりに、共有メモリのIDを直接通知しても構わない。この場合、例えば、プロセス管理123は、共有メモリを管理するデータ210として、共有メモリのIDを記憶しておく。ステップS201については、本実施の形態と同様であるが、その後のステップS202~S205は不要となる。ステップS206において、捕捉設定処理130のプロセス検索処理131は、ステップS201で捕捉対象として通知された共有メモリのIDへのポインタをターゲット識別ポインタ213に設定する。ステップS206及びS207については、本実施の形態と同様である。"