JP2011070256A - デバッガおよびプログラム - Google Patents
デバッガおよびプログラム Download PDFInfo
- Publication number
- JP2011070256A JP2011070256A JP2009218565A JP2009218565A JP2011070256A JP 2011070256 A JP2011070256 A JP 2011070256A JP 2009218565 A JP2009218565 A JP 2009218565A JP 2009218565 A JP2009218565 A JP 2009218565A JP 2011070256 A JP2011070256 A JP 2011070256A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- parallel
- breakpoints
- program
- breakpoint
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
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
【課題】並列プログラムの汎用なデバッグツールを提供する。
【解決手段】複数の実行ユニットと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、Graphcal User Interface(GUI)により外部から指定されるブレークポイントの集合を設定するブレークポイント集合設定手段を有することを特徴とするデバッガ。
【選択図】 図9
【解決手段】複数の実行ユニットと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、Graphcal User Interface(GUI)により外部から指定されるブレークポイントの集合を設定するブレークポイント集合設定手段を有することを特徴とするデバッガ。
【選択図】 図9
Description
本発明は、並列プログラムのデバッグツールに関する。
近年、マイクロコンピュータ等においても、処理効率向上のため、マルチタスクOS(OperatingSystem)による処理が実現されている。ここで、タスクとは、一般にOS内の制御プログラムにより処理される1つの実行単位をいい、従って、マルチタスク環境とは、複数のアプリケーションを並行して稼働させるために、かかるタスクを複数並行して処理可能な環境であり、一般に、CPUを時分割で複数タスクに割り当て占有させることにより実現される。
ここで、かかるマルチタスク環境で稼働するアプリケーションソフトウエアが、所定の動作仕様、機能仕様を満たすまで、その動作を検証、確認を繰り返し行う必要があるが、かかる稼働確認および仕様を満たさない場合の、不具合の分析、修正を行うためのツールが、デバッガである。すなわち、デバッガとは、デバッグ対象となるプログラムをコンピュータ上にロードし、実行および停止、変数お内容参照、変更などの基本的操作を行うプログラムである。これらのことはマルチプロセッサでの並列処理にも当てはまる。
デバッガは、一般に、以下の手順で用いられる。すなわち、デバッガを起動させた後に、その下で、ターゲットとなるプログラムを実行させる。その際には、プログラム中の特定のアドレスにブレークポイントと呼ばれる停止点を予め設定しておく。かかるブレークポイントにさしかかった場合には、プログラムの実行が停止し、ユーザーに制御が戻るので、その停止点におけるメモリ上の所定の変数の値の確認を行ったり、レジスタの内容の確認等が行え、動作確認および不具合の解析やこれに基づくプログラムコードの修正が可能となるのである。かかるブレークポイント機能は、従って、デバッガにおけるもっとも基本的な機能である。そして、ブレークポイントの設定及び解除は、デバッグ作業には不可避である。
ここで、マルチタスク環境のデバッグとしては、各タスクごとに独立して稼働確認を行うことが必要となる。従って、デバッガに求められる要件は次の点である。即ち、複数タスクが同時に実行されることから、デバッグも各タスク毎に独立して行えることが必要となる。すなわち、タスクごとに独立したブレークポイントが設定できることが求められるのである。
しかしながら従来、マルチスレッドで動作する並列プログラムをデバッガ上で、ブレークポイントを設定して実行するとき、一つのスレッドがブレークポイントで止まると、他のスレッドも同時に止まり、実行を再開すると、すべてのスレッドが再開するため、複数のスレッドそれぞれを特定のブレークポイントで同時に実行中断させる手段がなかった。また、複数のブレークポイントを効率よく設定する手段がなかった。また、停止し複数のスレッドに対して、注目ポイント以外を停止させたままにして、特定のタスクのみの実行を継続させて動作の詳細を調べる手段がなかった。
対して、特許文献1に記載の技術においては、上記の内で複数のスレッドそれぞれを特定のブレークポイントで同時に実行中断させる手段が工夫されているが、上記の諸所の従来問題に対応する汎用な技術は開示されていなかった。
本発明は、並列プログラムの汎用なデバッグツールを提供することを目的とする。
上記課題を解決するために、本発明のデバッガは、複数の実行ユニットと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、Graphcal User Interface(GUI)により外部から指定されるブレークポイントの集合を設定するブレークポイント集合設定手段を有することを特徴とする。
本発明によれば、並列プログラムの汎用なデバッグツールが得られる。
本発明による実施形態を図1乃至図17を参照して説明する。
まず図17に、従来よりの一般的なプログラミングモデルを示す。従来のスレッド実行方式では、スレッドとして実行する各モジュールのプログラムのいたるところに、同期処理を埋め込むことによって、スレッド間でのデータをやり取りしたり、排他制御して、協調動作するようにしていた。これに対して、本実施形態では、以下に説明していくようにプログラムを直列に同期なしで実行する基本モジュールと、並列動作を定義する並列動作定義部に分割し、同期やデータの授受の必要のある部分は、並列動作定義部で行うことによって、基本モジュールの部品化を促進し、かつ、並列動作定義部をコンパクトに管理できるようにする。
まず図17に、従来よりの一般的なプログラミングモデルを示す。従来のスレッド実行方式では、スレッドとして実行する各モジュールのプログラムのいたるところに、同期処理を埋め込むことによって、スレッド間でのデータをやり取りしたり、排他制御して、協調動作するようにしていた。これに対して、本実施形態では、以下に説明していくようにプログラムを直列に同期なしで実行する基本モジュールと、並列動作を定義する並列動作定義部に分割し、同期やデータの授受の必要のある部分は、並列動作定義部で行うことによって、基本モジュールの部品化を促進し、かつ、並列動作定義部をコンパクトに管理できるようにする。
本発明の実施の形態を以下に図面を参照して説明する。
図1は、本実施形態に係わる情報処理装置のシステム構成の一例を示す図である。この情報処理装置は、ノートブックタイプやデスクトップタイプ等のいわゆるパーソナルコンピュータとして実現されている。そして、図1に示すように、本コンピュータは、プロセッサ1、主メモリ2およびハードディスク駆動装置(HDD)3を有しており、これらは内部バスを介して相互に接続されている。なお、開発する並列ソフトのターゲットデバイスとしては、PCのみでなく、デジタルTVやDVR、携帯などの組み込み分野でも利用される。
図1は、本実施形態に係わる情報処理装置のシステム構成の一例を示す図である。この情報処理装置は、ノートブックタイプやデスクトップタイプ等のいわゆるパーソナルコンピュータとして実現されている。そして、図1に示すように、本コンピュータは、プロセッサ1、主メモリ2およびハードディスク駆動装置(HDD)3を有しており、これらは内部バスを介して相互に接続されている。なお、開発する並列ソフトのターゲットデバイスとしては、PCのみでなく、デジタルTVやDVR、携帯などの組み込み分野でも利用される。
プロセッサ1は、コンピュータ等の情報処理装置から読み取り可能な記憶媒体であるHDD3から主メモリにロードされたプログラムを実行制御する中央演算処理装置(CPU)であり、主要部の演算回路(CPUコア)であるコア11を複数内蔵している。このコア11が言わば実行ユニットである。
主メモリ2は、プロセッサ1がアクセス可能な、例えば半導体で構成される記憶装置である。一方、HDD3は、本コンピュータにおける補助記憶としての役割を担う、(主メモリ2と比較して)低速大容量の記憶媒体である。
また、図示していないが、プロセッサ1によるプログラムの処理結果等を表示するためのディスプレイや処理データ等を入力するためのキーボードなどの入出力装置が、例えばノートブックタイプの場合はさらに備えられ、また、例えばデスクトップタイプの場合はケーブル等により外部接続される。
コア11を複数内蔵するプロセッサ1を搭載する本コンピュータは、複数のプログラムを並列実行することが可能であり、また、1つのプログラム中の複数の処理を並列実行することも可能である。ここで、図2を参照して、本コンピュータによって実行される並行処理仕様のプログラムの概略構成について説明する。
図2に示すように、本コンピュータによって実行される並行処理仕様の実行プログラム100は、複数の直列基本モジュール101と、この複数の直列基本モジュール101をどのような順序で実行すべきかを定義する並列実行制御記述102とから構成される。
いわゆるマルチスレッド処理では、一般的に、図17に示すように、他のスレッドとの間で(通信を含む)同期を取りながら、即ち、プログラム全体の整合性を保ちながら、各スレッドが処理を進行させていく。よって、同期の待ち合わせが多発すると、期待した並列性能が得られないことが考えられる。
そこで、本実施形態では、図3に示すように、他のモジュールとの同期を取る必要がない、非同期に実行可能な処理単位にプログラムを分割することで、複数の直列基本モジュール101を作成すると共に、この複数の直列基本モジュール101の時系列的な実行規則を定義する並列実行制御記述102を作成する。並列実行制御上、各直列基本モジュール101は、ノードとして表現される。このように、直列基本モジュールとは、他のモジュールと並列記述が表現する半順序の実行順序を守りながら実行可能な処理単位のモジュールをいう。半順序の実行順序がないノード同士は非同期に並列実行される。
図4に、本発明による並列プログラムの実行環境を示す。並列動作定義部はコンパイラによって実行環境が利用するデータ構造(バイトコードであっても良い)に変換される。実行環境は、このデータ構造を基にして、基本モジュール(タスク)を頂点(ノード)とし、データ依存関係を辺とするグラフ構造(タスクグラフという)を動的に生成する。実行環境は、タスクグラフが示す半順序関係に従って、タスクをプロセッサに割り当てて並列処理を遂行する。この図4の例のプロセッサではコア11を16個持つ構成となっている。
次に、図5を参照して、並列実行制御記述102について説明する。
図5(A)は、ある直列基本モジュール101を表現したノードの概念図である。図示のように、各直列基本モジュール101は、先行ノードへのリンクと、後続ノードへの結合子とを有するノードとして捉えることができる。並列実行制御記述102は、各直列基本モジュール101それぞれについて、先行ノードへのリンク情報を記すことにより、複数の直列基本モジュール101の実行順序を定義する。図5(B)は、ある直列基本モジュール101に関する並列実行制御記述を例示する図であり、図示のように、それぞれの識別子である直列基本モジュールIDと、その直列基本モジュール101の先行ノードへのリンク情報とが記される。また、その他に、出力バッファタイプや生成するデータサイズの情報が併せて記される。
図5(A)は、ある直列基本モジュール101を表現したノードの概念図である。図示のように、各直列基本モジュール101は、先行ノードへのリンクと、後続ノードへの結合子とを有するノードとして捉えることができる。並列実行制御記述102は、各直列基本モジュール101それぞれについて、先行ノードへのリンク情報を記すことにより、複数の直列基本モジュール101の実行順序を定義する。図5(B)は、ある直列基本モジュール101に関する並列実行制御記述を例示する図であり、図示のように、それぞれの識別子である直列基本モジュールIDと、その直列基本モジュール101の先行ノードへのリンク情報とが記される。また、その他に、出力バッファタイプや生成するデータサイズの情報が併せて記される。
続いて、この複数の直列基本モジュール101と並列実行制御記述102とから構成されるという構成をもつ実行プログラム100を本コンピュータがどのように実行するのかについて説明する。
このような構成をもつ実行プログラム100を並列処理するために、本コンピュータでは、ランタイム処理の実行環境として例えば図6に示すランタイムライブラリ200が用意される。ランタイムライブラリ200はコンピュータ情報処理装置から読み取り可能な記憶媒体であるHDD3に格納される。ハードディスクドライブ3から主メモリにロードされたランタイムライブラリ200は、プロセッサ1によって実行される。このランタイムライブラリ200は、スケジューラとしての機能を備えており、並列実行制御記述102がグラフデータ構造生成情報201として与えられる。並列実行制御記述102は、例えば関数型言語を用いて作成され、トランスレータによってグラフデータ構造生成情報201に変換される。
何らかのデータ入力が行われると、このデータを処理するための直列基本モジュール101をいくつか実行する必要が生じるが、その都度、ランタイムライブラリ200は、グラフデータ構造生成情報201に基づき、複数のノードとノード間を接続するエッジによって示すグラフデータ構造202を動的に生成・更新していく。グラフデータ構造202は、その時々で適宜に実行されていくノード群の前後関係を示すグラフデータであり、ランタイムライブラリ200は、追加対象のノード間での前後関係は勿論、実行待ちの状態にあるノードとの間の前後関係も考慮して、それらノード群のグラフデータ構造202への追加を行っていく。
また、ランタイムライブラリ200は、あるノードの実行が完了すると、このノードをグラフデータ構造202から削除すると共に、このノードを先行ノードとし、かつ、その他に先行ノードがないか、または、その他の先行ノードがすべて完了している後続ノードの有無を調べて、この条件を満たす後続ノードが存在したら、そのノードをいずれかのコア11に割り当てる。
このランタイムライブラリ200の働きにより、並列実行制御記述102に基づく複数の直列基本モジュール101の並列実行が矛盾無く進められていく。また、このランタイムライブラリ200は、プロセッサ1が内蔵するコア11の数よりも多くの数のスレッドによって実行する(マルチスレッド)。この結果、図7および図8に示すように、各コア11(各コア11のOS300配下の1スレッドであるランタイムライブラリ200)があたかも自律的に次に実行すべき直列基本モジュール101を見つけ出してくるかのごとく本コンピュータを動作させることができる。スレッド間の排他制御は、ランタイムライブラリ200による、グラフデータ構造202からのノードの選択と、当該グラフデータ構造の更新とのみに止まるので、図17に示した一般的なマルチスレッド処理と比較して、高い並列性能を得ることを実現する。
図7および図8に、並列実行環境による基本モジュールの並列動作のシーケンスを示す。あるコアがタスクの実行を完了して実行環境を呼び出すと、実行環境はタスクの実行完了によってタスクグラフをアップデートし、実行可能となるタスクを、実行可能キューに追加する。実行可能キューにタスクが登録されていれば、そこから一つ取り出して、コア上で実行を開始する。すると、次のコアが実行環境を呼び出して、実行可能なタスクを選択する。実行可能なタスクが存在しない場合は、並列動作定義に従って生成されたデータ構造を元に、タスクグラフに新規タスクを登録する処理を実行可能なタスクが見つかるまで行う。メモリサイズなどのリソースリミットに到達するまで実行可能なタスクが見つからない場合は、先行して実行しているプログラムの完了を待つ。
図7には、コア11が4つの場合を示している。4つのコア中のコア(2)11がランタイムライブラリ200を実行し、ランタイムライブラリ200が複数の基本モジュール101の中から基本モジュールを呼び出すさまを模式的に示している。
また、図8において、五角形の図形はランタイムライブラリ200を示し、太い矢印線は基本モジュールを示している。太い矢印線の長さは基本モジュールの実行時間を示している。
図8に示すように、実行環境の処理時間は、タスクの実行時間と比較して十分小さいので、実行環境がコア間で継続的に実行されても、充分な並列性を得ることが出来る。プログラムの階層構造を利用すると実行環境の動作そのものを並列に実行することが可能である。
このランタイムライブラリ200の働きにより、並列実行制御記述102に基づく複数の直列基本モジュール101の並列実行が矛盾無く進められていく。また、このランタイムライブラリ200は、プロセッサ1が内蔵するコア11の数よりも多くの数のスレッドによって実行する(マルチスレッド)。この結果、図7および図8に示すように、各コア11(各コア11のOS300配下の1スレッドであるランタイムライブラリ200)があたかも自律的に次に実行すべき直列基本モジュール101を見つけ出してくるかのごとく本コンピュータを動作させることができる。スレッド間の排他制御は、ランタイムライブラリ200による、グラフデータ構造202からのノードの選択と、当該グラフデータ構造の更新とのみに止まるので、図17に示した一般的なマルチスレッド処理と比較して、高い並列性能を得ることを実現する。
図9に、本発明における並列プログラムのデバッグツール画面を示す。デバッグ画面上では、時間順序として上部から下部へと実際に実行するべきタスクグラフが表示されている。このタスクグラフに対してポインタデバイスCによって線で囲うことにより複数のブレークポイントを同時に設定する(ブレークポイントの集合を指定)ことを特徴とする。GUI(Graphcal User Interface)ツールは、ブレークポイントが設定されると、このユーザーのアクションを受けとり、ブレークポイントの情報を保持する。
図13にGUIツールとデバッガ、並列実行環境とアプリケーションの関係を示す。GUIツールGからデバッガD上で並列実行環境Jが起動されると並列実行環境Jの入り口で、break命令を実行してプログラムを中断する。GUIツールGはデバッガDのコマンドを使って、並列実行環境JのAPIを呼び出し、設定されたブレークポイント情報を並列実行環境Jに伝える。並列実行環境Jは、受け取ったブレークポイント情報を内部で保持する。
ブレークポイントの設定が終わると、GUIツールは、デバッガでプログラムの実行を継続させ、実行環境の動作に制御を戻す。実行環境は図14に示すように、実行可能になったタスクを実行可能キューに登録するときに、ブレークポイントが設定されているかどうかをチェックし、ブレークポイントが設定されていれば、実行可能キューには登録せずに、ペンディングキューへタスクを登録する。ブレークポイントが設定されたタスクすべてがペンディングキューに登録されると、実行環境は、break_point関数を呼び、この関数のエントリに設定されているブレーク命令を実行して、デバッガに制御を移す(図10)。
図14(a)のブレークポイントの設定処理では、GUIフロントエンドでブレークポイント条件を取得し(ステップS51)、ブレークポイントの数だけ実行環境のブレークポイント設定APIを呼び出してブレークポイントを設定する(ステップS52)。図14(b)の実行環境のブレークポイントの設定APIでは、APIよりブレークポイント設定モジュールAと条件を取得し(ステップS53)、実行環境が管理する実行モジュールAの情報にブレークポイント情報を登録する(ステップS54)。
また図14(c)の実行環境における並列処理時のブレークでは、まず新たに実行可能となったノードを取得できたか判定する(ステップS55)。ここでノードを取得できたと判定された場合は次のステップS56へ進み、他方ノードを取得できなかったと判定された場合はステップS58へと進む。ステップS56では、ステップS55で取得できたノードがブレークポイントが設定されたノードか否かを判定し、noと判定された場合は次のステップS57へ進み、他方yesと判定された場合はステップS60へと進む。ステップS57では、ノードを実行可能キューに追加してステップS55へと戻る。
ステップS58では、実行可能キューが空でないか判定し空の場合はステップS62へ進みbreak_point()関数を呼ぶことによりこのフローの処理を終了する。またステップS58で実行可能キューが空でないと判定された場合はステップS59へ進み当該ノードを実行してこのとき、図8でランタイムの動作について説明したように、マルチコア(プロセッサ)の環境では、当該ノードを実行しているプロセッサコアとは別のコアがステップS55へと戻る。あとステップS60においてはノードをペンディングキューに追加し、次のステップ61へ進みすべてのブレークポイントがペンディングキューに入ったか判定しyesならばステップS62へ進みnoならばステップS55へ戻る。
次にユーザーが、並列ステップボタンを押すと、GUIツールは、並列実行環境のAPIを呼び出して、現在のブレークポイントが設定されているタスクに隣接する次に実行するタスクにブレークポイントを設定し、さらに並列ステップモードであることを実行環境に伝え、プログラムを継続させる。break_point関数から戻った実行環境は、並列ステップモードであるので、ペンディングキューに登録されたすべてのタスクをデキューして、実行可能キューに登録した後、デバッガ上での実行を再開する。この動作によって、最初にブレークポイントが設定されていたすべてのタスクの実行を、ほぼ同時にスタートさせることが出来る(図11)。
図12に、特定のタスクを矢印Aで指定して、直列ステップ実行する場合の動作を示す。この場合は、並列ステップのときとは異なり、指定されたタスクのみをペンディングキューから実行可能キューへ移す。
図15にブレークポイントの管理方法を示す。GUIツールと並列実行環境は、複数のブレークポイントの集合を、複数管理するためのブレークポイント情報(タスクIDの集合)を持つ。並列ブレークポイント設定時、GUIツールでは、複数のブレークポイントの集合間で、競合がないことを確認する。競合がある場合は、ブレークポイント設定不可能というメッセージを出力して設定指示を受け付けない。また、競合が無い場合でも、図15に示すようにブレークポイントPとQを設定した後に、同図の中のAを含むブレークポイントRを設定しようとすると、ブレークポイントRは、ブレークポイントQからのパスがないので、ブレークポイントQより先にAに到達する可能性があることを、ユーザーに知らせる。このように、ブレークポイントセット間での前後関係が明確に定まらないケースについて、デバッグ作業者に、それぞれのブレークポイントセットに含まれるノード間での前後関係をビジュアルに表示することで、プログラム全体の並列動作の順序関係にたいする洞察を与えることが可能となる。
図16に、並列ブレークポイントの選択をサポートするための画面表示例を示す。図9とは異なり、この場合は、並列ブレークポイントを1つずつ選ぶときのGUI操作である。選択済みのノードをハイライト(図面上では斜線)で示し、選択済みのノード集合の先行ノードと後続ノードはオフカラーで表示し、現並列ブレークポイントになりうる候補を強調表示(図面上では格子表現)する。ノードAの先行ノードとは、矢印BをたどってノードAへ到達するパスがあるノードの集合であり、ノードAの後続ノードとは、ノードAから矢印Bをたどって到達するパスがあるノードの集合である。このように並列ブレークポイント指定時に、ノードの候補をわかりやすく表示することによって、どのノードとノードが並列動作可能か(即ち、並列ブレークポイントとなるか)を認識することが容易になる。
本実施形態により、並列プログラムのデバッグ効率を大幅に改善することが出来る。
本実施形態は、マルチスレッドで動作する並列プログラムに対して、複数のブレークポイントを効率よく設定する方法を提供する。また、デバッグ対象プログラムの実行において、複数のブレークポイントで同時に実行中断させることが可能である。さらに、ブレークポイントで停止している複数のスレッドを同時に実行再開させることが可能であるので、複数のモジュールが同時に動作する場合のプログラム検査が容易となる。また、ブレークポイントで停止している複数のスレッドに対して、注目ポイント以外の実行を中断したままにしておいて、注目ポイントのみをステップ実行させることが可能であり、並列プログラムのデバッグ効率向上に寄与する。実施形態の要点をまとめると次のようである。
本実施形態は、マルチスレッドで動作する並列プログラムに対して、複数のブレークポイントを効率よく設定する方法を提供する。また、デバッグ対象プログラムの実行において、複数のブレークポイントで同時に実行中断させることが可能である。さらに、ブレークポイントで停止している複数のスレッドを同時に実行再開させることが可能であるので、複数のモジュールが同時に動作する場合のプログラム検査が容易となる。また、ブレークポイントで停止している複数のスレッドに対して、注目ポイント以外の実行を中断したままにしておいて、注目ポイントのみをステップ実行させることが可能であり、並列プログラムのデバッグ効率向上に寄与する。実施形態の要点をまとめると次のようである。
(1)並列プログラムのブレークポイントの設定を、GUIを使って効率よく行う。
(2)ランタイムライブラリの下に複数のスレッドそれぞれを、設定した複数のブレークポインで同時に停止させることができる。
(3)指定した複数のブレークポイントで止まっているスレッドを、同時に実行開始することができる。
(4)GUI画面から、実行したいモジュールを特定し、そのモジュールのみ実行する手段を提供する。
(5)複数のブレークポイントの集合を複数セット管理しGUIからのブレークポイント設定を補助する。
なお、この発明は上記実施形態に限定されるものではなく、この外その要旨を逸脱しない範囲で種々変形して実施することができる。例えば上記実施形態では、特定のビジュアル表現のみを記載したが、本質的に同じ動作で、別のビジュアル表現にすることも可能であり、デバッガ上での動作が同じであれば、本発明の変形とみなせる。
(2)ランタイムライブラリの下に複数のスレッドそれぞれを、設定した複数のブレークポインで同時に停止させることができる。
(3)指定した複数のブレークポイントで止まっているスレッドを、同時に実行開始することができる。
(4)GUI画面から、実行したいモジュールを特定し、そのモジュールのみ実行する手段を提供する。
(5)複数のブレークポイントの集合を複数セット管理しGUIからのブレークポイント設定を補助する。
なお、この発明は上記実施形態に限定されるものではなく、この外その要旨を逸脱しない範囲で種々変形して実施することができる。例えば上記実施形態では、特定のビジュアル表現のみを記載したが、本質的に同じ動作で、別のビジュアル表現にすることも可能であり、デバッガ上での動作が同じであれば、本発明の変形とみなせる。
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係る構成要素を適宜組み合わせても良いものである。
1…プロセッサ,2…主メモリ,3…ハードディスク駆動装置(HDD),11…コア,100…実行プログラム,101…直列基本モジュール,102…並列実行制御記述,200…ランタイムライブラリ,201…グラフデータ構造生成情報,202…グラフデータ構造。
Claims (7)
- 複数の実行ユニットと、
他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
を具備し、
前記スケジューラは、
Graphcal User Interface(GUI)により外部から指定されるブレークポイントの集合を設定するブレークポイント集合設定手段
を有することを特徴とするデバッガ。 - 複数の実行ユニットと、
他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
を具備し、
前記スケジューラは、
Graphcal User Interface(GUI)により外部から指定されるブレークポイントの集合を設定するブレークポイント集合設定手段と、
前記ブレークポイントの情報を保持する保持手段
を有することを特徴とするデバッガ。 - 前記スケジューラは、複数のスレッドそれぞれを、設定した複数の前記ブレークポイントで同時に停止させるよう働くことを特徴とする請求項1に記載のデバッガ。
- 前記スケジューラは、指定された複数の前記ブレークポイントで停止している複数のスレッドを同時に実行開始させるよう働くことを特徴とする請求項1に記載のデバッガ。
- 前記スケジューラは、前記GUIで指定された一つの前記基本モジュールを他の前記複数の基本モジュールとは排他的に実行させるよう働くことを特徴とする請求項1に記載のデバッガ。
- 前記スケジューラは、指定された複数の前記ブレークポイントを複数セット管理しこの複数のブレークポイントの集合間の競合またはこの複数のブレークポイントに関連するノード間での前後関係をユーザーに通知するよう働くことを特徴とする請求項1に記載のデバッガ。
- 複数の実行ユニットと、
他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するデバッガを、
Graphcal User Interface(GUI)により外部から指定されるブレークポイントの集合を設定するブレークポイント集合設定手段
として機能させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009218565A JP2011070256A (ja) | 2009-09-24 | 2009-09-24 | デバッガおよびプログラム |
US12/877,707 US20110072309A1 (en) | 2009-09-24 | 2010-09-08 | Debugger for Multicore System |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009218565A JP2011070256A (ja) | 2009-09-24 | 2009-09-24 | デバッガおよびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011070256A true JP2011070256A (ja) | 2011-04-07 |
Family
ID=43757664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009218565A Pending JP2011070256A (ja) | 2009-09-24 | 2009-09-24 | デバッガおよびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110072309A1 (ja) |
JP (1) | JP2011070256A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016105281A (ja) * | 2015-12-04 | 2016-06-09 | 株式会社日立製作所 | 解析システム、計算機システム及び解析方法 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677186B2 (en) * | 2010-12-15 | 2014-03-18 | Microsoft Corporation | Debugging in data parallel computations |
US8997066B2 (en) | 2010-12-27 | 2015-03-31 | Microsoft Technology Licensing, Llc | Emulating pointers |
US8661413B2 (en) * | 2011-04-13 | 2014-02-25 | International Business Machines Corporation | Impact indication of thread-specific events in a non-stop debugging environment |
CN102789413B (zh) * | 2011-05-23 | 2016-02-17 | 同济大学 | 一种并行程序的调试系统及方法 |
US8539458B2 (en) | 2011-06-10 | 2013-09-17 | Microsoft Corporation | Transforming addressing alignment during code generation |
US8677322B2 (en) | 2011-06-29 | 2014-03-18 | Microsoft Corporation | Debugging in a multiple address space environment |
US20130176218A1 (en) * | 2012-01-10 | 2013-07-11 | Cywee Group Limited | Pointing Device, Operating Method Thereof and Relative Multimedia Interactive System |
US8990781B2 (en) * | 2012-06-04 | 2015-03-24 | International Business Machines Corporation | Synchronization point visualization for modified program source code |
US9304880B2 (en) | 2013-03-15 | 2016-04-05 | Freescale Semiconductor, Inc. | System and method for multicore processing |
JP5843801B2 (ja) * | 2013-03-19 | 2016-01-13 | 株式会社東芝 | 情報処理装置およびデバッグ方法 |
US20140189650A1 (en) * | 2013-05-21 | 2014-07-03 | Concurix Corporation | Setting Breakpoints Using an Interactive Graph Representing an Application |
US8990777B2 (en) | 2013-05-21 | 2015-03-24 | Concurix Corporation | Interactive graph for navigating and monitoring execution of application code |
US9734040B2 (en) | 2013-05-21 | 2017-08-15 | Microsoft Technology Licensing, Llc | Animated highlights in a graph representing an application |
US9280841B2 (en) | 2013-07-24 | 2016-03-08 | Microsoft Technology Licensing, Llc | Event chain visualization of performance data |
US9292415B2 (en) | 2013-09-04 | 2016-03-22 | Microsoft Technology Licensing, Llc | Module specific tracing in a shared module environment |
CN105765560B (zh) | 2013-11-13 | 2019-11-05 | 微软技术许可有限责任公司 | 基于多次跟踪执行的软件组件推荐 |
CN105446933B (zh) * | 2014-09-26 | 2018-04-24 | 扬智科技股份有限公司 | 多核心处理器的调试系统与调试方法 |
US9404970B2 (en) * | 2014-11-14 | 2016-08-02 | Cavium, Inc. | Debug interface for multiple CPU cores |
US10409560B1 (en) * | 2015-11-18 | 2019-09-10 | Amazon Technologies, Inc. | Acceleration techniques for graph analysis programs |
US10025564B2 (en) * | 2015-11-25 | 2018-07-17 | International Business Machines Corporation | Intuitive frames of task appropriate frames of reference for multiple dimensions of context for related sets of objects within an IDE |
US10558553B2 (en) * | 2016-11-30 | 2020-02-11 | International Business Machines Corporation | Enabling non-blocking runtime application debugging for a single threaded server environment |
US10268558B2 (en) | 2017-01-13 | 2019-04-23 | Microsoft Technology Licensing, Llc | Efficient breakpoint detection via caches |
US10169196B2 (en) * | 2017-03-20 | 2019-01-01 | Microsoft Technology Licensing, Llc | Enabling breakpoints on entire data structures |
US10740220B2 (en) | 2018-06-27 | 2020-08-11 | Microsoft Technology Licensing, Llc | Cache-based trace replay breakpoints using reserved tag field bits |
GB2580428B (en) | 2019-01-11 | 2021-08-25 | Graphcore Ltd | Handling exceptions in a machine learning processor |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03244040A (ja) * | 1990-02-21 | 1991-10-30 | Nec Corp | 並列走行型デバグ方式 |
JPH11338733A (ja) * | 1998-02-27 | 1999-12-10 | Toshiba Corp | デバッグ装置及び記録媒体 |
JP2001034503A (ja) * | 1999-07-21 | 2001-02-09 | Oki Electric Ind Co Ltd | ブレークポイント設定方法及び障害解析装置 |
JP2001142743A (ja) * | 1999-11-17 | 2001-05-25 | Fujitsu Ltd | 並列デバッガ、並列プロセスのデバッグシステム及びその方法、及び記録媒体 |
JP2003162426A (ja) * | 2001-11-28 | 2003-06-06 | Hitachi Ltd | 複数cpuの協調デバッグ回路を備えるコンピュータシステム及びデバッグ方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3571976B2 (ja) * | 1999-11-08 | 2004-09-29 | 富士通株式会社 | デバッグ装置及び方法並びにプログラム記録媒体 |
-
2009
- 2009-09-24 JP JP2009218565A patent/JP2011070256A/ja active Pending
-
2010
- 2010-09-08 US US12/877,707 patent/US20110072309A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03244040A (ja) * | 1990-02-21 | 1991-10-30 | Nec Corp | 並列走行型デバグ方式 |
JPH11338733A (ja) * | 1998-02-27 | 1999-12-10 | Toshiba Corp | デバッグ装置及び記録媒体 |
JP2001034503A (ja) * | 1999-07-21 | 2001-02-09 | Oki Electric Ind Co Ltd | ブレークポイント設定方法及び障害解析装置 |
JP2001142743A (ja) * | 1999-11-17 | 2001-05-25 | Fujitsu Ltd | 並列デバッガ、並列プロセスのデバッグシステム及びその方法、及び記録媒体 |
JP2003162426A (ja) * | 2001-11-28 | 2003-06-06 | Hitachi Ltd | 複数cpuの協調デバッグ回路を備えるコンピュータシステム及びデバッグ方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016105281A (ja) * | 2015-12-04 | 2016-06-09 | 株式会社日立製作所 | 解析システム、計算機システム及び解析方法 |
Also Published As
Publication number | Publication date |
---|---|
US20110072309A1 (en) | 2011-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011070256A (ja) | デバッガおよびプログラム | |
JP4621786B2 (ja) | 情報処理装置、並列処理最適化方法およびプログラム | |
US9430353B2 (en) | Analysis and visualization of concurrent thread execution on processor cores | |
JP4712877B2 (ja) | 並列プロセッサのためのタスクマネージャ | |
CN113535367B (zh) | 任务调度方法及相关装置 | |
US8869163B2 (en) | Integrated environment for execution monitoring and profiling of applications running on multi-processor system-on-chip | |
US20190196881A1 (en) | Deterministic parallelization through atomic task computation | |
JP4381459B1 (ja) | 情報処理装置、粒度調整方法およびプログラム | |
JP2010009495A (ja) | 情報処理装置、プログラム処理方法及びコンピュータプログラム | |
CN109308213B (zh) | 基于改进任务调度机制的多任务断点调试方法 | |
US20120102469A1 (en) | Deterministic application breakpoint halting by logically relating breakpoints in a graph | |
JP2008158759A (ja) | プログラミング方法、プログラム処理方法、処理プログラム及び情報処理装置 | |
US8561032B2 (en) | Visualizing thread life time in eclipse | |
US9117020B2 (en) | Determining control flow divergence due to variable value difference | |
CN111666210A (zh) | 一种芯片验证方法及装置 | |
JP2014102734A (ja) | 性能検証プログラム、性能検証方法及び性能検証装置 | |
EP4099161A1 (en) | Multi-core processor, multi-core processor processing method and related device | |
JP2012103923A (ja) | コンパイラ装置、コンパイル方法及びコンパイラプログラム | |
US11748108B2 (en) | Instruction executing method and apparatus, electronic device, and computer-readable storage medium | |
TWI455030B (zh) | 決定程式任務之平行度的方法與計算裝置及其機器可讀取媒體 | |
JP2015038646A (ja) | 情報処理装置及び情報処理方法 | |
JP4997144B2 (ja) | マルチタスク処理装置およびその方法 | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
CN116483545B (zh) | 一种多任务执行方法、装置以及设备 | |
de Almeida et al. | Microkernel development for embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110308 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110509 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110607 |