(57)【要約】【課題】ブレークポイント処理をより高速に行うことができるようにする。【解決手段】本技術の情報処理装置は、プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理を、互いに異なる実施方式で行う複数のブレークポイント処理部と、各ブレークポイントを監視するブレークポイント処理部を、前記ブレークポイント処理の結果に関する情報に基づいて、前記複数のブレークポイント処理部の中から選択する選択部とを備え、前記複数のブレークポイント処理部は、それぞれ、前記選択部により自身が選択されたブレークポイントを監視する情報処理装置である。本技術は、例えば、プログラムのデバッグを行う解析装置に適用することができる。【選択図】図１
2013206061.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理を、互いに異なる実施方式で行う複数のブレークポイント処理部と、
各ブレークポイントを監視するブレークポイント処理部を、前記ブレークポイント処理の結果に関する情報に基づいて、前記複数のブレークポイント処理部の中から選択する選択部と
を備え、
前記複数のブレークポイント処理部は、それぞれ、前記選択部により自身が選択されたブレークポイントを監視する
情報処理装置。
【請求項２】
前記複数のブレークポイント処理部は、
第１の方式により前記ブレークポイント処理を行う第１のブレークポイント処理部と、
前記第１の方式と監視可能ブレークポイント数および処理時間の異なる第２の方式により前記ブレークポイント処理を行う第２のブレークポイント処理部と
を含む請求項１に記載の情報処理装置。
【請求項３】
前記第２のブレークポイント処理部は、前記第１の方式よりも多くのブレークポイントを監視することができ、かつ、前記第１の方式よりも処理時間が長い第２の方式により前記ブレークポイント処理を行う
請求項２に記載の情報処理装置。
【請求項４】
前記第１の方式は、前記ブレークポイント処理を行うハードウエアを利用する方式であり、
前記第２の方式は、前記ブレークポイント処理を実現するソフトウエアを利用する方式である
請求項３に記載の情報処理装置。
【請求項５】
前記ブレークポイント処理の結果に関する情報は、前記ブレークポイント処理における、各ブレークポイントの捕獲回数に関する統計情報である
請求項１に記載の情報処理装置。
【請求項６】
前記選択部は、
前記統計情報の上位のブレークポイントに対して、第１の方式により前記ブレークポイント処理を行う第１のブレークポイント処理部を選択し、
前記統計情報の上位のブレークポイント以外のブレークポイントに対して、前記第１の方式よりも多くのブレークポイントを監視することができ、かつ、前記第１の方式よりも処理時間が長い第２の方式により前記ブレークポイント処理を行う第２のブレークポイント処理部を選択する
請求項５に記載の情報処理装置。
【請求項７】
前記選択部は、前記ブレークポイント処理の結果、前記統計情報の上位のブレークポイントが変化した場合、次のブレークポイント処理に対して、
前記統計情報の上位から外れたブレークポイントを監視するブレークポイント処理部を、前記第１のブレークポイント処理部から前記第２のブレークポイント処理部に変更し、
前記統計情報の上位に入ったブレークポイントを監視するブレークポイント処理部を、前記第２のブレークポイント処理部から前記第１のブレークポイント処理部に変更する
請求項６に記載の情報処理装置。
【請求項８】
前記第１の方式は、前記ブレークポイント処理を行うハードウエアを利用する方式であり、
前記第２の方式は、前記ブレークポイント処理を実現するソフトウエアを利用する方式である
請求項６に記載の情報処理装置。
【請求項９】
前記選択部による前記ブレークポイント処理部の選択に応じて、前記ブレークポイントの配置を設定する設定部をさらに備える
請求項１に記載の情報処理装置。
【請求項１０】
前記ブレークポイントは、データへのアクセスを捕獲するウォッチポイントと、命令の実行を捕獲するブレークポイントとを含む
請求項１に記載の情報処理装置。
【請求項１１】
情報処理装置の情報処理方法であって、
前記情報処理装置が、
プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理が行われるプログラムについて、前記プログラムの各ブレークポイントに対する前記ブレークポイント処理の実施方式を、前記ブレークポイント処理の結果に関する情報に基づいて、互いに異なる複数の実施方式の中から選択し、
各ブレークポイントに対する前記ブレークポイント処理を、選択した実施方式により行う
情報処理方法。
【請求項１２】
コンピュータを、
プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理が行われるプログラムについて、前記プログラムの各ブレークポイントに対する前記ブレークポイント処理の実施方式を、前記ブレークポイント処理の結果に関する情報に基づいて、互いに異なる複数の実施方式の中から選択する選択部と、
各ブレークポイントに対する前記ブレークポイント処理を、前記選択部により選択された実施方式により行うブレークポイント処理部と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報処理装置および方法、並びに、プログラムに関し、特に、ブレークポイント処理をより効率よく行うことができるようにした情報処理装置および方法、並びに、プログラムに関する。
【背景技術】
【０００２】
ソフトウエアプログラムのデバッグ手法として、ブレークポイントが使われることがある。ブレークポイントには、命令の実行を捕獲するブレークポイントと、データへのアクセスを捕獲するデータブレークポイント（以下、ウォッチポイントとも称する）がある。
【０００３】
それぞれの実施方式には、CPU等に備えられているハードウエアの監視機構を用いるハードウエア方式と、命令書き換えなど疑似的にソフトウエアで実現するソフトウエア方式がある。
【０００４】
ソフトウエアブレークポイントの例としては、命令を割り込み命令に書き換える手法が挙げられる。ソフトウエアウォッチポイント（データブレークポイント）の例としては、アクセス制御ユニット等を用いる手法が挙げられる（例えば、特許文献１参照）。この手法の場合、監視がブロックサイズ単位となっており、本来監視不要な条件まで捕獲してしまう恐れがあった。
【０００５】
ハードウエア方式は、ソフトウエア方式に比べ高速にブレークポイント処理を行うことができるが、処理対象として設定することができるブレークポイントの数がソフトウエア方式に比べて少ない。これに対して、ソフトウエア方式は、ハードウエア方式に比べて多数のブレークポイントを処理対象として設定することができるが、処理のオーバーヘッドがハードウエア方式よりも大きい（すなわち、処理時間が長い）。
【０００６】
なお、ハードウエア方式の設定可能なブレークポイント数を増大させる方法が考えられた（例えば、特許文献２参照）。この方法の場合、ブレークポイントテーブルをメモリ上に持ち、直近の分岐命令にブレークポイントを設定して逐次テーブルと比較することで多数のブレークポイントの設定を実現する。
【０００７】
しかしながら、この方法の場合、本来ブレークしないはずの分岐命令でブレークしたり、またテーブルとの比較処理を行ったりするので、オーバーヘッドが増大する恐れがあった。またウォッチポイントには適用することができなかった。
【０００８】
このように、ブレークポイント処理について、例えばハードウエア方式とソフトウエア方式のように、互いに異なる複数の実施方式が実現可能な場合、いずれか一方の方法だけでは、十分に効率よくブレークポイント処理を行うことができなかった。
【０００９】
そこで、このような互いに異なる複数の実施方式を用いてブレークポイント処理を行う方法が考えられた。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平８−３０４８５号公報
【特許文献２】特開２０１１−１０８１２４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、このような互いに異なる複数の実施方式のいずれを用いるかの選択を、プログラム開発者が指定するようにすると、プログラム開発者の煩雑な作業が必要になるだけでなく、プログラム開発者に正確かつ詳細な知識が必要であり、実現は困難であった。
【００１２】
そこで、ハードウエア方式の処理対象を優先的に設定するようにする方法が考えられた。すなわち、この場合、デバッガが、可能であれば、ブレークポイントをハードウエア方式のブレークポイントの処理対象として設定し、それが不可能である場合、ブレークポイントをソフトウエア方式のブレークポイント処理対象として設定する。
【００１３】
しかしながら、この場合、ブレークポイント処理の効率は考慮されていなかった。例えば、捕獲回数が多いブレークポイントがソフトウエア方式に設定されると、ソフトウエア方式のブレークポイント処理がより多く実行されることになるので、オーバーヘッドが増大する恐れがあった。
【００１４】
本技術は、このような状況に鑑みて提案されたものであり、ブレークポイント処理をより効率よく行うことを目的とする。
【課題を解決するための手段】
【００１５】
本技術の一側面は、プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理を、互いに異なる実施方式で行う複数のブレークポイント処理部と、各ブレークポイントを監視するブレークポイント処理部を、前記ブレークポイント処理の結果に関する情報に基づいて、前記複数のブレークポイント処理部の中から選択する選択部とを備え、前記複数のブレークポイント処理部は、それぞれ、前記選択部により自身が選択されたブレークポイントを監視する情報処理装置である。
【００１６】
前記複数のブレークポイント処理部は、第１の方式により前記ブレークポイント処理を行う第１のブレークポイント処理部と、前記第１の方式と監視可能ブレークポイント数および処理時間の異なる第２の方式により前記ブレークポイント処理を行う第２のブレークポイント処理部とを含むことができる。
【００１７】
前記第２のブレークポイント処理部は、前記第１の方式よりも多くのブレークポイントを監視することができ、かつ、前記第１の方式よりも処理時間が長い第２の方式により前記ブレークポイント処理を行うことができる。
【００１８】
前記第１の方式は、前記ブレークポイント処理を行うハードウエアを利用する方式であり、前記第２の方式は、前記ブレークポイント処理を実現するソフトウエアを利用する方式であることができる。
【００１９】
前記ブレークポイント処理の結果に関する情報は、前記ブレークポイント処理における、各ブレークポイントの捕獲回数に関する統計情報であることができる。
【００２０】
前記選択部は、前記統計情報の上位のブレークポイントに対して、第１の方式により前記ブレークポイント処理を行う第１のブレークポイント処理部を選択し、前記統計情報の上位のブレークポイント以外のブレークポイントに対して、前記第１の方式よりも多くのブレークポイントを監視することができ、かつ、前記第１の方式よりも処理時間が長い第２の方式により前記ブレークポイント処理を行う第２のブレークポイント処理部を選択することができる。
【００２１】
前記選択部は、前記ブレークポイント処理の結果、前記統計情報の上位のブレークポイントが変化した場合、次のブレークポイント処理に対して、前記統計情報の上位から外れたブレークポイントを監視するブレークポイント処理部を、前記第１のブレークポイント処理部から前記第２のブレークポイント処理部に変更し、前記統計情報の上位に入ったブレークポイントを監視するブレークポイント処理部を、前記第２のブレークポイント処理部から前記第１のブレークポイント処理部に変更することができる。
【００２２】
前記第１の方式は、前記ブレークポイント処理を行うハードウエアを利用する方式であり、前記第２の方式は、前記ブレークポイント処理を実現するソフトウエアを利用する方式であることができる。
【００２３】
前記選択部による前記ブレークポイント処理部の選択に応じて、前記ブレークポイントの配置を設定する設定部をさらに備えることができる。
【００２４】
前記ブレークポイントは、データへのアクセスを捕獲するウォッチポイントと、命令の実行を捕獲するブレークポイントとを含むことができる。
【００２５】
本技術の一側面は、また、情報処理装置の情報処理方法であって、前記情報処理装置が、プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理が行われるプログラムについて、前記プログラムの各ブレークポイントに対する前記ブレークポイント処理の実施方式を、前記ブレークポイント処理の結果に関する情報に基づいて、互いに異なる複数の実施方式の中から選択し、各ブレークポイントに対する前記ブレークポイント処理を、選択した実施方式により行う情報処理方法である。
【００２６】
本技術の一側面は、さらに、コンピュータを、プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理が行われるプログラムについて、前記プログラムの各ブレークポイントに対する前記ブレークポイント処理の実施方式を、前記ブレークポイント処理の結果に関する情報に基づいて、互いに異なる複数の実施方式の中から選択する選択部と、各ブレークポイントに対する前記ブレークポイント処理を、前記選択部により選択された実施方式により行うブレークポイント処理部として機能させるためのプログラムである。
【００２７】
本技術の一側面においては、プログラムのブレークポイントを監視し、ブレークポイントに対する所定の条件が満たされる場合、プログラムの実行を停止するブレークポイント処理が行われるプログラムについて、プログラムの各ブレークポイントに対するブレークポイント処理の実施方式が、ブレークポイント処理の結果に関する情報に基づいて、互いに異なる複数の実施方式の中から選択され、各ブレークポイントに対するブレークポイント処理が、選択した実施方式により行われる。
【発明の効果】
【００２８】
本技術によれば、情報を処理することが出来る。特に、ブレークポイント処理をより効率よく行うことができる。
【図面の簡単な説明】
【００２９】
【図１】解析装置の主な構成例を示すブロック図である。
【図２】ブレークポイント設定の様子の例を説明する図である。
【図３】ブレークポイント設定の様子の例を説明する図である。
【図４】ブレークポイント設定の様子の例を説明する図である。
【図５】ブレークポイントの配置を設定する様子の例を説明する図である。
【図６】ブレークポイントの配置を設定する様子の例を説明する図である。
【図７】解析処理の流れの例を説明するフローチャートである。
【図８】ブレークポイント制御処理の流れの例を説明するフローチャートである。
【図９】監視方式設定処理の流れの例を説明するフローチャートである。
【図１０】プログラム生成処理の流れの例を説明するフローチャートである。
【図１１】コンピュータの主な構成例を示すブロック図である。
【発明を実施するための形態】
【００３０】
以下、本開示を実施するための形態（以下実施の形態とする）について説明する。なお、説明は以下の順序で行う。
１．第１の実施の形態（解析装置）
２．第２の実施の形態（コンピュータ）
【００３１】
＜１．第１の実施の形態＞
［１−１ブレークポイント処理の選択］
ソフトウエアプログラムのデバッグ手法の１つに、プログラムに設定されたブレークポイントを監視し、前記ブレークポイントに対する所定の条件が満たされる場合、前記プログラムの実行を停止するブレークポイント処理がある。
【００３２】
ブレークポイントには、命令の実行を捕獲するブレークポイントと、データへのアクセスを捕獲するデータブレークポイント（以下、ウォッチポイントとも称する）がある。
【００３３】
ブレークポイントの実施方式は、複数の方法が存在する。例えば、CPU等に備えられているハードウエアの監視機構を用いるハードウエア方式と、命令書き換えなど疑似的にソフトウエアで実現するソフトウエア方式がある。
【００３４】
ブレークポイント処理を行うハードウエアを利用するハードウエア方式は高速であるものの、監視対象として設定できるブレークポイントの数が限られている。ブレークポイント処理を実現するソフトウエアを利用するソフトウエア方式は、ハードウエア方式の場合よりも多くのブレークポイントを監視対象として設定することができるものの、ブレークポイント処理のオーバーヘッドが大きい。つまり、ソフトウエア方式の方が処理時間が長い。
【００３５】
ソフトウエアブレークポイントの例としては、命令を割り込み命令に書き換える手法が挙げられる。ソフトウエアウォッチポイント（データブレークポイント）の例としては、特許文献１に記載のような、アクセス制御ユニット等を用いる手法が挙げられる。このソフトウエアウォッチポイント手法では、監視がブロックサイズ単位となっており、本来監視不要な条件まで捕獲してしまう恐れがあった。
【００３６】
また、ハードウエア方式の手法として、特許文献２には、ブレークポイントテーブルをメモリ上に持ち、直近の分岐命令にブレークポイントを設定して逐次テーブルと比較することで多数のブレークポイントの設定を実現する手法が提案されている。しかしながら、この手法の場合、本来ブレークしないはずの分岐命令でブレークしたり、またテーブルとの比較処理を行ったりするので、オーバーヘッドが増大する恐れがあった。またウォッチポイントには適用することができなかった。
【００３７】
ハードウエア方式とソフトウエア方式のいずれを用いた方がより効率的であるかは、デバッグされるプログラム等に依存する。そのため、より確実により効率的な設定にするためには、ユーザが各ブレークポイントについて、ブレークポイント処理の実施方式を１つずつ指定する必要があった。ただし、その際、正しく指定を行うためには、プログラム開発者に正確かつ詳細な知識が必要であった。また、その設定にはプログラム開発者の煩雑な作業が必要であった。したがって、この設定作業の時間もブレークポイント処理に必要な時間として考えると、ブレークポイント処理の処理時間を低減させることは困難であった。
【００３８】
なお、デバッガによっては設定順にハードウエアが空いていれば自動的に選択するものもあるが、処理の効率化は考慮されていなかった。したがって、例えば、捕獲回数が多いブレークポイントがソフトウエア方式に設定される場合もあり、ブレークポイント処理のオーバーヘッドが増大する恐れもあった。
【００３９】
以上のように、従来の方式では、ブレークポイント処理の処理時間を十分に低減させることは、実質的に困難であった。
【００４０】
ところで、デバッグにおいてはブレークポイント処理が繰り返し行われる。そこで、プログラムに対してブレークポイント処理を含む動的解析を行う解析装置が、過去のブレークポイント処理の処理結果を用いて、効率よくブレークポイント処理が実行されるように、ブレークポイント処理の方式を決定するようにする。
【００４１】
例えば、解析装置が、過去のブレークポイントの捕獲回数に応じて、各ブレークポイントに対するブレークポイント処理の方式をハードウエア方式にするか、ソフトウエア方式にするかを選択するようにする。
【００４２】
より具体的には、例えば、解析装置が、過去に捕獲された回数が多いブレークポイントに対して、ハードウエア方式のブレークポイント処理を選択する。また、例えば、解析装置が、過去に捕獲された回数が少ないブレークポイントに対して、ソフトウエア方式のブレークポイント処理を選択する。
【００４３】
換言するに、解析装置は、ハードウエア方式のブレークポイント処理が、過去に捕獲された回数が多いブレークポイントを監視するようにし、ソフトウエア方式のブレークポイント処理が、過去に捕獲された回数が少ないブレークポイントを監視するようにする。
【００４４】
このように、各ブレークポイントに対するブレークポイント処理の実施方式を選択することにより、捕獲される可能性が高いブレークポイントを、より高速なハードウエア方式のブレークポイント処理に割り当てることができる。また、それ以外のブレークポイントを、ソフトウエア方式のブレークポイント処理を用いて処理することができる。したがって、監視装置は、ブレークポイントの数が、ハードウエア方式のみでは監視できないほど多い場合であっても、より効率よくブレークポイント処理を行うことができる。
【００４５】
また、監視装置は、ブレークポイント処理の実施方式の選択を、過去のブレークポイント処理の処理結果を用いて行うので、処理対象のプログラムに応じて、より効率的にブレークポイント処理を行うことができるようにすることができる。つまり、監視装置は、どのようなプログラムに対しても、プログラム開発者の指示なしに、より効率的にブレークポイント処理を行うようにすることができる。
【００４６】
以上のように、監視装置は、各ブレークポイントに対するブレークポイント処理の実施方式の選択によって、ブレークポイント処理の効率化を実現する。したがって、監視装置は、ブレークポイント処理の処理時間を低減させることができる。
【００４７】
［１−２解析装置］
図１は、解析装置の主な構成例を示すブロック図である。
【００４８】
図１に示される解析装置１００は、所定の情報を処理する情報処理装置であり、例えば、ソースコードをコンパイルして得られるプログラムを実行させて解析する動的解析を行う。その際、解析装置１００は、ブレークポイント処理を、ハードウエア方式とソフトウエア方式の両方の方式で行う。
【００４９】
図１に示されるように、解析装置１００は、例えば、デバッガ１０１、ハードウエアブレークポイント処理部１０２、ソフトウエアブレークポイント処理部１０３、記憶部１０４、管理部１０５、およびコンパイラ１０６を有する。
【００５０】
デバッガ１０１は、ハードウエアブレークポイント処理部１０２やソフトウエアブレークポイント処理部１０３を制御して、記憶部１０４に記憶される情報（プログラム１２１やデータ１２２）に対するブレークポイント処理を実行させる。
【００５１】
デバッガ１０１は、動的解析を行うプログラムのブレークポイントを示す情報であるブレークポイント情報１１１を有する。ブレークポイント情報１１１は、アドレスなどブレークポイント機構（ハードウエアブレークポイント処理部１０２やソフトウエアブレークポイント処理部１０３）に設定する情報を含む。
【００５２】
デバッガ１０１は、そのブレークポイント情報１１１に示される各ブレークポイントを、ハードウエアブレークポイント処理部１０２若しくはソフトウエアブレークポイント処理部１０３に設定する（監視設定）。
【００５３】
例えば、デバッガ１０１は、ハードウエアブレークポイント処理部１０２にブレークポイントを設定し、そのブレークポイントを監視させる。ハードウエアブレークポイント処理部１０２は、設定されたブレークポイントに対して、ハードウエア方式でブレークポイント処理を行う。ハードウエアブレークポイント処理部１０２は、設定されたブレークポイントを監視し、所定のブレーク条件を満たした場合、プログラムの実行を停止する。なお、所定のブレーク条件を満たしたことを検出することを捕獲とも称する。そして、ハードウエアブレークポイント処理部１０２は、捕獲した旨をデバッガ１０１に通知する（捕獲通知）。
【００５４】
また、例えば、デバッガ１０１は、ソフトウエアブレークポイント処理部１０３にブレークポイントを設定し、そのブレークポイントを監視させる。ソフトウエアブレークポイント処理部１０３は、設定されたブレークポイントに対して、ソフトウエア方式でブレークポイント処理を行う。ソフトウエアブレークポイント処理部１０３は、設定されたブレークポイントを監視し、所定のブレーク条件を満たした場合、プログラムの実行を停止する。そして、ソフトウエアブレークポイント処理部１０３は、捕獲した旨をデバッガ１０１に通知する（捕獲通知）。
【００５５】
デバッガ１０１は、動的解析を行うプログラムの各ブレークポイントについて、過去の捕獲回数を用いた統計情報を、ブレーク統計情報１１２として管理している。ブレーク統計情報は、ブレークポイント処理の実施方式を決定するために参照される情報である。例えば、ブレーク統計情報は、各ブレークポイントとその捕獲回数を対応させるテーブルを含んでもよい。例えば、その捕獲回数に対して所定の重み付けが行われるようにしてもよい。また、ブレーク統計情報は、各ブレークポイントの捕獲回数を用いて算出される集計結果を含んでもよい。
【００５６】
デバッガ１０１は、捕獲通知を取得すると、その捕獲結果をブレーク統計情報１１２に反映させる。例えば、デバッガ１０１は、捕獲通知に従って、捕獲されたブレークポイントの捕獲回数を１増加させる。なお、ブレーク統計情報において、捕獲回数に重み付けが行われたり、所定の演算が行われたりする場合、デバッガ１０１は、それらの演算結果にも捕獲結果を反映させる。
【００５７】
デバッガ１０１は、上述したブレークポイントの割り当てを、このブレーク統計情報１１２に基づいて行う。例えば、デバッガ１０１は、各ブレークポイントをハードウエア方式のブレークポイント処理に割り当てるか、ソフトウエア方式のブレークポイント処理に割り当てるかを、過去の捕獲回数に基づいて行う。
【００５８】
例えば、捕獲回数上位の所定数のブレークポイントを、ハードウエア方式に割り当て（ハードウエアブレークポイント処理部１０２に設定し）、それより下位のブレークポイントを、ソフトウエア方式に割り当てる（ソフトウエアブレークポイント処理部１０３にブレークポイントを設定する）。
【００５９】
このようにすることにより、デバッガ１０１は、捕獲される可能性が高いブレークポイントを、より高速なハードウエア方式のブレークポイント処理に割り当てることができる。また、ソフトウエア方式のブレークポイント処理も併用することにより、デバッガ１０１は、より多くのブレークポイントを監視させることができる。したがって、デバッガ１０１は、より効率よくブレークポイント処理を実行させることができる。
【００６０】
なお、ブレーク統計情報（捕獲回数）の更新により、捕獲回数上位のブレークポイントが、下位のブレークポイントと入れ替わった場合、デバッガ１０１は、このブレークポイントの割り当ても更新する（設定切替）。
【００６１】
つまり、デバッガ１０１は、最新のブレーク統計情報（捕獲回数）に基づいて、ブレークポイントの割り当てを行うことができる。したがって、デバッガ１０１は、プログラムの実行状況等に応じて、より効率よくブレークポイント処理を実行させることができる。
【００６２】
なお、ブレークポイント情報やブレーク統計情報は、管理部１０５に格納されている（ブレークポイント情報１３１、ブレーク統計情報１３２）。デバッガ１０１は、動的解析を行うプログラムのブレークポイント情報１１１やブレーク統計情報１１２を、管理部１０５から取得する。また、それらの情報が更新された場合、デバッガ１０１は、更新されたブレークポイント情報１１１やブレーク統計情報１１２を管理部１０５に供給し、管理部１０５により管理されているそれらの情報を更新させる。
【００６３】
デバッガ１０１は、例えば、後述する制御部１５１に制御されて、上述したような処理を行う。例えば、デバッガ１０１は、制御部１５１により指定されたプログラムを動的解析の対象とし、上述した処理を行う。
【００６４】
動的解析の対象とされるプログラムは、記憶部１０４に記憶される（プログラム１２１）。なお、記憶部１０４には、そのプログラム１２１が実行されることにより生成されるデータ（例えば変数や出力データ等）も記憶される（データ１２２）。記憶部１０４に記憶されるプログラム１２１やデータ１２２は、ブレークポイント処理の監視対象とされる。
【００６５】
ハードウエアブレークポイント処理部１０２は、ブレークポイント処理を行うハードウエアを有しており、そのハードウエアを用いて、デバッガ１０１に指定された、記憶部１０４に記憶されているプログラム１２１を実行し、さらに、そのプログラム１２１やデータ１２２の、デバッガ１０１に設定されたブレークポイントを監視する。そして、所定のブレーク条件が満たされた場合、ハードウエアブレークポイント処理部１０２は、プログラムの実行を停止し、デバッガ１０１に捕獲通知を行う。
【００６６】
ソフトウエアブレークポイント処理部１０３は、ブレークポイント処理を実現するソフトウエアを有しており、そのソフトウエアを実行することができる。ソフトウエアブレークポイント処理部１０３は、そのソフトウエアを実行することにより、デバッガ１０１に指定された、記憶部１０４に記憶されているプログラム１２１を実行し、さらに、そのプログラム１２１やデータ１２２の、デバッガ１０１に設定されたブレークポイントを監視する。そして、所定のブレーク条件が満たされた場合、ソフトウエアブレークポイント処理部１０３は、プログラムの実行を停止し、デバッガ１０１に捕獲通知を行う。
【００６７】
ハードウエアブレークポイント処理部１０２は、ハードウエア方式でブレークポイント処理を行うため、ソフトウエアブレークポイント処理部１０３よりも高速にブレークポイント処理を行うことができる。これに対してソフトウエアブレークポイント処理部１０３は、ソフトウエア方式によりブレークポイント処理を行うため、ハードウエアブレークポイント処理部１０２よりも、多くのブレークポイントを監視することができる。
【００６８】
デバッガ１０１は、上述したように、捕獲される可能性の高いブレークポイントをハードウエア方式に集中させ、ハードウエア方式で対応できない残りのブレークポイントをソフトウエア方式で対応するようにする。つまり、デバッガ１０１は、ハードウエア方式とソフトウエア方式のそれぞれの特徴（長所）を活かすように、ブレークポイントの割り当てを行う。従って、デバッガ１０１は、より効率よくブレークポイント処理を実行させることができる。
【００６９】
管理部１０５は、解析装置１００が動的解析を行うことができる各プログラムについて、ブレークポイント情報とブレーク統計情報を記憶し、管理する（ブレークポイント情報１３１、ブレーク統計情報１３２）。
【００７０】
管理部１０５は、例えば、デバッガ１０１の要求に基づいて、管理しているブレークポイント情報１３１の中から、要求されたプログラムのブレークポイント情報をデバッガ１０１に供給する。また、管理部１０５は、例えば、デバッガ１０１の要求に基づいて、管理しているブレーク統計情報１３２の中から、要求されたプログラムのブレーク統計情報をデバッガ１０１に供給する。
【００７１】
また、管理部１０５は、例えば、デバッガ１０１から更新されたブレークポイント情報やブレーク統計情報を供給された場合、その更新内容を、管理しているブレークポイント情報１３１やブレーク統計情報１３２に反映させる。つまり、管理部１０５は、最新の情報を記憶する。
【００７２】
さらに、管理部１０５は、例えば、コンパイラ１０６の要求に基づいて、管理しているブレークポイント情報１３１の中から、要求されたプログラムのブレークポイント情報をコンパイラ１０６に供給する。また、管理部１０５は、例えば、コンパイラ１０６の要求に基づいて、管理しているブレーク統計情報１３２の中から、要求されたプログラムのブレーク統計情報をコンパイラ１０６に供給する。
【００７３】
コンパイラ１０６は、ソースコードをコンパイルしてプログラムを生成し、記憶部１０４に供給して記憶させる（プログラム１２１）。コンパイラ１０６は、例えば、制御部１５１の制御に従ってコンパイルを行う。例えば、コンパイラ１０６は、制御部１５１から供給されるソースコードをコンパイルする。
【００７４】
なお、コンパイラ１０６は、管理部１０５からブレークポイント情報やブレーク統計情報を取得し、それらの情報に基づいて、記憶部１０４におけるプログラム１２１（の各命令）やデータ１２２の配置を設定することができる。詳細については後述するが、このように、プログラム１２１やデータ１２２の配置を、ブレークポイントに応じて制御することにより、ブレークポイント処理の更なる高効率化が実現可能となる。
【００７５】
また、解析装置１００は、制御部１５１、入力部１６１、出力部１６２、記憶部１６３、通信部１６４、およびドライブ１６５を有する。
【００７６】
制御部１５１は、例えば、CPU（Central Processing Unit）、ROM（Read Only Memory）、およびRAM（Random Access Memory）等を有し、解析装置１００の各部（例えば、デバッガ１０１やコンパイラ１０６）を制御する。例えば、制御部１５１のCPUは、ROMに記憶されているプログラムに従って各種の処理を実行する。また、そのCPUは、記憶部１６３からRAMにロードされたプログラムに従って各種の処理を実行する。RAMにはまた、CPUが各種の処理を実行するにあたって必要なデータなども適宜記憶される。
【００７７】
入力部１６１は、例えば、キーボード、マウス、タッチパネル、および外部入力端子などよりなり、ユーザ指示や外部からの情報の入力を受け付け、制御部１５１に供給する。出力部１６２は、例えば、CRT（Cathode Ray Tube）ディスプレイやLCD（Liquid Crystal Display）等のディスプレイ、スピーカ、並びに外部出力端子などよりなり、制御部１５１から供給される各種情報を画像、音声、若しくは、アナログ信号やデジタルデータとして出力する。
【００７８】
記憶部１６３は、例えばフラッシュメモリ等SSD（Solid State Drive）やハードディスクなどよりなり、制御部１５１から供給される情報を記憶したり、制御部１５１からの要求に従って、記憶している情報を読み出して供給したりする。
【００７９】
通信部１６４は、例えば、有線LAN（Local Area Network）や無線LANのインタフェースやモデムなどよりなり、インターネットを含むネットワークを介して、外部の装置との通信処理を行う。例えば、通信部１６４は、制御部１５１から供給される情報を通信相手に送信したり、通信相手から受信した情報を制御部１５１に供給したりする。
【００８０】
ドライブ１６５は、必要に応じて制御部１５１に接続される。そして、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１７１がそのドライブ１６５に適宜装着される。そして、そのドライブ１６５を介してリムーバブルメディア１７１から読み出されたコンピュータプログラムが、必要に応じて記憶部１６３にインストールされる。
【００８１】
以上のように、解析装置１００は、ブレークポイント処理をより効率よく行うことができる。したがって、解析装置１００は、ブレークポイント処理の処理時間を低減させることができる。
【００８２】
なお、以上においては、ブレークポイント処理の実施方式として、ハードウエア方式とソフトウエア方式を用いるように説明したが、ブレークポイント処理の実施方式は、どのような方式であってもよい。デバッガ１０１が、ブレーク統計情報に基づいて、各方式の特徴に応じたブレークポイントの割り当てを行えばよい。
【００８３】
また、ブレークポイント処理の実施方式の数は任意である。以上においては２方式の場合について説明したが、３方式以上であってもよい。その場合、デバッガ１０１は、所定の優先順序に従って、各ブレークポイントを各方式に割り当てるか、各ブレークポイントに各方式に対する優先度を持たせて各ブレークポイント同士の優先順序を計算して割り当てるようにしても良い。
【００８４】
なお、デバッガ１０１は、プログラム開発者が操作するプログラムであってもよいし、オペレーティングシステムに組み込まれる機能であってもよい。またハードウエアに接続して対象システムの動作監視などを行う、ハードウエア機器であっても良い。
【００８５】
また、ブレーク統計情報の内容は任意であるが、例えば、ブレークポイントで捕獲された回数、タイミング、頻度、以前の実行時の学習データ、ソースコードから静的に予測された情報などを含むようにしてもよい。またはハードウエアが持つキャッシュなどの付加情報を含むようにしてもよい。
【００８６】
［１−３具体的動作例］
次に、以上のような解析装置１００の具体的な動作例を説明する。図２乃至図４を参照して、ブレークポイントの設定の様子を説明する。あるプログラムのアドレスＡ乃至アドレスＥに対してブレークポイントを設定する例を説明する。
【００８７】
デバッガ１０１が、初期状態またはある時点で図２に示される状態のブレーク統計情報２０１を有するとする。図２に示されるように、ブレーク統計情報２０１においては、各アドレスの捕獲回数が示されている。
【００８８】
図２の状態において、捕獲回数上位２つのアドレス（アドレスＣとアドレスＥ）のブレークポイントが、ハードウエアブレークポイント処理部１０２に設定され（ハードウエアブレークポイント２０２）ている。また、捕獲回数３位以下の３つのアドレス（アドレスＢ、アドレスＡ、およびアドレスＤ）のブレークポイントがソフトウエアブレークポイント処理部１０３に設定されている（ソフトウエアブレークポイント２０３）。
【００８９】
ここでアドレスＢのブレークポイントにおいてブレークしたとする。デバッガ１０１は、図３に示されるように、統計情報のうちアドレスＢに対するブレークポイントの捕獲回数を１増やす。これによりアドレスＢのブレークポイントの捕獲回数は１２０回から１２１回に更新される。
【００９０】
この後、アドレスＢのブレークポイントで更に３回ブレークしたとすると、ブレーク統計情報２０１は、図４に示される状態になる。つまり、アドレスＢのブレークポイントの捕獲回数が１２４回になる。したがって、アドレスＢのブレークポイントの捕獲回数は、アドレスＥのブレークポイントの捕獲回数（１２３回）を抜き、順位が変わる（捕獲回数第２位となる）。
【００９１】
したがって、デバッガ１０１は、アドレスＥのブレークポイントに対するブレークポイントの実施方式を、ハードウエア方式からソフトウエア方式に変更する。またアドレスＢのブレークポイントに対するブレークポイントの実施方式を、ソフトウエア方式からハードウエア方式に変更する。
【００９２】
つまり、デバッガ１０１は、捕獲回数上位（２位以内）に入った、ソフトウエアブレークポイント処理部１０３に設定されているアドレスＢのブレークポイントを、ハードウエアブレークポイント処理部１０２に設定する。また、デバッガ１０１は、捕獲回数上位（２位以内）から外れた、ハードウエアブレークポイント処理部１０２に設定されているアドレスＥのブレークポイントを、ソフトウエアブレークポイント処理部１０３に設定する。
【００９３】
このように、デバッガ１０１は、より捕獲回数が多いブレークポイントをハードウエア方式に割り当てることができる。これにより、解析装置１００は、ブレークポイント処理をより効率よく行うことができる。
【００９４】
なお、解析装置１００は、ブレークポイント処理の効率をさらに向上させるために、監視対象の、記憶部１０４における配置を制御（若しくは変更）することができる。
【００９５】
例えば、従来の方式によるデータの配置（若しくは配置変更前の状態）が、図５に示される例であるとする。図５おいては、記憶部１０４のメモリ２５４の番地００乃至番地０４に、データＡ乃至データＥがそれぞれ格納されている。これらのうち、データＡ、データＤ、およびデータＥをソフトウエア方式およびハードウエア方式のウォッチポイントで監視するとする。
【００９６】
ソフトウエア方式のブレークポイント処理では、特定アドレス単体の監視ができず、ブロックサイズで範囲監視となる。つまり、ソフトウエアブレークポイント処理部１０３において、ソフトウエアウォッチポイント２５３は、図５に示される例のように範囲で指定される。したがって、本来監視の必要のないデータＢやデータＣも監視対象とされてしまう。
【００９７】
また、ハードウエア方式のブレークポイント処理の場合、アドレス毎の監視が可能である。図５に示される例の場合、ハードウエアブレークポイント処理部１０２において、ハードウエアウォッチポイント２５２は、各ウォッチポイントをアドレス毎に指定している。つまり、データＡ、データＤ、およびデータＥを監視するのに３つのウォッチポイントが用いられている。
【００９８】
そこで、解析装置１００は、図６に示されるように、メモリ２５４の監視対象のデータを集め、監視対象外のデータと違うブロックに配置するようにする。このようにメモリ２５４における各データ配置を制御すると、ソフトウエアウォッチポイント２５３は、図６に示される例のように設定される。つまり、ブロックサイズ単位でしか監視ができないソフトウエア方式において、２つのウォッチポイントにより、データＡ、データＤ、およびデータＥを監視することができる。また、本来監視の必要のないデータＢおよびデータＣを監視対象から外すことができる。
【００９９】
また、このようにメモリ２５４における各データ配置を制御すると、ハードウエアウォッチポイント２５２は、図６に示される例のように設定される。つまり、ハードウエア方式においても、範囲指定を活用することができ、２つのウォッチポイントにより、データＡ、データＤ、およびデータＥを監視することができる。つまり、解析装置１００は、使用するウォッチポイントの数を低減させることができ、数が限られていて貴重なハードウエアウォッチポイントをより有効に活用することができる。
【０１００】
つまり、コンパイラ１０６が、ソースコードのコンパイルを行う際に、管理部１０５から取得したブレークポイント情報やブレーク統計情報に基づいて、各データの配置を、上述のように制御する。なお、コンパイラ１０６は、既にコンパイルされたソースコードを、各データの配置を上述のように制御するように再度コンパイルすることにより、各データの配置を変更（更新）することもできる。
【０１０１】
［１−４処理の流れ］
次に、解析装置１００により実行される各処理について説明する。
【０１０２】
（１）解析処理
図７のフローチャートを参照して、解析装置１００により実行される解析処理の流れの例を説明する。解析装置１００は、動的解析を行う場合、この解析処理を実行する。
【０１０３】
例えば、ユーザや他の装置等に、動的解析処理の実行が指示されると、制御部１５１は、解析処理を開始し、その指示において指定されたプログラムをデバッガ１０１に通知する。
【０１０４】
デバッガ１０１は、ステップＳ１０１において、指定されたプログラムのブレークポイント情報を管理部１０５から取得する。
【０１０５】
ステップＳ１０２において、デバッガ１０１は、指定されたプログラムのブレーク統計情報を管理部１０５から取得する。
【０１０６】
ステップＳ１０３において、デバッガ１０１は、取得したブレークポイント情報およびブレーク統計情報に基づいて、各ブレークポイントの監視方法（例えば、ブレークポイント処理の実施方式をハードウエア方式にするかソフトウエア方式にするか）を決定する。
【０１０７】
ステップＳ１０４において、デバッガ１０１は、その監視方法の決定に従って、各ブレークポイントを設定する。例えば、デバッガ１０１は、各ブレークポイントを、図２乃至図４を参照して説明したように、ハードウエアブレークポイント処理部１０２若しくはソフトウエアブレークポイント処理部１０３に設定する。
【０１０８】
ステップＳ１０５において、デバッガ１０１は、ハードウエアブレークポイント処理部１０２およびソフトウエアブレークポイント処理部１０３にプログラムを実行させ、それぞれに設定されたブレークポイントを監視させる。
【０１０９】
ステップＳ１０６において、デバッガ１０１は、ハードウエアブレークポイント処理部１０２若しくはソフトウエアブレークポイント処理部１０３からの捕獲通知に基づいて、ブレークしたか否かを判定する。ブレークしていないと判定された場合、処理はステップＳ１０７に進む。
【０１１０】
ステップＳ１０７において、デバッガ１０１は、プログラムの実行が最後まで行われ、終了したか否かを判定する。終了していないと判定された場合、処理はステップＳ１０６に戻る。
【０１１１】
また、ステップＳ１０７において、終了したと判定された場合、処理はステップＳ１１０に進む。
【０１１２】
また、ステップＳ１０６において、ブレークしたと判定された場合、処理は、ステップＳ１０８に進む。
【０１１３】
ステップＳ１０８において、デバッガ１０１は、一般的なデバッグ処理を行う。例えば、デバッガ１０１は、制御部１５１を介して、プログラム開発者への通知や、開発者が予め指定した処理などを行う。もちろん、それ以外の処理が行われても良い。
【０１１４】
ステップＳ１０９において、デバッガ１０１は、上述したようにブレーク統計情報等に基づいてブレークポイントの設定を制御するブレークポイント制御処理を行う。ブレークポイント制御処理が終了すると、処理はステップＳ１０７に戻る。
【０１１５】
ステップＳ１１０において、デバッガ１０１は、ブレーク統計情報が更新された場合、その更新されたブレーク統計情報を管理部１０５に供給し、記憶させる。
【０１１６】
ステップＳ１１０の処理が終了すると解析処理が終了する。
【０１１７】
（２）ブレークポイント制御処理
次に、図８のフローチャートを参照して、図７のステップＳ１０９において実行されるブレークポイント制御処理の流れの例を説明する。
【０１１８】
ブレークポイント制御処理が開始されると、デバッガ１０１は、ステップＳ１３１において、捕獲通知に基づいてブレーク統計情報を更新する。
【０１１９】
ステップＳ１３２において、デバッガ１０１は、ブレーク統計情報の上位（すなわち、ハードウエアブレークポイント処理部１０２に設定するブレークポイント）が変化したか否かを判定する。変化したと判定された場合、処理はステップＳ１３３に進む。
【０１２０】
ステップＳ１３３において、デバッガ１０１は、ブレーク統計情報の更新結果に従って、各ブレークポイントの監視方式（ブレークポイント処理の実施方式）の設定を行う。
【０１２１】
ステップＳ１３３の処理が終了すると、処理は、図７に戻る。また、ステップＳ１３２において、ブレーク統計情報の上位が変化していないと判定された場合、処理は、図７に戻る。
【０１２２】
（３）監視方式設定処理
次に、図９のフローチャートを参照して、図８のステップＳ１３３において実行される監視方式設定処理の流れの例を説明する。
【０１２３】
監視方式設定処理が開始されると、デバッガ１０１は、ステップＳ１５１において、ブレーク統計情報の上位から外れたブレークポイントをハードウエア方式から外す。ステップＳ１５２において、デバッガ１０１は、そのブレーク統計情報の上位から外れたブレークポイントをソフトウエア方式に設定する。
【０１２４】
つまり、デバッガ１０１は、ブレーク統計情報の上位から外れたブレークポイントの設定先を、ハードウエアブレークポイント処理部１０２からソフトウエアブレークポイント処理部１０３に変更する。
【０１２５】
ステップＳ１５３において、デバッガ１０１は、ブレーク統計情報の上位に入ったブレークポイントをハードウエア方式に設定する。ステップＳ１５４において、デバッガ１０１は、ブレーク統計情報の上位に入ったブレークポイントをソフトウエア方式から外す。
【０１２６】
つまり、デバッガ１０１は、ブレーク統計情報の上位に入ったブレークポイントの設定先を、ソフトウエアブレークポイント処理部１０３からハードウエアブレークポイント処理部１０２に変更する。
【０１２７】
ステップＳ１５４の処理が終了すると、処理は、図８に戻る。
【０１２８】
以上のように各処理を実行することにより、解析装置１００は、ブレークポイント処理をより効率よく行うことができる。したがって、解析装置１００は、ブレークポイント処理の処理時間を低減させることができる。
【０１２９】
（４）プログラム生成処理
次に、図１０のフローチャートを参照して、解析装置１００により実行されるプログラム生成処理の流れの例を説明する。解析装置１００は、ソースコードをコンパイルする場合、このプログラム生成処理を実行する。
【０１３０】
例えば、ユーザや他の装置等に、コンパイルが指示されると、制御部１５１は、プログラム生成処理を開始し、その指示において指定されたソースコードをコンパイラ１０６に提供する。
【０１３１】
コンパイラ１０６は、ステップＳ１７１において、制御部１５１から供給されるソースコードを取得する。
【０１３２】
ステップＳ１７２において、コンパイラ１０６は、管理部１０５からブレークポイント情報やブレーク統計情報を取得する。
【０１３３】
ステップＳ１７３において、コンパイラ１０６は、ステップＳ１７１において取得したソースコードをコンパイルし、プログラムを生成する。
【０１３４】
ステップＳ１７４において、コンパイラ１０６は、ブレークポイント情報に基づいて、ステップＳ１７３において生成したプログラムの、監視対象の配置を設定する。
【０１３５】
ステップＳ１７４の処理が終了すると、プログラム生成処理が終了する。
【０１３６】
以上のようにプログラムを生成することにより、解析装置１００は、ブレークポイント処理をより効率よく行うことができる。したがって、解析装置１００は、ブレークポイント処理の処理時間を低減させることができる。
【０１３７】
例えば、解析装置１００は、ブレークの頻度が高いブレークポイントを、ハードウエア方式等、オーバーヘッドの小さい方式に設定し、その他をソフトウエア方式等、潤沢に使える方式に自動的に切り替えながら設定する。したがって、解析装置１００は、数に限りがあるハードウエア方式等を効率的に使用し、かつソフトウエア方式等、オーバーヘッドが大きい方式を使用しつつもオーバーヘッドを低減させることができる。
【０１３８】
また、解析装置１００は、ブレーク統計情報を基に、どの方式を使用するかを自動的に設定する。したがって、ユーザが効率を考えて手動で設定する必要が無くなる。
【０１３９】
また、解析装置１００は、監視対象の配置を適切に変えることで、ブレークポイントを効率的に使用することができる。範囲指定が可能な方式であれば、使用できる数に限りがある中で、使用数を削減することができる。ブロック単位でしか指定ができない方式であれば、本来捕獲不要な条件での捕獲が減り、オーバーヘッドを低減することができる。
【０１４０】
＜２．第２の実施の形態＞
［コンピュータ］
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
【０１４１】
図１１は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０１４２】
図１１に示されるコンピュータ５００において、CPU（Central Processing Unit）５０１、ROM（Read Only Memory）５０２、RAM（Random Access Memory）５０３は、バス５０４を介して相互に接続されている。
【０１４３】
バス５０４にはまた、入出力インタフェース５１０も接続されている。入出力インタフェース５１０には、入力部５１１、出力部５１２、記憶部５１３、通信部５１４、およびドライブ５１５が接続されている。
【０１４４】
入力部５１１は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部５１２は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部５１３は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部５１４は、例えば、ネットワークインタフェースよりなる。ドライブ５１５は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア５２１を駆動する。
【０１４５】
以上のように構成されるコンピュータでは、CPU５０１が、例えば、記憶部５１３に記憶されているプログラムを、入出力インタフェース５１０およびバス５０４を解して、RAM５０３にロードして実行することにより、上述した一連の処理が行われる。RAM５０３にはまた、CPU５０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０１４６】
コンピュータ（CPU５０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア５２１に記録して適用することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０１４７】
コンピュータでは、プログラムは、リムーバブルメディア５２１をドライブ５１５に装着することにより、入出力インタフェース５１０を介して、記憶部５１３にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部５１４で受信し、記憶部５１３にインストールすることができる。その他、プログラムは、ROM５０２や記憶部５１３に、あらかじめインストールしておくことができる。
【０１４８】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１４９】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１５０】
また、本明細書において、システムとは、複数の構成要素（装置、モジュール（部品）等）の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、１つの筐体の中に複数のモジュールが収納されている１つの装置は、いずれも、システムである。
【０１５１】
また、以上において、１つの装置（または処理部）として説明した構成を分割し、複数の装置（または処理部）として構成するようにしてもよい。逆に、以上において複数の装置（または処理部）として説明した構成をまとめて１つの装置（または処理部）として構成されるようにしてもよい。また、各装置（または各処理部）の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置（または処理部）の構成の一部を他の装置（または他の処理部）の構成に含めるようにしてもよい。
【０１５２】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１５３】
例えば、本技術は、１つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０１５４】
また、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０１５５】
さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０１５６】
なお、本技術は以下のような構成も取ることができる。
（１）  プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理を、互いに異なる実施方式で行う複数のブレークポイント処理部と、
各ブレークポイントを監視するブレークポイント処理部を、前記ブレークポイント処理の結果に関する情報に基づいて、前記複数のブレークポイント処理部の中から選択する選択部と
を備え、
前記複数のブレークポイント処理部は、それぞれ、前記選択部により自身が選択されたブレークポイントを監視する
情報処理装置。
（２）  前記複数のブレークポイント処理部は、
第１の方式により前記ブレークポイント処理を行う第１のブレークポイント処理部と、
前記第１の方式と監視可能ブレークポイント数および処理時間の異なる第２の方式により前記ブレークポイント処理を行う第２のブレークポイント処理部と
を含む前記（１）に記載の情報処理装置。
（３）  前記複数のブレークポイント処理部は、前記第１の方式よりも多くのブレークポイントを監視することができ、かつ、前記第１の方式よりも処理時間が長い第２の方式により前記ブレークポイント処理を行う
前記（２）に記載の情報処理装置。
（４）  前記第１の方式は、前記ブレークポイント処理を行うハードウエアを利用する方式であり、
前記第２の方式は、前記ブレークポイント処理を実現するソフトウエアを利用する方式である
前記（３）に記載の情報処理装置。
（５）  前記ブレークポイント処理の結果に関する情報は、前記ブレークポイント処理における、各ブレークポイントの捕獲回数に関する統計情報である
前記（１）乃至（４）のいずれかに記載の情報処理装置。
（６）  前記選択部は、
前記統計情報の上位のブレークポイントに対して、第１の方式により前記ブレークポイント処理を行う第１のブレークポイント処理部を選択し、
前記統計情報の上位のブレークポイント以外のブレークポイントに対して、前記第１の方式よりも多くのブレークポイントを監視することができ、かつ、前記第１の方式よりも処理時間が長い第２の方式により前記ブレークポイント処理を行う第２のブレークポイント処理部を選択する
前記（５）のいずれかに記載の情報処理装置。
（７）  前記選択部は、前記ブレークポイント処理の結果、前記統計情報の上位のブレークポイントが変化した場合、次のブレークポイント処理に対して、
前記統計情報の上位から外れたブレークポイントを監視するブレークポイント処理部を、前記第１のブレークポイント処理部から前記第２のブレークポイント処理部に変更し、
前記統計情報の上位に入ったブレークポイントを監視するブレークポイント処理部を、前記第２のブレークポイント処理部から前記第１のブレークポイント処理部に変更する
前記（６）に記載の情報処理装置。
（８）  前記第１の方式は、前記ブレークポイント処理を行うハードウエアを利用する方式であり、
前記第２の方式は、前記ブレークポイント処理を実現するソフトウエアを利用する方式である
前記（６）または（７）に記載の情報処理装置。
（９）  前記選択部による前記ブレークポイント処理部の選択に応じて、前記ブレークポイントの配置を設定する設定部をさらに備える
前記（１）乃至（８）のいずれかに記載の情報処理装置。
（１０）  前記ブレークポイントは、データへのアクセスを捕獲するウォッチポイントと、命令の実行を捕獲するブレークポイントとを含む
前記（１）乃至（９）のいずれかに記載の情報処理装置。
（１１）  情報処理装置の情報処理方法であって、
前記情報処理装置が、
プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理が行われるプログラムについて、前記プログラムの各ブレークポイントに対する前記ブレークポイント処理の実施方式を、前記ブレークポイント処理の結果に関する情報に基づいて、互いに異なる複数の実施方式の中から選択し、
各ブレークポイントに対する前記ブレークポイント処理を、選択した実施方式により行う
情報処理方法。
（１２）  コンピュータを、
プログラムのブレークポイントを監視し、前記プログラムの実行を停止するブレークポイント処理が行われるプログラムについて、前記プログラムの各ブレークポイントに対する前記ブレークポイント処理の実施方式を、前記ブレークポイント処理の結果に関する情報に基づいて、互いに異なる複数の実施方式の中から選択する選択部と、
各ブレークポイントに対する前記ブレークポイント処理を、前記選択部により選択された実施方式により行うブレークポイント処理部と
して機能させるためのプログラム。
【符号の説明】
【０１５７】
１００  解析装置，  １０１  デバッガ，  １０２  ハードウエアブレークポイント処理部，  １０３  ソフトウエアブレークポイント処理部，  １０４  記憶部，  １０５  管理部，  １０６  コンパイラ，  １１１  ブレークポイント情報，  １１２  ブレーク統計情報，  １２１  プログラム，  １２２  データ，  １３１  ブレークポイント情報，  １３２  ブレーク統計情報，  １５１  制御部，  １６１  入力部，  １６２  出力部，  １６３  記憶部，  １６４  通信部，  １６５  ドライブ，  １７１  リムーバブルメディア
【図１】
2013206061.tif 000003
【図２】
2013206061.tif 000004
【図３】
2013206061.tif 000005
【図４】
2013206061.tif 000006
【図５】
2013206061.tif 000007
【図６】
2013206061.tif 000008
【図７】
2013206061.tif 000009
【図８】
2013206061.tif 000010
【図９】
2013206061.tif 000011
【図１０】
2013206061.tif 000012
【図１１】
2013206061.tif 000013