(57)【要約】【課題】マルチスレッドで実行する場合であっても実行時のハードウェアの実行環境を再現することなく容易にプログラムの実行状況を確認する。【解決手段】プログラムを複数のスレッドで実行するプログラム実行部１１と、ユーザによって指定された収集範囲に含まれる命令文の実行状況情報を収集する情報収集部１２と、収集された実行状況情報をシーケンステーブルおよび変数テーブルに登録する登録部１３と、ユーザによってシーケンス名が指定された場合にこのシーケンス名を用いてシーケンステーブルおよび変数テーブルに記憶されている実行状況情報を取得する取得部１４と、取得された実行状況情報を用いて特定の命令文およびこの命令文で用いられる変数の内容を強調表示させてディスプレイ３０に表示させる表示制御部１５と、を備える。【選択図】図１
2011107937.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを複数のスレッドで実行する実行手段と、
ユーザによって指定された収集範囲に含まれる前記プログラムの命令文について、少なくとも、前記実行手段によって実行されている前記命令文を特定する実行文特定情報と当該命令文に記述されている変数の内容を含む変数情報とを有する実行状況情報を収集する収集手段と、
前記収集手段によって収集された前記実行状況情報を、前記収集範囲を特定する範囲特定情報に対応付けて記憶部に登録する登録手段と、
ユーザによって、いずれかの前記範囲特定情報が指定された場合に、当該指定された前記範囲特定情報に対応して前記記憶部に登録されている前記実行状況情報を取得する取得手段と、
前記取得手段によって取得された前記実行状況情報を用いて、少なくとも、前記収集範囲に含まれる前記命令文および当該命令文における前記変数の内容を、当該命令文ごとにそれぞれ対応付けて表示部に表示させる表示手段と、
を備えることを特徴とする実行状況確認装置。
【請求項２】
前記表示手段は、一の前記命令文および当該一の前記命令文における前記変数の内容を、他の表示情報と識別可能な状態で表示部に表示させることを特徴とする請求項１記載の実行状況確認装置。
【請求項３】
前記表示手段は、他の表示情報と識別可能な状態で表示されている前記命令文とは異なる前記命令文が指定された場合に、当該指定された前記命令文および当該指定された前記命令文における前記変数の内容を、他の表示情報と識別可能な状態で表示させることを特徴とする請求項２記載の実行状況確認装置。
【請求項４】
他の表示情報と識別可能な状態で表示されている前記変数の内容が変更された場合に、当該変更された前記変数の内容を用いて、他の表示情報と識別可能な状態で表示されている前記命令文以降に処理される命令文を順次実行する仮想実行手段と、
前記仮想実行手段によって命令文が実行されているときに、当該命令文の実行結果を用いて、前記記憶部に記憶される前記実行状況情報を更新する更新手段と、
をさらに備えることを特徴とする請求項２または３記載の実行状況確認装置。
【請求項５】
前記実行状況情報には、前記命令文の実行時間に関する実行時間情報がさらに含まれ、
前記表示手段は、一の前記命令文と、当該一の前記命令文における前記変数の内容と、当該一の前記命令文の実行時間とを、他の表示情報と識別可能な状態で表示部に表示させ、
前記仮想実行手段は、他の表示情報と識別可能な状態で表示されている前記実行時間が変更された場合に、当該変更された前記実行時間を用いて、他の表示情報と識別可能な状態で表示されている前記命令文以降に処理される命令文を順次実行する、
ことを特徴とする請求項４記載の実行状況確認装置。
【請求項６】
プログラムを複数のスレッドで実行する実行ステップと、
ユーザによって指定された収集範囲に含まれる前記プログラムの命令文について、少なくとも、前記実行ステップにおいて実行されている前記命令文を特定する実行文特定情報と当該命令文に記述されている変数の内容を含む変数情報を有する実行状況情報を収集する収集ステップと、
前記収集ステップにおいて収集された前記実行状況情報を、前記収集範囲を特定する範囲特定情報に対応付けて記憶部に登録する記憶ステップと、
ユーザによって、いずれかの前記範囲特定情報が指定された場合に、当該指定された前記範囲特定情報に対応して前記記憶部に登録されている前記実行状況情報を取得する取得ステップと、
前記取得ステップにおいて取得された前記実行状況情報を用いて、少なくとも、前記収集範囲に含まれる前記命令文および当該命令文における前記変数の内容を、当該命令文ごとにそれぞれ対応付けて表示部に表示させる表示ステップと、
を含むことを特徴とする実行状況確認方法。
【請求項７】
請求項６に記載の各ステップをコンピュータに実行させるための実行状況確認プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行状況確認装置、実行状況確認方法および実行状況確認プログラムに関する。
【背景技術】
【０００２】
コンピュータ処理を効率的に実行するための技術として、マルチスレッドがある。マルチスレッドは、プログラムの処理を複数のスレッドで並行して実行する技術である。マルチスレッドのプログラムを実行した場合には、複数のスレッドで並行してデータが更新されることとなる。したがって、マルチスレッドのプログラムをデバッグする場合には、通常のシングルスレッドのプログラムをデバッグするよりもデバッグ作業に手間を要する。下記特許文献１および特許文献２には、マルチスレッドのプログラムのデバッグ作業を効率良く行うためのデバッグ技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−１２２８８２号公報
【特許文献２】特開平１１−３３８７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記特許文献１および特許文献２に記載されているデバッグ技術は、マルチスレッドのプログラムを実際に実行しながらデバッグするものである。ここで、マルチスレッドでは複数の処理を並行して実行するため、例えばＣＰＵの稼働状況等のハードウェアの実行環境によって各スレッドにおける進行状況が変動し、スレッド間の処理の実行タイミングが想定を超えてずれてしまうことがある。このずれによってエラーが発生した場合には、エラーの原因を検証するために、エラー発生時のハードウェアの実行環境を再現し、エラー発生時と同様の実行タイミングでプログラムを実行させる必要がある。しかしながら、エラー発生時と同様のハードウェアの実行環境を再現するには困難を要する。
【０００５】
本発明は、上述した課題を解決するためになされたものであり、マルチスレッドで実行する場合であっても、実行時のハードウェアの実行環境を再現することなく容易にプログラムの実行状況を確認することができる実行状況確認装置、実行状況確認方法および実行状況確認プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の実行状況確認装置は、プログラムを複数のスレッドで実行する実行手段と、ユーザによって指定された収集範囲に含まれるプログラムの命令文について、少なくとも、実行手段によって実行されている命令文を特定する実行文特定情報と当該命令文に記述されている変数の内容を含む変数情報を有する実行状況情報を収集する収集手段と、収集手段によって収集された実行状況情報を、収集範囲を特定する範囲特定情報に対応付けて記憶部に登録する登録手段と、ユーザによって、いずれかの範囲特定情報が指定された場合に、当該指定された範囲特定情報に対応して記憶部に登録されている実行状況情報を取得する取得手段と、取得手段によって取得された実行状況情報を用いて、少なくとも、収集範囲に含まれる命令文および当該命令文における変数の内容を、当該命令文ごとにそれぞれ対応付けて表示部に表示させる表示手段と、を備える。
【０００７】
本発明の実行状況確認方法は、プログラムを複数のスレッドで実行する実行ステップと、ユーザによって指定された収集範囲に含まれるプログラムの命令文について、少なくとも、実行ステップにおいて実行されている命令文を特定する実行文特定情報と当該命令文に記述されている変数の内容を含む変数情報を有する実行状況情報を収集する収集ステップと、収集ステップにおいて収集された実行状況情報を、収集範囲を特定する範囲特定情報に対応付けて記憶部に登録する記憶ステップと、ユーザによって、いずれかの範囲特定情報が指定された場合に、当該指定された範囲特定情報に対応して記憶部に登録されている実行状況情報を取得する取得ステップと、取得ステップにおいて取得された実行状況情報を用いて、少なくとも、収集範囲に含まれる命令文および当該命令文における変数の内容を、当該命令文ごとにそれぞれ対応付けて表示部に表示させる表示ステップと、を含む。
【０００８】
本発明の実行状況確認プログラムは、上記実行状況確認方法に含まれる各ステップをコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、マルチスレッドで実行する場合であっても、実行時のハードウェアの実行環境を再現することなく容易にプログラムの実行状況を確認することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態における実行状況確認装置の機能構成を例示するブロック図である。
【図２】シーケンステーブルのデータ構成を例示する図である。
【図３】変数テーブルのデータ構成を例示する図である。
【図４】表示画面の一例を示す図である。
【図５】実行状況情報を登録する際の処理手順を例示するフローチャートである。
【図６】実行状況情報を表示する際の処理手順を例示するフローチャートである。
【図７】実行状況情報を更新する際の処理手順を例示するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して、本発明に係る実行状況確認装置、実行状況確認方法および実行状況確認プログラムの好適な実施形態について説明する。実行状況確認装置は、マルチスレッドプログラムの実行状況に関する情報（以下、「実行状況情報」という。）を収集して記憶し、この記憶した実行状況情報をユーザの呼び出しに応じて表示させる点に特徴がある。これにより、マルチスレッドプログラムを動作させることなく、マルチスレッドプログラムの実行状況を再現させている。なお、マルチスレッドプログラムとは、マルチスレッドで処理を実行するように記述されたプログラムをいう。
【００１２】
図１を参照して、実施形態における実行状況確認装置の機能構成について説明する。実行状況確認装置１は、プログラム実行部（実行手段）１１と、情報収集部（収集手段）１２と、登録部（登録手段）１３と、取得部（取得手段）１４と、表示制御部（表示手段）１５と、仮想実行部（仮想実行手段）１６と、更新部（更新手段）１７と、を有する。
【００１３】
ここで、実行状況確認装置１は、物理的には、例えば、ＣＰＵ（Central Processing Unit）と、記憶装置（記憶部）と、入力装置と、表示装置（表示部）とを含んで構成される。これらの要素は、互いにバスを介して接続されている。記憶装置には、例えば、ＣＰＵで処理されるプログラムやデータを記憶するＲＯＭ（Read Only Memory）やＨＤＤ（Hard Disk Drive）、主として制御処理のための各種作業領域として使用されるＲＡＭ（Random Access Memory）等が含まれる。本実施形態における記憶装置２０には、例えば、図２に示すシーケンステーブルと、図３に示す変数テーブルとが格納される。ＣＰＵは、ＲＯＭに記憶されたプログラムを実行し、入力装置から入力された各種の指令等に従ってＲＡＭに展開された各種のデータを処理する。ＣＰＵは、その処理結果を表示装置に表示させる。これにより、以下に記載する実行状況確認装置１における各部の機能を実現することができる。
【００１４】
プログラム実行部１１は、マルチスレッドプログラムを実行する。マルチスレッドプログラムは、例えばインタプリタ言語で記述することができる。なお、実行状況確認装置１は、従来と同様に、マルチスレッドプログラムをマルチスレッドで処理可能なＯＳ等の動作環境を有する。
【００１５】
情報収集部１２は、プログラム実行部１１によってマルチスレッドプログラムが実行されているときに、ユーザによって指定された収集範囲（後述）に含まれる命令文の実行状況情報を収集する。収集範囲は、マルチスレッドプログラムに含まれる命令文のうち、実行状況情報を収集する命令文の範囲であり、ユーザにより指定することができる。この収集範囲は、複数設定することができる。ユーザは、収集範囲を指定する際に、この収集範囲を一意に特定するためのシーケンス名（範囲特定情報）を指定する。
【００１６】
登録部１３は、情報収集部１２によって収集された実行状況情報をシーケンステーブルおよび変数テーブルに登録する。実行状況情報には、例えば、実行文情報と変数情報とが含まれる。実行文情報は、プログラム実行部１１によって実行されている命令文（以下、「実行文」という。）に関する情報であり、シーケンステーブルに格納される。変数情報は、実行文に記述されている変数に関する情報であり、変数テーブルに格納される。図２および図３を参照して、シーケンステーブルおよび変数テーブルのデータ構成について説明する。
【００１７】
図２は、シーケンステーブルのデータ構成図である。シーケンステーブルは、収集範囲に含まれる命令文ごとに一のレコード（以下、「シーケンスレコード」という。）を格納する。シーケンスレコードは、データ項目として、例えば、識別ＩＤ、シーケンス名、プログラム名、行番号、スレッドＩＤおよび実行時間を有する。識別ＩＤ、シーケンス名、プログラム名および行番号が、プログラム実行部１１によって実行されている命令文を特定する実行文特定情報となる。
【００１８】
図２に示す識別ＩＤには、シーケンスレコードを一意に特定するためのＩＤが格納される。識別ＩＤは、登録部１３によってシーケンスレコードが生成されるときに付与される。シーケンス名には、実行文を含む収集範囲を一意に特定する名称が格納される。シーケンス名には、上述したように、ユーザによって収集範囲とともに指定されるシーケンス名が格納される。プログラム名には、実行文を含む一連のプログラムを一意に特定する名称が格納される。行番号には、実行文が記述されているプログラムの行番号が格納される。行番号は、プログラム単位に付与される。スレッドＩＤには、実行文を実行したスレッドを一意に特定するＩＤが格納される。実行時間には、実行文を実行するのに要した時間が格納される。
【００１９】
図３は、変数テーブルのデータ構成図である。変数テーブルは、収集範囲に含まれる命令文に記述されている変数ごとに一のレコード（以下、「変数レコード」という。）を格納する。変数レコードは、データ項目として、例えば、変数ＩＤ、識別ＩＤ、変数名および変数値を有する。変数ＩＤには、変数レコードを一意に特定するためのＩＤが格納される。変数ＩＤは、登録部１３によって変数レコードが生成されるときに付与される。識別ＩＤには、対応するシーケンスレコードを一意に特定するためのＩＤが格納される。この識別ＩＤによって、変数レコードとシーケンスレコードとが対応づけられる。変数名には、実行文に記述されている変数名が格納される。変数値には、変数名にセットされている内容が格納される。変数には、スレッド内でのみ有効なローカル変数と、実行中のプログラムで共有されるグローバル変数とがある。
【００２０】
なお、実行状況情報を記憶するテーブルは、シーケンステーブルおよび変数テーブルには限定されない。実行状況情報を、一つのテーブルに登録することとしてもよいし、三つ以上のテーブルに登録することとしてもよい。
【００２１】
取得部１４は、ユーザの操作指示によって、特定のシーケンス名が指定され、実行状況情報の表示指令が出された場合に、指定されたシーケンス名を用いてシーケンステーブルおよび変数テーブルから実行状況情報である実行文特定情報および変数情報を取得する。
【００２２】
取得部１４の機能を具体的に説明する。取得部１４は、シーケンス名をキーにして、シーケンステーブルからシーケンスレコードを抽出する。取得部１４は、抽出した一または複数のシーケンスレコードに含まれる識別ＩＤをキーにして、変数テーブルから変数レコードを抽出する。これにより、実行文特定情報および変数情報を取得することができる。
【００２３】
表示制御部１５は、取得部１４によって取得された実行文特定情報および変数情報を用いて、この実行文特定情報によって特定される命令文と、この命令文に記述されている変数の内容とをディスプレイ３０に表示させる。
【００２４】
図４に表示画面の一例を示す。図４に示す表示画面上には、変数ビュウＶＶと、コードビュウＣＶとが表示される。変数ビュウＶＶには、取得部１４によって取得された変数情報に含まれる変数の内容が表示される。コードビュウＣＶには、取得部１４によって取得された実行文情報に対応する命令文が表示される。コードビュウＣＶでは、一の命令文の表示領域ＣＬが強調して表示（以下、「強調表示」という。）される。変数ビュウＶＶでは、コードビュウＣＶで強調表示されている命令文に対応する変数の内容の表示領域ＶＬが強調表示される。強調表示する方法としては、例えば、表示領域ＣＬ、ＶＬを他の領域とは異なる色で表示する方法や、表示領域ＣＬ、ＶＬを枠で囲む方法等を用いることができる。
【００２５】
なお、命令文や変数の内容を表示する画面は、上記図４に示す表示画面には限定されない。例えば、コードビュウＣＶに一の命令文のみを表示し、変数ビュウＶＶに当該一の命令文の変数の内容のみを表示させることとしてもよい。一の命令文と当該一の命令文の変数の内容とを対応付け、その対応関係を認識可能に表示することができれば、どのような表示画面であってもよい。
【００２６】
表示制御部１５は、ユーザの操作指示によって、コードビュウＣＶで強調表示されている命令文とは異なる命令文が指定され、強調表示の移動指令が出された場合に、この指定された命令文を強調表示させるとともに、この指定された命令文の変数の内容を強調表示させる。つまり、表示制御部１５は、ユーザの操作指示によって、強調表示する命令文および変数の内容を変更する。次に強調表示させる命令文を指定する方法としては、例えば、マウス等の入力装置を操作してポインタ指定とクリック操作とで命令文を指定する方法や、キーボード等の入力装置を操作してカーソル指定と入力キー操作とで命令文を指定する方法等を用いることができる。つまり、次に強調表示する命令文を特定して指定することができれば、どのような指定方法であってもよい。
【００２７】
仮想実行部１６は、ユーザの操作指示によって、変数ビュウＶＶで強調表示されている変数の値が変更され、更新指令が出された場合に、この変更された値を用いて、強調表示されている命令文以降に処理される命令文を順次実行する。
【００２８】
仮想実行部１６の機能を具体的に説明する。仮想実行部１６は、変数の値が変更された場合に、強調表示されている命令文に関する情報を表示制御部１５から受信し、受信した情報（例えば、プログラム名および行番号）をキーにしてシーケンステーブルから識別ＩＤを取得する。仮想実行部１６は、取得した識別ＩＤをキーにして変数テーブルの変数情報を特定し、特定した変数情報の変数値を変更された値で更新する。仮想実行部１６は、コードビュウＣＶに表示されている命令文のモジュールをロードし、強調表示されている命令文以降に処理される命令文を順次実行する。
【００２９】
なお、仮想実行部１６が実行する命令文は、コードビュウＣＶに表示されている命令文に限定されない。コードビュウＣＶに表示されている命令文以降に処理される全ての命令文のモジュールをロードして順次実行することとしてもよい。
【００３０】
また、変更可能な変数はローカル変数に限定することが好ましい。グローバル変数を変更した場合には、各プログラム間でのデータの整合性が失われる可能性があるためである。この場合には、強調表示の対象となる変数がグローバル変数である場合には、変更できないようにガードをかければよい。
【００３１】
更新部１７は、強調表示されている命令文以降に処理される命令文が、仮想実行部１６によって実行されているときに、上述した情報収集部１２および登録部１３と同様に、実行状況情報を収集し、収集した実行状況情報をシーケンステーブルおよび変数テーブルに記憶させる。つまり、更新部１７は、シーケンステーブルおよび変数テーブルに格納されている実行文情報および変数情報を、仮想実行部１６による実行結果で更新する。
【００３２】
次に、図面を参照して、本実施形態における実行状況確認装置の動作について説明する。図５を参照して、実行状況情報を記憶装置に登録する際の動作について説明する。図５は、実行状況情報を登録する際の処理手順を示すフローチャートである。
【００３３】
最初に、プログラム実行部１１は、収集範囲が指定されたマルチスレッドプログラムの実行を開始する（ステップＳ１０１）。
【００３４】
続いて、情報収集部１２は、実行文が収集範囲に含まれるか否かを判定する（ステップＳ１０２）。この判定がＮＯである場合（ステップＳ１０２；ＮＯ）には、後述するステップＳ１０５に処理を移行する。
【００３５】
一方、上記ステップＳ１０２の判定で実行文が収集範囲に含まれると判定された場合（ステップＳ１０２；ＹＥＳ）に、情報収集部１２は、実行文の実行状況情報を収集する（ステップＳ１０３）。
続いて、登録部１３は、上記ステップＳ１０３で収集された実行状況情報をシーケンステーブルおよび変数テーブルに登録する（ステップＳ１０４）。
【００３６】
続いて、プログラム実行部１１は、マルチスレッドプログラムの実行終了条件を満たしたか否かを判定する（ステップＳ１０５）。この判定がＹＥＳである場合（ステップＳ１０５；ＹＥＳ）には、本処理手順を終了する。一方、この判定がＮＯである場合（ステップＳ１０５；ＮＯ）に、プログラム実行部１１は、次の命令文を実行し（ステップＳ１０６）、処理を上述したステップＳ１０３に移行する。
【００３７】
図６を参照して、実行状況情報を表示装置に表示する際の動作について説明する。図６は、実行状況情報を表示する際の処理手順を示すフローチャートである。
【００３８】
最初に、ユーザの操作指示によって、特定のシーケンス名が指定され、実行状況情報の表示指令が出された場合（ステップＳ２０１；ＹＥＳ）に、取得部１４は、指定されたシーケンス名に対応する実行状況情報を、シーケンステーブルおよび変数テーブルから取得する（ステップＳ２０２）。
【００３９】
続いて、表示制御部１５は、上記ステップＳ２０２で取得された実行状況情報に基づいて、命令文と変数の内容とをディスプレイ３０に表示させる（ステップＳ２０３）。この場合に、表示制御部１５は、初期表示として、コードビュウに表示する命令文のうち、先頭行に位置する命令文を強調表示し、変数ビュウに表示する変数の内容のうち、先頭行に位置する命令文に対応する変数の内容を強調表示する。
【００４０】
続いて、ユーザの操作指示によって、コードビュウで強調表示されている命令文とは異なる命令文が指定され、強調表示対象の移動指令が出された場合（ステップＳ２０４；ＹＥＳ）に、表示制御部１５は、指定された命令文と、この命令文に対応する変数の内容とを強調表示する（ステップＳ２０５）。
【００４１】
続いて、表示制御部１５は、ユーザの操作指示によって、終了指令が出されたか否かを判定する（ステップＳ２０６）。この判定がＹＥＳの場合（ステップＳ２０６；ＹＥＳ）には、本処理手順を終了し、この判定がＮＯである場合（ステップＳ２０６；ＮＯ）には、処理を上記ステップＳ２０４に移行する。
【００４２】
図７を参照して、実行状況情報を更新する際の動作について説明する。図７は、実行状況情報を更新する際の処理手順を示すフローチャートである。
【００４３】
最初に、ユーザの操作指示によって、変数ビュウで強調表示されている変数値が変更され、変更指令が出された場合（ステップＳ３０１；ＹＥＳ）に、仮想実行部１６は、コードビュウに表示されている命令文のモジュールをロードする（ステップＳ３０２）。
【００４４】
続いて、仮想実行部１６は、強調表示されている命令文の次の命令文を、変更された変数値を用いて実行する（ステップＳ３０３）。
【００４５】
続いて、更新部１７は、実行文の実行状況情報を収集し、収集した実行状況情報を用いてシーケンステーブルおよび変数テーブルに格納されている情報を更新する（ステップＳ３０４）。
【００４６】
続いて、仮想実行部１６は、ロードしたモジュールの処理が終了したか否かを判定する（ステップＳ３０５）。この判定がＹＥＳである場合（ステップＳ３０５；ＹＥＳ）には、本処理手順を終了する。一方、この判定がＮＯである場合（ステップＳ３０５；ＮＯ）に、仮想実行部１６は、次の命令文を実行し（ステップＳ３０６）、処理を上述したステップＳ３０４に移行する。
【００４７】
上述してきたように、実施形態における実行状況確認装置１によれば、ユーザにより指定された収集範囲の命令文をマルチスレッドで実行しているときに、その実行状況情報をシーケンステーブルおよび変数テーブルに登録することができる。マルチスレッドプログラムを実行した後に、ユーザによって、収集範囲を特定するシーケンス名が指定された場合には、このシーケンス名に対応して記憶されている実行状況情報を取得して、収集範囲に含まれる命令文およびこの命令文で用いられる変数の内容を画面上に表示させることができる。この表示の際には、ユーザにより指定された特定の命令文およびこの命令文で用いられる変数の内容を強調表示させ、他の表示情報と識別可能に表示させることができる。
【００４８】
これにより、例えば、スレッドごとの実行タイミングにずれが生じてエラーが発生した場合であっても、エラー発生時の動作環境を再現することなく、命令文とこの命令文に対応する変数の内容とを順次指定して確認することが可能となる。つまり、マルチスレッドで実行するプログラムであっても、実行時のハードウェアの実行環境を再現することなく容易にプログラムの実行状況を確認することができる。
【００４９】
また、実施形態における実行状況確認装置１によれば、ユーザによって、強調表示した変数の内容が変更された場合に、その変更した変数を含む命令文以降の処理を実行して実行状況情報を更新することができる。これにより、変数の内容を変更しながら、マルチスレッドプログラムの内容を検証することが可能となる。
【００５０】
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【００５１】
例えば、上述した実施形態における更新部１７は、シーケンステーブルおよび変数テーブルに格納されている実行文情報および変数情報を、仮想実行部１６による実行結果で上書きして更新しているが、各情報を上書きして更新することには限定されない。例えば、仮想実行部１６による実行結果を、既存の実行文情報および変数情報と区別可能にし、シーケンステーブルおよび変数テーブルにレコードを追加して更新することとしてもよい。各情報を区別可能とするために、例えば、既存データと追加データとを区別するための区分データを実行文情報および変数情報に設けることとしてもよい。これにより、一部の変数値を変更した場合に、変更後の実行状況に加え、変更前の実行状況についても確認することが可能となる。
【００５２】
また、上述した実施形態では、変数の値が変更されたときに実行状況情報を更新しているが、実行状況情報を更新する際の要件はこれに限定されない。例えば、図２に示す実行時間を命令文に対応させて表示画面上に表示させ、この実行時間が変更されたときに、実行状況情報を更新することとしてもよい。これにより、例えば実行時間を変更させた命令文を、変更後の実行時間が経過するまで待機させてから次の命令文を実行させることができるため、スレッドごとの実行タイミングを意図的にずらすことが可能となる。つまり、様々なハードウェアの実行環境を想定して、スレッドごとの実行タイミングをずらしながら、マルチスレッドプログラムの内容を検証することが可能となる。
【００５３】
また、上述した実施形態では、実行状況確認装置１が、プログラム実行部１１、情報収集部１２、登録部１３、取得部１４、表示制御部１５、仮想実行部１６および更新部１７の各要素を全て備えているが、これに限定されない。例えば、実行状況確認装置１が、プログラム実行部１１、情報収集部１２、登録部１３、取得部１４および表示制御部１５を備え、その他の要素は、他の装置が備えることとしてもよい。すなわち、実行状況確認装置１が上述した各要素を全て備える必要はなく、各要素を複数の異なる装置に分散して備えることとしてもよい。
【符号の説明】
【００５４】
１…実行状況確認装置、１１…プログラム実行部、１２…情報収集部、１３…登録部、１４…取得部、１５…表示制御部、１６…仮想実行部、１７…更新部、２０…記憶装置、３０…ディスプレイ。
【図１】
2011107937.tif 000003
【図２】
2011107937.tif 000004
【図３】
2011107937.tif 000005
【図４】
2011107937.tif 000006
【図５】
2011107937.tif 000007
【図６】
2011107937.tif 000008
【図７】
2011107937.tif 000009