(57)【特許請求の範囲】
【請求項１】
割込み処理を禁止するクリティカルセクションを開始させる開始命令コード及び前記クリティカルセクションを終了させる終了命令コードを含む複数の命令コードを含むプログラムと、複数の前記命令コードを実行した順序を示す動作情報とを取得する取得部と、
前記動作情報から、前記開始命令コードと一致する開始一致部分と前記終了命令コードの一致する終了一致部分との間の区間である第１の区間に含まれる前記命令コードを抽出する抽出部と、
前記第１の区間に含まれる前記命令コードに基づいて、前記第１の区間に対応する前記プログラム内の第２の区間を判定する判定部と、
前記命令コードが前記第２の区間に含まれるか否かを特定可能にする分類情報を生成する生成部と、
を備えるプログラム情報生成システム。
【請求項２】
前記分類情報は、前記命令コードが前記第２の区間に含まれることを示す情報及び前記命令コードが第２の区間以外の区間に含まれることを示す情報を含む、
請求項１に記載のプログラム情報生成システム。
【請求項３】
前記抽出部は、前記動作情報に含まれる複数の前記命令コードの中から前記開始一致部分及び前記終了一致部分を検出し、前記開始一致部分と前記終了一致部分との間の区間を前記第１の区間と判定し、
前記判定部は、前記第１の区間に含まれる１つ以上の前記命令コードを識別する命令コードＩＤと一致する前記命令コードＩＤで識別される前記命令コードを含む前記プログラム内の区間を前記第２の区間と判定する、
請求項１又は２に記載のプログラム情報生成システム。
【請求項４】
前記プログラムは、前記割込み処理を実行させる割込み命令コードを更に含み、
前記抽出部は、前記割込み命令コード及び前記動作情報に基づいて、前記動作情報内での前記割込み処理の発生位置を示す第１の位置に対応する前記命令コードを前記動作情報から更に抽出し、
前記判定部は、前記第１の位置に対応する前記命令コードに基づいて、前記第１の位置に対応する前記プログラム内の第２の位置を更に判定し、
前記生成部は、前記第２の位置及び前記第２の区間に基づいて、前記割込み処理の発生位置が前記第２の区間に含まれるか否かを更に特定可能にする前記分類情報を生成する、
請求項１〜３のいずれか１項に記載のプログラム情報生成システム。
【請求項５】
前記抽出部は、前記動作情報に含まれる複数の前記命令コードの中から前記割込み命令コードと一致する割込み一致部分を検出し、前記割込み一致部分の直前に位置する直前命令コード及び直後に位置する直後命令コードを検出し、
前記判定部は、前記プログラムに含まれる複数の前記命令コードのうち前記直前命令コード及び前記直後命令コードが連続している部分を前記第２の位置と判定する、
請求項４に記載のプログラム情報生成システム。
【請求項６】
前記分類情報に基づいて、前記命令コードと前記第２の区間との関係を示す表示画像が表示されるように表示部を制御する表示制御部、
を更に備える請求項１〜５のいずれか１項に記載のプログラム情報生成システム。
【請求項７】
前記分類情報に基づいて、前記命令コード、前記第２の区間、及び前記割込み処理の発生位置との関係を示す表示画像が表示されるように表示部を制御する表示制御部、
を更に備える請求項４又は５に記載のプログラム情報生成システム。
【請求項８】
割込み処理を禁止するクリティカルセクションを開始させる開始命令コード及び前記クリティカルセクションを終了させる終了命令コードを含む複数の命令コードを含むプログラムと、複数の前記命令コードを実行した順序を示す動作情報とを取得するステップと、
前記動作情報から、前記開始命令コードと一致する開始一致部分と前記終了命令コードの一致する終了一致部分との間の区間である第１の区間に含まれる前記命令コードを抽出するステップと、
前記第１の区間に含まれる前記命令コードに基づいて、前記第１の区間に対応する前記プログラム内の第２の区間を判定するステップと、
前記命令コードが前記第２の区間に含まれるか否かを特定可能にする分類情報を生成するステップと、
を含むプログラム情報生成方法。
【請求項９】
コンピュータに、
割込み処理を禁止するクリティカルセクションを開始させる開始命令コード及び前記クリティカルセクションを終了させる終了命令コードを含む複数の命令コードを含むプログラムと、複数の前記命令コードを実行した順序を示す動作情報とを取得する処理と、
前記動作情報から、前記開始命令コードと一致する開始一致部分と前記終了命令コードの一致する終了一致部分との間の区間である第１の区間に含まれる前記命令コードを抽出する処理と、
前記第１の区間に含まれる前記命令コードに基づいて、前記第１の区間に対応する前記プログラム内の第２の区間を判定する処理と、
前記命令コードが前記第２の区間に含まれるか否かを特定可能にする分類情報を生成する処理と、
を実行させるプログラム情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はプログラム情報生成システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
プログラム（ソフトウェア）テストのためのツールとして、プログラムの各処理の実行順序を示す動作情報（実行トレース）を表示及び解析するシステムが利用されている。例えば、非割込み処理の実行タイミングと割込み処理の実行タイミングとが同一の時間軸上に表示されるシステムがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２８２４４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラムを構築する際に、例えば資源（メモリ等）の共有により発生する不具合を防止するために、割込み処理を禁止するクリティカルセクションが設定される場合がある。プログラムの開発、改善、修復等の作業においてクリティカルセクションに関する情報を取得及び検証することが必要となる場合がある。このような検証を正確に行うためには、クリティカルセクションに関する情報を動作情報レベルからだけではなく、プログラムレベルからも取得することが望ましい。
【０００５】
従来のシステムによれば、動作情報上に割込み処理の発生位置が表示されるため、割込み処理の発生位置を動作情報レベルで特定することができる。しかしながら、クリティカルセクションの位置、クリティカルセクションと割込み処理の発生位置との関係等をプログラムレベルで検証することはできない。
【０００６】
そこで、以下の実施形態では、クリティカルセクションに関する情報をプログラムレベルで取得できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
実施形態のプログラム情報生成システムは取得部、抽出部、判定部、及び生成部を備える。取得部は割込み処理を禁止するクリティカルセクションを開始させる開始命令コード及びクリティカルセクションを終了させる終了命令コードを含む複数の命令コードを含むプログラムと、複数の命令コードの実行順序を示す動作情報とを取得する。抽出部は開始命令コード、終了命令コード、及び動作情報に基づいて、動作情報からクリティカルセクションに対応する第１の区間に含まれる命令コードを抽出する。判定部は第１の区間に含まれる命令コードに基づいて、第１の区間に対応するプログラム内の第２の区間を判定する。生成部は第２の区間に基づいて、クリティカルセクションに含まれる命令コード又はクリティカルセクション以外の区間である非クリティカルセクションに含まれる命令コードを特定可能にする分類情報を生成する。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係るプログラム情報生成システムの機能的構成を例示する図。
【図２】第１の実施形態に係るプログラム情報生成システムのハードウェア構成を例示する図。
【図３】第１の実施形態に係る情報処理端末及びサーバの内部構成を例示する図。
【図４】第１の実施形態に係るプログラム情報生成システムによる処理の流れを例示するフローチャート。
【図５】第１の実施形態に係るソースコード及びプログラムを例示する図。
【図６】第１の実施形態に係るプログラム及び動作情報を例示する図。
【図７】第１の実施形態に係るプログラムに含まれる命令コードの分類を例示する図。
【図８】第１の実施形態の第１の例に係る分類情報を例示する図。
【図９】第１の実施形態の第２の例に係る分類情報を例示する図。
【図１０】第２の実施形態に係るプログラムに含まれる命令コードの分類及び分類情報を例示する図。
【図１１】第３の実施形態に係るプログラム情報生成システムの機能的構成を例示する図。
【図１２】第３の実施形態に係るプログラム情報生成システムによる処理の流れを例示するフローチャート。
【図１３】第３の実施形態に係るソースコード及びプログラムを例示する図。
【図１４】第３の実施形態に係るプログラム及び動作情報を例示する図。
【図１５】第３の実施形態の第１の例に係るプログラムに含まれる命令コードの分類及び分類情報を例示する図。
【図１６】第３の実施形態の第２の例に係るプログラムに含まれる命令コードの分類及び分類情報を例示する図。
【図１７】第３の実施形態の第３の例に係るプログラムに含まれる命令コードの分類及び分類情報を例示する図。
【図１８】第４の実施形態に係るプログラム情報生成システムの機能的構成を例示する図。
【図１９】第４の実施形態の第１の例に係る表示画像を例示する図。
【図２０】第４の実施形態の第２の例に係る表示画像を例示する図。
【図２１】第４の実施形態の第３の例に係る表示画像を例示する図。
【図２２】第４の実施形態の第４の例に係る表示画像を例示する図。
【図２３】第４の実施形態の第５の例に係る表示画像を例示する図。
【図２４】第４の実施形態の第６の例に係る表示画像を例示する図。
【図２５】第４の実施形態の第７の例に係る表示画像を例示する図。
【図２６】第４の実施形態の第８の例に係る表示画像を例示する図。
【図２７】第４の実施形態の第９の例に係る表示画像を例示する図。
【図２８】第４の実施形態の第１０の例に係る表示画像を例示する図。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
図１は、第１の実施形態に係るプログラム情報生成システム１の機能的構成を例示する図である。プログラム情報生成システム１は、取得部１１、抽出部１２、判定部１３、及び生成部１４を含む。
【００１０】
図２は、第１の実施形態に係るプログラム情報生成システム１のハードウェア構成を例示する図である。本例のプログラム情報生成システム１は情報処理端末３１、サーバ３２、及びネットワーク３３を含む。情報処理端末３１はユーザが使用するＰＣ（Personal  Computer）、タブレット、スマートフォン等であり得る。サーバ３２はプログラム情報生成システム１の管理者が管理するサーバコンピュータ等であり得る。情報処理端末３１とサーバ３２とはインターネット、ＬＡＮ(Local  Area  Network）等のネットワーク３３を介して接続されている。なお、同図においては、情報処理端末３１及びサーバ３２がそれぞれ１つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
【００１１】
図３は、第１の実施形態に係る情報処理端末３１及びサーバ３２の内部構成を例示する図である。情報処理端末３１及びサーバ３２はＣＰＵ（Central  Processing  Unit）４１、ＲＯＭ（Read  Only  Memory）４２、ＲＡＭ（Random  Access  Memory）４３、入力デバイス４４、出力デバイス４５、通信Ｉ／Ｆ（Interface）４６、及びバス４７を含む。ＣＰＵ４１はＲＯＭ４２等に記憶された制御プログラムに従ってＲＡＭ４３をワーキングエリアとして所定の演算処理を行う。入力デバイス４４は外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス４５は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信Ｉ／Ｆ４６はネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。
【００１２】
以下に図１に示す各機能部について説明する。取得部１１は検査対象となるプログラムと、プログラムに含まれる複数の命令コードの実行順序を示す動作情報とを取得する。本実施形態に係るプログラムはクリティカルセクションを開始させる開始命令コード及びクリティカルセクションを終了させる終了命令コードを含む。クリティカルセクションとは、割込み処理の発生を禁止する又は禁止すべき区間であり、例えば複数の処理が実行されると１つの資源（メモリ等）に対して同時にアクセスが行われ、データの破損等の問題が生じる可能性が高い部分である。取得部１１は、例えばＣＰＵ４１、制御プログラム、ロジックＩＣ（Integrated  Circuit）、ＲＡＭ４３等を利用して構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、プログラム及び動作情報はプログラム情報生成システム１以外のシステム（装置）によって生成されてもよいし、プログラム情報生成システム１内で生成されてもよい。プログラム及び動作情報の生成方法は特に限定されるものではなく、プログラム及び動作情報は公知又は新規の技術を用いて適宜生成されればよい。なお、本実施形態において「プログラム」は本プログラム情報生成システム１による検査対象となるプログラムを意味し、「制御プログラム」は本プログラム情報生成システム１を制御するためのプログラムを意味する。
【００１３】
抽出部１２は動作クリティカルセクション（ＣＳ）判定部２１を含む。動作クリティカルセクション判定部２１は開始命令コード、終了命令コード、及び動作情報に基づいて、動作情報レベルのクリティカルセクションである動作クリティカルセクション（第１の区間）を判定する。抽出部１２は動作クリティカルセクションに含まれる１つ以上の命令コードを抽出する。抽出部１２は、例えばＣＰＵ４１、制御プログラム、ロジックＩＣ、ＲＡＭ４３等を利用して構成される。
【００１４】
判定部１３はプログラムクリティカルセクション（ＣＳ）判定部２５を含む。プログラムクリティカルセクション判定部２５は動作クリティカルセクションに含まれる命令コードに基づいて、動作クリティカルセクションに対応する、プログラムレベルのクリティカルセクションであるプログラムクリティカルセクション（第２の区間）を判定する。判定部１３は、例えばＣＰＵ４１、制御プログラム、ロジックＩＣ、ＲＡＭ４３等を利用して構成される。
【００１５】
生成部１４は、プログラムクリティカルセクションに基づいて、プログラムに含まれる複数の命令コードのうちどの命令コードがクリティカルセクションに含まれるか、換言すれば、クリティカルセクションに含まれる命令コード又はクリティカルセクション以外の区間である非クリティカルセクションに含まれる命令コードを特定可能にする分類情報を生成する。生成部１４は、例えばＣＰＵ４１、制御プログラム、ロジックＩＣ、ＲＡＭ４３等を利用して構成される。
【００１６】
図４は、第１の実施形態に係るプログラム情報生成システム１による処理の流れを例示するフローチャートである。先ず、取得部１１がプログラム及び動作情報を取得する（Ｓ１０１）。その後、抽出部１２が動作クリティカルセクション判定部２１の機能により動作情報レベルのクリティカルセクションである動作クリティカルセクションを判定し、動作情報から動作クリティカルセクションに含まれる命令コードを抽出する（Ｓ１０２）。その後、判定部１３がプログラムクリティカルセクション判定部２５の機能により、抽出された命令コードに基づいてプログラムレベルのクリティカルセクションであるプログラムクリティカルセクションを判定する（Ｓ１０３）。その後、生成部１４がプログラムクリティカルセクションに基づいて分類情報を生成する（Ｓ１０４）。
【００１７】
上記構成により、クリティカルセクションに関するプログラムレベルの情報を含む分類情報を生成することが可能となる。
【００１８】
図５は、第１の実施形態に係るソースコード５０及びプログラム５１を例示する図である。ソースコード５０及びプログラム５１は互いに対応している。プログラム５１は特定の処理を実行するための命令を記述した情報である。本例のプログラム５１は命令の内容を示す複数の命令コード（ａｄｄ、ｓｔ、ｌｄ、ｊｍｐ、ｃｍｐ、ｊｎｅ、ｍｏｖ、ｊｂｒ、ｏｒ、ｂｉｃ等）、及び１つ以上の連続した命令コードを含むスコープを特定するラベル（ｆｕｎｃＡ＿ｔｏｐ、ｆｕｎｃＡ＿ｉｆ、ｆｕｎｃＡ＿ｅｌｓｅ、Ｉｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅ、Ｉｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅ等）を含む。プログラム５１は命令コード毎に割り当てられたプログラムカウンタ等を更に含んでもよい。
【００１９】
複数の命令コードには、通常命令コード５５、クリティカルセクション開始命令コード（以下、開始命令コードと略記する）５６、及びクリティカルセクション終了命令コード（以下、終了命令コードと略記する）５７が含まれる。開始命令コード５６はクリティカルセクションの開始処理を実行させるための命令コードである。終了命令コード５７はクリティカルセクションの終了処理を実行させるための命令コードである。通常命令コード５５は開始命令コード５６及び終了命令コード５７以外の命令コードである。
【００２０】
本例のプログラム５１はソースコード５０の関数ｆｕｎｃＡに対応している。本例の通常命令コード５５はｆｕｎｃＡ＿ｔｏｐ、ｆｕｎｃＡ＿ｉｆ、及びｆｕｎｃＡ＿ｅｌｓｅの３つのラベルが付された複数の命令コードから構成されている。関数ｆｕｎｃＡには分岐処理が含まれている。分岐を含まない５つの命令コード（ａｄｄ、ｓｔ、ｌｄ、ｓｔ、及びｊｍｐ）にｆｕｎｃＡ＿ｔｏｐのラベルが付されている。関数ｆｕｎｃＡのｉｆ文及びその内部の処理を示す６つの命令コード（ｌｄ、ｃｍｐ、ｊｎｅ、ｍｏｖ、ｓｔ、及びｊｂｒ）にｆｕｎｃＡ＿ｉｆのラベルが付されている。関数ｆｕｎｃＡのｅｌｓｅ文及びその内部の処理を示す５つの命令コード（ｌｄ、ｃｍｐ、ｊｎｅ、ｍｏｖ、及びｓｔ）にｆｕｎｃＡ＿ｅｌｓｅのラベルが付されている。
【００２１】
ソースコード５０の関数Ｉｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅはクリティカルセクションを開始させるクリティカルセクション開始処理を実行させる関数である。本例の開始命令コード５６はＩｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅのラベルが付された３つの命令コード（ｌｄ、ｏｒ、及びｓｔ）から構成されている。
【００２２】
ソースコード５０の関数Ｉｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅはクリティカルセクションを終了させるクリティカルセクション終了処理を実行させる関数である。本例の終了命令コード５７はＩｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅのラベルが付された３つの命令コード（ｌｄ、ｂｉｃ、及びｓｔ）から構成されている。
【００２３】
なお、クリティカルセクションの開始処理及び終了処理を実行させる関数が複数存在する場合、本プログラム情報生成システム１による検査対象となる関数を予め設定できるようにしておくことが好ましい。関数の指定はユーザにより手動で行われてもよいし、制御プログラムの処理により自動的に行われてもよい。
【００２４】
図６は、第１の実施形態に係るプログラム５１及び動作情報６０を例示する図である。動作情報６０はプログラム５１に含まれる通常命令コード５５、開始命令コード５６、及び終了命令コード５７の実行順序を示す情報（実行トレース）である。本例の動作情報６０においては、複数の命令コードが実行された順に記述されている。本例の動作情報６０は関数ｆｕｎｃＡの実行処理において関数Ｉｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅ及び関数Ｉｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅによるクリティカルセクションの開始処理及び終了処理が実行された場合の例である。本例においては、ｆｕｎｃＡ＿ｔｏｐ、ｆｕｎｃＡ＿ｉｆ、Ｉｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅ、及びＩｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅの各スコープの動作開始及び動作終了を示す付属ラベル（ｓｔａｒｔ及びｅｎｄ）が含まれているが、付属ラベルは必ずしも必要なものではない。
【００２５】
図６において、動作情報６０内にクリティカルセクション開始位置６５（開始一致部分）、クリティカルセクション終了位置６６（終了一致部分）、及び動作クリティカルセクション６７が示されている。
【００２６】
抽出部１２に含まれる動作クリティカルセクション判定部２１（図１参照）は、動作情報６０に含まれる複数の命令コードの中からクリティカルセクション開始命令コード５６（１７〜１９のプログラムカウンタ値が付されたｌｄ、ｏｒ及びｓｔ）と一致するクリティカルセクション開始位置６５を検出し、クリティカルセクション終了命令コード５７（２０〜２２のプログラムカウンタ値が付されたｌｄ、ｂｉｃ及びｓｔ）と一致するクリティカルセクション終了位置６６を検出する。動作クリティカルセクション判定部２１はクリティカルセクション開始位置６５とクリティカルセクション終了位置６６との間の区間を動作クリティカルセクション６７であると判定する。抽出部１２は動作クリティカルセクション６７に含まれる命令コード（１〜４のプログラムカウンタ値が付されたａｄｄ、ｓｔ、ｌｄ、及びｓｔ）を抽出する。
【００２７】
一致部分（クリティカルセクション開始位置６５及びクリティカルセクション終了位置６６）の検出方法は特に限定されるべきものではなく、周知又は新規な技術を適宜利用した方法であればよい。一致部分は、例えば関数Ｉｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅの命令コード（ｌｄ、ｏｒ及びｓｔ）、関数Ｉｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅの命令コード（ｌｄ、ｂｉｃ及びｓｔ）、命令コードを示すプログラムカウンタ、及びラベル（Ｉｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅ及びＩｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅ）を検索キーワードとして検索処理を行うことにより検出することができる。また、通常命令コード５５の命令コード（ａｄｄ、ｓｔ、ｌｄ、ｊｍｐ、ｃｍｐ、ｊｎｅ、ｍｏｖ、ｊｂｒ等）及びラベル（ｆｕｎｃＡ＿ｔｏｐ等）を検索キーワードとして用いてもよい。通常命令コード５５の命令コード及びラベルを検索キーワードとして利用することにより、一致部分の前後の命令コードの並び順を確かめることができるので、一致部分の検出をより高い精度で行うことが可能となる。
【００２８】
本例の動作情報６０においては、クリティカルセクションの開始処理を実行させる関数Ｉｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅの命令コード（ｌｄ、ｏｒ、及びｓｔ）がｆｕｎｃＡ＿ｔｏｐの動作開始を示す付属ラベルであるｆｕｎｃＡ＿ｔｏｐ：ｓｔａｒｔの前に存在している。このことから動作情報６０から関数ｆｕｎｃＡの開始前にクリティカルセクションの開始処理が発生したことを読み取ることができる。また、クリティカルセクションの終了処理を実行させる関数Ｉｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅの命令コード（ｌｄ、ｂｉｃ、及びｓｔ）がｆｕｎｃＡ＿ｔｏｐ：ｓｔａｒｔの後、ｆｕｎｃＡ＿ｔｏｐの動作終了を示す付属ラベルであるｆｕｎｃＡ＿ｔｏｐ：ｅｎｄの前、及びｆｕｎｃＡ＿ｉｆの動作開始を示す付属ラベルであるｆｕｎｃＡ＿ｉｆ：ｓｔａｒｔの前に存在している。このことから関数ｆｕｎｃＡの分岐を除いた処理の間にクリティカルセクションの終了処理が発生したことを読み取ることができる。また、動作クリティカルセクション６７内において関数ｆｕｎｃＡに含まれる４つの命令コードａｄｄ、ｓｔ、ｌｄ、及びｓｔが実行されたことを読み取ることができる。
【００２９】
図７は、第１の実施形態に係るプログラム５１に含まれる命令コードの分類を例示する図である。図７において、プログラム５１内におけるプログラムクリティカルセクション７１、プログラム非クリティカルセクション７２、及び未実行セクション７３が示されている。
【００３０】
判定部１３に含まれるプログラムクリティカルセクション判定部２５（図１参照）は、動作情報６０から抽出された動作クリティカルセクション６７に含まれる命令コード（１〜４のプログラムカウンタ値が付されたａｄｄ、ｓｔ、ｌｄ、及びｓｔ）に基づいて、動作クリティカルセクション６７に対応するプログラムクリティカルセクション７１を判定する。また、本実施形態においては更にプログラム５１内におけるプログラム非クリティカルセクション７２及び未実行セクション７３が判定される。
【００３１】
プログラムクリティカルセクション７１に含まれる命令コード（１〜４のプログラムカウンタ値が付された命令コードａｄｄ、ｓｔ、ｌｄ、及びｓｔ）は動作クリティカルセクション６７に含まれる命令コードと一致する。すなわち、プログラムクリティカルセクション７１に含まれる命令コードは動作情報６０に含まれる全ての命令コードのうちクリティカルセクション内で実行された命令コードである。プログラム非クリティカルセクション７２に含まれる命令コード（５〜１１，１７〜２２のプログラムカウンタ値が付された命令コード）は動作情報６０に含まれる全ての命令コードのうちクリティカルセクション外で実行された命令コードである。未実行セクション７２に含まれる命令コード（１２〜１６のプログラムカウンタ値が付された命令コード）は動作情報６０に含まれない、すなわち実行されていない命令コードである。なお、動作情報６０に含まれる命令コードは実行された命令コードである。
【００３２】
上記判定処理により、プログラム５１に含まれる複数の命令コードのうちどの命令コードがクリティカルセクションに含まれるか（クリティカルセクション内で実行されたか）を特定することが可能となる。また、本実施形態においては更にクリティカルセクションに含まれない（クリティカルセクション外で実行された）命令コード、及び実行されていない命令コードを特定することが可能となる。
【００３３】
図８は、第１の実施形態の第１の例に係る分類情報８１Ａを例示する図である。生成部１４（図１参照）は判定部１３による判定処理の結果に基づいて分類情報８１Ａを生成する。分類情報８１Ａはプログラム５１に含まれる各命令コードがどのセクション（プログラムクリティカルセクション７１、プログラム非クリティカルセクション７２、又は未実行セクション７３）に含まれるか（どのセクションで実行されたか）を示している。
【００３４】
本例に係る分類情報８１Ａは１のプログラムカウンタ値が付された命令コードａｄｄについての情報であり、項目として「命令コードＩＤ」及び「分類」を含んでいる。「命令コードＩＤ」はプログラム５１に含まれる命令コードを一意に特定可能な情報であり、本例ではプログラムカウンタ値が用いられているが、これに限られるものではない。「分類」は対象となる命令コードが含まれるセクションを示す情報である。本例に係る分類情報８１Ａは命令コードＩＤ：１に対応する命令コードａｄｄがクリティカルセクション内で実行されたことを示している。同様に、命令コードがクリティカルセクション外で実行されたか、又は未実行であるかを示す分類情報８１Ａを生成することができる。このような分類情報８１Ａを各命令コードについて生成することができる。このような分類情報８１Ａにより、各命令コードとクリティカルセクションとの関係をプログラムレベルで把握することが可能となる。
【００３５】
図９は、第１の実施形態の第２の例に係る分類情報８１Ｂを例示する図である。本例に係る分類情報８１Ｂは、項目として第１の例に係る分類情報８１Ａの項目「命令コードＩＤ」及び「分類」に加え、「ラベル」を含んでいる。「ラベル」は対象となる命令コードが属するスコープを特定する情報である。このように、命令コードに関する情報を適宜追加することにより、情報の利便性を向上させることができる。
【００３６】
上記本実施形態によれば、プログラム５１に含まれる各命令コードがどのセクション（クリティカルセクション内、クリティカルセクション外、又は未実行）に含まれるかを特定する分類情報８１Ａ，８１Ｂを生成することができる。これにより、クリティカルセクションに関する情報をプログラムレベルで取得することが可能となり、ユーザに対し有用な情報を提供することが可能となる。
【００３７】
以下に他の実施形態について図面を参照して説明するが、第１の実施形態と同一又は同様の作用効果を奏する箇所については同一の符号を付してその説明を省略する。
【００３８】
（第２の実施形態）
図１０は、第２の実施形態に係るプログラム５１に含まれる命令コードの分類及び分類情報８２を例示する図である。本実施形態に係る動作情報９０においては、１〜１１のプログラムカウンタ値が付された命令コードがそれぞれ２回ずつ実行されている。これらの命令コードのうち、先に実行された１〜４のプログラムカウンタ値が付された第１の命令コード群９１は動作クリティカルセクション６７に含まれ、後に実行された１〜４のプログラムカウンタ値が付された第２の命令コード群９２は動作クリティカルセクション６７に含まれていない。
【００３９】
上記のように、本実施形態においては、プログラム５１内の同一のスコープ（１〜４のプログラムカウンタ値が付された命令コード群ａｄｄ，ｓｔ，ｌｄ，及びｓｔからなるスコープ）がクリティカルセクション内及びクリティカルセクション外の両方で実行されている。本実施形態に係る生成部１４はこのようにクリティカルセクション内外の両方で実行された命令コードを未判定セクション９５に分類する。本実施形態に係る分類情報８２は２のプログラムカウンタ値が付された命令コードｓｔについての情報であり、「分類」が「クリティカルセクション未判定」となっている。この分類は対象となる命令コードがクリティカルセクション内及びクリティカルセクション外の両方で実行されたことを意味している。
【００４０】
このように、クリティカルセクション内外の両方で実行された場合を示す分類を追加することにより、より詳細な分類情報８２を生成することが可能となる。
【００４１】
（第３の実施形態）
図１１は、第３の実施形態に係るプログラム情報生成システム１０１の機能的構成を例示する図である。図１に示す第１の実施形態に係るプログラム情報生成システム１との機能構成的な比較において、本実施形態に係るプログラム情報生成システム１０１の抽出部１２は動作割込み位置判定部１１１を更に含み、判定部１３はプログラム割込み位置判定部１１５を更に含む。
【００４２】
本実施形態に係る取得部１１が取得するプログラムには、割込み処理を実行させる割込み命令コードが含まれる。動作割込み位置判定部１１１は動作情報レベルの割込み発生位置を判定する。プログラム割込み位置判定部１１５はプログラムレベルの割込み発生位置を判定する。生成部１４はクリティカルセクションに関する情報に加え、割込み処理に関する情報も含む分類情報を生成する。
【００４３】
図１２は、第３の実施形態に係るプログラム情報生成システム１０１による処理の流れを例示するフローチャートである。先ず、取得部１１がプログラム及び動作情報を取得する（Ｓ２０１）。その後、抽出部１２が動作クリティカルセクション判定部２１の機能により動作クリティカルセクション６７を判定し、動作情報から動作クリティカルセクション６７に含まれる命令コードを抽出する（Ｓ２０２）。その後又はステップＳ２０２と並行して、抽出部１２が動作割込み位置判定部１１１の機能により動作情報レベルの割込み発生位置である動作割込み位置（第１の位置）を判定し、動作割込み位置に対応する命令コードを抽出する（Ｓ２０３）。その後、判定部１３がプログラムクリティカルセクション判定部２５の機能によりプログラムクリティカルセクション７１を判定する（Ｓ２０４）。その後又はステップＳ２０４と平行して、判定部１３がプログラム割込み位置判定部１１５の機能により、ステップＳ２０３において抽出された命令コードに基づいてプログラムレベルの割込み発生位置であるプログラム割込み位置（第２の位置）を判定する（Ｓ２０５）。その後、生成部１４がプログラムクリティカルセクション７１及びプログラム割込み位置に基づいて分類情報を生成する（Ｓ２０６）。
【００４４】
上記構成により、クリティカルセクション及び割込み位置に関するプログラムレベルの情報を含む分類情報を生成することが可能となる。
【００４５】
図１３は、第３の実施形態に係るソースコード１２０及びプログラム１２１を例示する図である。ソースコード１２０に含まれる割込み関数ｈａｎｄｌｅｒは割込み処理を実行させる関数である。プログラム１２１に含まれる、割込み関数ｈａｎｄｌｅｒに対応する割込み命令コード１２５はｈａｎｄｌｅｒのラベルが付された複数の命令コード（ｍｏｖ及びｓｔ）から構成されている。
【００４６】
なお、複数の割込み関数が存在する場合、本プログラム情報生成システム１０１による検査対象となる関数を予め指定できるようにしておくことが好ましい。関数の指定はユーザにより手動で行われてもよいし、制御プログラムの処理により自動的に行われてもよい。
【００４７】
図１４は、第３の実施形態に係るプログラム１２１及び動作情報１３０Ａを例示する図である。動作情報１３０Ａはプログラム１２１に含まれる通常命令コード５５、開始命令コード５６、終了命令コード５７、及び割込み命令コード１２５の実行順序を示す情報である。動作情報１３０Ａは関数ｆｕｎｃＡの実行中に割込み関数ｈａｎｄｌｅｒによる割込み処理が実行された場合の例である。なお、本例に係る動作情報１３０ＡにおいてはｆｕｎｃＡ＿ｔｏｐ、ｆｕｎｃＡ＿ｉｆ、Ｉｎｔｅｒｒｕｐｔ＿ｄｉｓａｂｌｅ、Ｉｎｔｅｒｒｕｐｔ＿ｅｎａｂｌｅ、及びｈａｎｄｌｅｒの各スコープの動作開始及び動作終了を示す付属ラベル（ｓｔａｒｔ及びｅｎｄ）が含まれているが、付属ラベルは必ずしも必要なものではない。
【００４８】
動作情報１３０Ａにおいてクリティカルセクション開始位置６５、クリティカルセクション終了位置６６、動作クリティカルセクション６７、及び動作割込み位置１３５Ａが示されている。動作割込み位置１３５Ａの直前に実行された命令コード（ｃｍｐ）を直前命令コード１３７Ａと称し、動作割込み位置１３５Ａの直後に実行された命令コード（ｊｎｅ）を直後命令コード１３８Ａと称する。直前命令コード１３７Ａ及び直後命令コード１３８Ａは動作割込み位置１３５Ａに対応する命令コードである。
【００４９】
本実施形態に係る動作割込み位置判定部１１１は動作情報１３０Ａ内において割込み命令コード１２５に含まれる命令コード（ｍｏｖ及びｓｔ）と一致する部分（割込み一致部分）を動作割込み位置１３５Ａと判定する。抽出部１２はこのように判定された動作割込み位置１３５Ａに対応する直前命令コード（ｃｍｐ）１３７Ａ及び直後命令コード（ｊｎｅ）１３８Ａを動作情報１３０Ａから抽出する。本実施形態に係るプログラム割込み位置判定部１１５はプログラム１２１内において直前命令コード１３７Ａ及び直後命令コード１３８Ａが連続している部分をプログラム割込み位置１２７Ａと判定する。
【００５０】
一致部分（動作割込み位置１３５Ａ）の検出方法は特に限定されるべきものではなく、周知又は新規な技術を適宜利用した方法であればよい。一致部分は、例えば割込み命令コード（ｍｏｖ及びｓｔ）及びラベル（ｈａｎｄｌｅｒ）を検索キーワードとして動作情報１３０Ａ内から検出することができる。また、通常命令コード５５、開始命令コード５６、終了命令コード５７、及びラベルを検索キーワードとして用いてもよい。通常命令コード５５、開始命令コード５６、終了命令コード５７、及びラベルを検索キーワードとして利用することにより、直前命令コード１３７Ａ及び直後命令コード１３８Ａの並び順を確かめることができるので、一致部分の検出をより高い精度で行うことが可能となる。
【００５１】
図１５は、第３の実施形態の第１の例に係るプログラム１２１に含まれる命令コードの分類及び分類情報１４１Ａを例示する図である。本例は割込み処理がクリティカルセクション外で発生した場合の例である。本例に係る動作情報１３０Ａ及びプログラム１２１における直前命令コード１３７Ａは７のプログラムカウンタ値が付された命令コードｃｍｐであり、プログラム非クリティカルセクション７２に含まれている。すなわち、割込み処理は７のプログラムカウンタ値が付された命令コードｃｍｐの実行直後であり且つクリティカルセクション外において発生したことが示されている。
【００５２】
本実施形態に係る生成部１４は上記のように判定された割込み処理に関する情報を含む分類情報１４１Ａを生成する。分類情報１４１Ａはプログラム１２１に含まれる各命令コードがどのセクション（クリティカルセクション内（プログラムクリティカルセクション７１）、クリティカルセクション外（プログラム非クリティカルセクション７２）、又は未実行（未実行セクション７３））に含まれるかを示す情報、及び割込み処理との関係を示す情報を含む。
【００５３】
本例に係る分類情報１４１Ａは７のプログラムカウンタ値が付された命令コードｃｍｐについての情報であり、項目として「命令コードＩＤ」、「分類」、及び「割込み処理との関係」を含んでいる。「命令コードＩＤ」及び「分類」は第１の実施形態と同様である。「割込み処理との関係」は対象となる命令コードの実行タイミングと割込み処理の実行タイミングとの関係を示す情報である。本例においては、「命令コードＩＤ」が「７」、「分類」が「クリティカルセクション外」、「割込み処理との関係」が「直前」となっている。「割込み処理との関係」：「直前」は対象となる命令コード（ｃｍｐ）が割込み処理発生の直前に実行されたことを示している。なお、本例に係る「割込み処理との関係」は対象となる命令コードが割込み発生位置の直前であるか、直後であるか、又はそれ以外であるかを示す情報であるが、これに限られるものではない。このような分類情報１４１Ａにより、各命令コード、クリティカルセクション、及び割込み処理の関係をプログラムレベルで把握することが可能となる。
【００５４】
図１６は、第３の実施形態の第２の例に係るプログラム１２１に含まれる命令コードの分類及び分類情報１４１Ｂを例示する図である。本例は割込み処理がクリティカルセクション内で発生した場合の例である。本例に係る動作情報１３０Ｂ及びプログラム１２１における直前命令コード１３７Ｂは１のプログラムカウンタ値が付された命令コードａｄｄであり、プログラムクリティカルセクション７１に含まれている。すなわち、割込み処理は１のプログラムカウンタ値が付された命令コードａｄｄの実行直後であり且つクリティカルセクション内において発生したことが示されている。
【００５５】
本例に係る分類情報１４１Ｂは１のプログラムカウンタ値が付された命令コードａｄｄについての情報であり、「命令コードＩＤ」が「１」、「分類」が「クリティカルセクション内」、「割込み処理との関係」が「直前」となっている。このような分類情報１４１Ｂにより、本来割込み処理が発生してはならないクリティカルセクション内で発生した割込み処理に密接に関係する命令コード、すなわち改善が必要である可能性が高い命令コードを容易に発見することが可能となる。
【００５６】
図１７は、第３の実施形態の第３の例に係るプログラム１２１に含まれる命令コードの分類及び分類情報１４１Ｃを例示する図である。本例は割込み処理がクリティカルセクション未判定の領域、すなわちクリティカルセクション内外の両方で実行された命令コードの直後において発生した場合の例である。本例に係る動作情報１３０Ｃ及びプログラム１２１における直前命令コード１３７Ｃは２のプログラムカウンタ値が付された命令コードｓｔであり、未判定セクション９５に含まれている。すなわち、割込み処理はクリティカルセクション内外の両方で実行された２のプログラムカウンタ値が付された命令コードｓｔの実行直後に発生したことが示されている。
【００５７】
本例に係る分類情報１４１Ｃは２のプログラムカウンタ値が付された命令コードｓｔについての情報であり、「命令コードＩＤ」が「２」、「分類」が「クリティカルセクション未判定」、「割込み処理との関係」が「直前」となっている。このような分類情報１４１Ｃにより、割込み処理に密接に関係する命令コードがクリティカルセクション内外の両方で実行されたものであることを認識することが可能となる。
【００５８】
上記のように本実施形態によれば、クリティカルセクションに関する情報及び割込み処理に関する情報をプログラムレベルで取得することが可能となる。
【００５９】
上記第１〜第３の実施形態において複数種の分類情報８１Ａ，８１Ｂ，８２，１４１Ａ〜１４１Ｃを示したが、生成部１４により生成される分類情報はこれらに限られるものではなく、適宜な情報の追加、削除、又は変更がなされた情報であってもよい。追加され得る適宜な情報としては、例えば割込み処理の発生回数、各処理（スコープ）の実行時間、各処理（スコープ）間の親子関係（呼び出し関係）等が挙げられる。
【００６０】
上記のように生成された分類情報８１Ａ，８１ｂ，８２，１４１Ａ〜１４１Ｃ（これらから派生する情報を含む）は様々な目的で利用され得る。分類情報８１Ａ，８１ｂ，８２，１４１Ａ〜１４１Ｃは、例えばＧＵＩ(Graphical  User  Interface）を利用してプログラム５１の実行状況を可視化したり、プログラム５１（ソースコード５０）を検証したりするシステムに提供されてもよいし、そのままコンピュータのディスプレイ等に出力されてもよい。
【００６１】
なお、図２及び図３に示すハードウェア構成は一例であり、プログラム情報生成システム１は様々なハードウェア構成により実現することができる。例えば、プログラム情報生成システム１は単体の汎用コンピュータ、組み込みプロセッサを有する専用装置等により構成されてもよい。
【００６２】
また、図１にはプログラム情報生成システム１の最も基本的な機能ブロックである取得部１１、抽出部１２、判定部１３、及び生成部１４を処理の順序で接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、１つの機能ブロックを複数の機能ブロックに分割する構成、これら３つの構成を組み合わせた構成等であってもよい。
【００６３】
プログラム情報生成システム１の機能を実現させる制御プログラムはインストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムはネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めＲＯＭ等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは上記取得部１１、抽出部１２、判定部１３、及び生成部１４の機能を実現する複数のモジュールから構成されてもよい。
【００６４】
（第４の実施形態）
図１８は、第４の実施形態に係るプログラム情報生成システム２０１の機能的構成を例示する図である。本実施形態に係るプログラム情報生成システム２０１は図１１に示す第３の実施形態に係るプログラム情報生成システム１０１の構成に加え、表示制御部１５を含む。
【００６５】
表示制御部１５は生成部１４により生成された分類情報８１Ａ，８１Ｂ，８２，１４１Ａ〜１４１Ｃ又はこれらに適宜な情報を追加した情報に基づいて、命令コードとクリティカルセクションとの関係、命令コードとクリティカルセクションと割込み処理との関係等を示す表示画像が表示されるように所定の表示部を制御する。表示部とは画像を出力するデバイスであり、例えばディスプレイ、プリンタ等である。表示制御部１５は、例えばＣＰＵ４１、制御プログラム、ロジックＩＣ、ＲＡＭ４３等を利用して構成される。
【００６６】
図１９は、第４の実施形態の第１の例に係る表示画像２１１Ａを例示する図である。本例に係る表示画像２１１Ａは命令コードオブジェクト２１５Ａ及びセクションオブジェクト２１６Ａ〜２１６Ｃを含む。
【００６７】
命令コードオブジェクト２１５Ａはプログラム５１，１２１に含まれる各命令コードを特定するオブジェクトであり、本例においては命令コードＩＤ（プログラムカウンタ値）を示している。セクションオブジェクト２１６Ａ〜２１６Ｃは各命令コードが属するセクションの種類を示している。セクションオブジェクト２１６Ａはクリティカルセクション外（プログラム非クリティカルセクション７２）を示し、セクションオブジェクト２１６Ｂはクリティカルセクション内（プログラムクリティカルセクション７１）を示し、セクションオブジェクト２１６Ｃは未実行（未実行セクション７３）を示している。各セクションオブジェクト２１６Ａ〜２１６Ｃの表示形式（例えば、色、輝度、網掛け、ハッチング、点滅等）は各セクションの種類が視覚的に識別可能となるよう互いに異なっている。このような表示画像２１１Ａにより、プログラム５１，１２１に含まれる各命令コードがどのセクションに属するかを的確に把握することが可能となる。
【００６８】
図２０は、第４の実施形態の第２の例に係る表示画像２１１Ｂを例示する図である。本例に係る表示画像２１１Ｂは図１９に示す第１の例に係る表示画像２１１Ａの構成に加え、割込み回数オブジェクト２２１を含む。
【００６９】
割込み回数オブジェクト２２１は各命令コードの実行直後に発生した割込み処理の回数を示している。割込み回数オブジェクト２２１は各命令コードの実行直前に発生した割込み処理の回数を示すものであってもよい。このような表示画像２１１Ｂにより、割込み処理の発生頻度と命令コードとの関係、クリティカルセクション内における割込み処理の発生状況等を的確に把握することが可能となる。
【００７０】
図２１は、第４の実施形態の第３の例に係る表示画像２１１Ｃを例示する図である。本例に係る表示画像２１１Ｃは図２０に示す第２の例に係る表示画像２１１Ｂの構成に加え、クリティカルセクション未判定（未判定セクション９５）を示すセクションオブジェクト２１６Ｄを含む。このような表示画像２１１Ｃにより、クリティカルセクション内外の両方で実行された命令コードの状況を的確に把握することが可能となる。
【００７１】
図２２は、第４の実施形態の第４の例に係る表示画像２１１Ｄを例示する図である。本例に係る表示画像２１１Ｄは図２０に示す第２の例に係る表示画像２１１Ｂの構成に加え、クリティカルセクション外において割込み処理が発生した部分を示すセクションオブジェクト２１６Ｅ及びクリティカルセクション内において割込み処理が発生した部分を示すセクションオブジェクト２１６Ｆを含む。このような表示画像２１１Ｄにより、クリティカルセクションと割込み処理との関係をより的確に把握することが可能となる。
【００７２】
図２３は、第４の実施形態の第５の例に係る表示画像２１１Ｅを例示する図である。本例に係る表示画像２１１Ｅは図２２に示す第４の例に係る表示画像２１１Ｄの構成に加え、クリティカルセクション未判定（未判定セクション９５）を示すセクションオブジェクト２１６Ｄ及びクリティカルセクション未判定内において割込み処理が発生した部分を示すセクションオブジェクト２１６Ｇを含む。このような表示画像２１１Ｅにより、クリティカルセクション内外の両方で実行された命令コードと割込み処理との関係を的確に把握することが可能となる。
【００７３】
図２４は、第４の実施形態の第６の例に係る表示画像２１１Ｆを例示する図である。本例に係る表示画像２１１Ｆは図２０に示す第２の例に係る表示画像２１１Ｂと同様のセクションオブジェクト２１６Ａ〜２１６Ｃ及び割込み回数オブジェクト２２１を含む。本例に係る命令コードオブジェクト２１５Ｂは１６進数により表示されている。プログラムカウンタ値の代わりにこのような表示を用いてもよい。また、本例に係る表示画像２１１Ｆは割込み未発生オブジェクト２２５を含む。割込み未発生オブジェクト２２５は実行直後に割込み処理が発生しなかった命令コードに対応して表示される。このような表示画像２１１Ｆにより、命令コードと割込み処理との関係をより的確に把握することが可能となる。
【００７４】
図２５は、第４の実施形態の第７の例に係る表示画像２１１Ｇを例示する図である。本例に係る表示画像２１１Ｇはクリティカルセクション内を示すセクションオブジェクト２１６Ｂを含まず、クリティカルセクション未判定を示すセクションオブジェクト２１６Ｄを含む。このような表示画像２１１Ｇであっても、命令コード、クリティカルセクション、及び割込み処理の関係を把握することが可能である。
【００７５】
図２６は、第４の実施形態の第８の例に係る表示画像２１１Ｈを例示する図である。本例に係る表示画像２１１Ｈはセクションの種類を示すオブジェクトとしてクリティカルセクション内を示すセクションオブジェクト２１６Ｂのみを含み、割込み回数オブジェクト２２１及び割込み未発生オブジェクト２２５を含む。このように特定のセクションの状態のみを表示可能にすることにより、特定のセクションに対する検証をより集中的に行うことが可能となる。
【００７６】
図２７は、第４の実施形態の第９の例に係る表示画像２１１Ｉを例示する図である。本例に係る表示画像２１１Ｉは上記第１〜第８の例に係るセクションオブジェクト２１６Ａ〜２１６Ｇと同様のオブジェクトを含まない。本例に係る表示画像２１１Ｉは割込み回数を示すオブジェクトとして、セクションの種類毎に割込み処理を示す割込み回数オブジェクト２２２Ａ〜２２２Ｃを含む。本例においては同一の命令コードに対応する複数の割込み回数オブジェクト２２２Ａ〜２２２Ｃが並列に表示されている（命令コードＩＤ：７，８参照）。例えば、割込み回数オブジェクト２２２Ａはクリティカルセクション外における割込み回数を示し、割込み回数オブジェクト２２２Ｂはクリティカルセクション内における割込み回数を示し、割込み回数オブジェクト２２２Ｃは未判定セクション９５における割込み回数を示す。このような表示画像２１１Ｉであっても、命令コード、クリティカルセクション、及び割込み処理の関係を的確に把握することが可能である。
【００７７】
図２８は、第４の実施形態の第１０の例に係る表示画像２１１Ｊを例示する図である。本例に係る表示画像２１１Ｊは図２７に示す第９の例と同様の割込み回数オブジェクト２２２Ａ〜２２２Ｃを含む。本例においては同一の命令コードに対応する複数の割込み回数オブジェクト２２２Ａ〜２２２Ｃが直列に表示されている（命令コードＩＤ：７，８参照）。このような表示画像２１１Ｊであっても、命令コード、クリティカルセクション、及び割込み処理の関係を的確に把握することが可能である。
【００７８】
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７９】
１，１０１，２０１  プログラム情報生成システム
１１  取得部
１２  抽出部
１３  判定部
１４  生成部
１５  表示制御部
２１  動作クリティカルセクション判定部
２５  プログラムクリティカルセクション判定部
３１  情報処理端末
３２  サーバ
２２  ネットワーク
４１  ＣＰＵ
４２  ＲＯＭ
４３  ＲＡＭ
４４  入力デバイス
４５  出力デバイス
４６  通信Ｉ／Ｆ
４７  バス
５０，１２０  ソースコード
５１，１２１  プログラム
５５  通常命令コード
５６  クリティカルセクション開始命令コード
５７  クリティカルセクション終了命令コード
６０，９０，１３０Ａ，１３０Ｂ，１３０Ｃ  動作情報
６５  クリティカルセクション開始位置
６６  クリティカルセクション終了位置
６７  動作クリティカルセクション
７１  プログラムクリティカルセクション
７２  プログラム非クリティカルセクション
７３  未実行セクション
８１Ａ，８１Ｂ，８２，１４１Ａ，１４１Ｂ，１４１Ｃ  分類情報
９１  第１の命令コード群
９２  第２の命令コード群
９５  未判定セクション
１１１  動作割込み位置判定部
１１５  プログラム割込み位置判定部
１２５  割込み命令コード
１２７Ａ  プログラム割込み位置
１３５Ａ，１３５Ｂ，１３５Ｃ  動作割込み位置
１３７Ａ，１３７Ｂ，１３７Ｃ  直前命令コード
１３８Ａ，１３８Ｂ，１３８Ｃ  直後命令コード
２１１Ａ，２１１Ｂ，２１１Ｃ，２１１Ｄ，２１１Ｅ，２１１Ｆ，２１１Ｇ，２１１Ｈ，２１１Ｉ，２１１Ｊ  表示画像
２１５Ａ，２１５Ｂ  命令コードオブジェクト
２１６Ａ，２１６Ｂ，２１６Ｃ，２１６Ｄ，２１６Ｅ，２１６Ｆ，２１６Ｇ  セクションオブジェクト
２２１，２２２Ａ，２２２Ｂ，２２２Ｃ  割込み回数オブジェクト
２２５  割込み未発生オブジェクト
【図１】
0006699889.tif 000002
【図２】
0006699889.tif 000003
【図３】
0006699889.tif 000004
【図４】
0006699889.tif 000005
【図５】
0006699889.tif 000006
【図６】
0006699889.tif 000007
【図７】
0006699889.tif 000008
【図８】
0006699889.tif 000009
【図９】
0006699889.tif 000010
【図１０】
0006699889.tif 000011
【図１１】
0006699889.tif 000012
【図１２】
0006699889.tif 000013
【図１３】
0006699889.tif 000014
【図１４】
0006699889.tif 000015
【図１５】
0006699889.tif 000016
【図１６】
0006699889.tif 000017
【図１７】
0006699889.tif 000018
【図１８】
0006699889.tif 000019
【図１９】
0006699889.tif 000020
【図２０】
0006699889.tif 000021
【図２１】
0006699889.tif 000022
【図２２】
0006699889.tif 000023
【図２３】
0006699889.tif 000024
【図２４】
0006699889.tif 000025
【図２５】
0006699889.tif 000026
【図２６】
0006699889.tif 000027
【図２７】
0006699889.tif 000028
【図２８】
0006699889.tif 000029