JP6699889B2 - プログラム情報生成システム、方法、及びプログラム - Google Patents

プログラム情報生成システム、方法、及びプログラム Download PDF

Info

Publication number
JP6699889B2
JP6699889B2 JP2016124547A JP2016124547A JP6699889B2 JP 6699889 B2 JP6699889 B2 JP 6699889B2 JP 2016124547 A JP2016124547 A JP 2016124547A JP 2016124547 A JP2016124547 A JP 2016124547A JP 6699889 B2 JP6699889 B2 JP 6699889B2
Authority
JP
Japan
Prior art keywords
instruction code
section
program
information
critical section
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.)
Expired - Fee Related
Application number
JP2016124547A
Other languages
English (en)
Other versions
JP2017228125A (ja
Inventor
真由子 肥塚
真由子 肥塚
秀則 松崎
秀則 松崎
黒田 亮
亮 黒田
信明 東條
信明 東條
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2016124547A priority Critical patent/JP6699889B2/ja
Priority to US15/440,635 priority patent/US20170371664A1/en
Publication of JP2017228125A publication Critical patent/JP2017228125A/ja
Application granted granted Critical
Publication of JP6699889B2 publication Critical patent/JP6699889B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明の実施形態はプログラム情報生成システム、方法、及びプログラムに関する。
プログラム(ソフトウェア)テストのためのツールとして、プログラムの各処理の実行順序を示す動作情報(実行トレース)を表示及び解析するシステムが利用されている。例えば、非割込み処理の実行タイミングと割込み処理の実行タイミングとが同一の時間軸上に表示されるシステムがある。
特開2010−282444号公報
プログラムを構築する際に、例えば資源(メモリ等)の共有により発生する不具合を防止するために、割込み処理を禁止するクリティカルセクションが設定される場合がある。プログラムの開発、改善、修復等の作業においてクリティカルセクションに関する情報を取得及び検証することが必要となる場合がある。このような検証を正確に行うためには、クリティカルセクションに関する情報を動作情報レベルからだけではなく、プログラムレベルからも取得することが望ましい。
従来のシステムによれば、動作情報上に割込み処理の発生位置が表示されるため、割込み処理の発生位置を動作情報レベルで特定することができる。しかしながら、クリティカルセクションの位置、クリティカルセクションと割込み処理の発生位置との関係等をプログラムレベルで検証することはできない。
そこで、以下の実施形態では、クリティカルセクションに関する情報をプログラムレベルで取得できるようにすることを目的とする。
実施形態のプログラム情報生成システムは取得部、抽出部、判定部、及び生成部を備える。取得部は割込み処理を禁止するクリティカルセクションを開始させる開始命令コード及びクリティカルセクションを終了させる終了命令コードを含む複数の命令コードを含むプログラムと、複数の命令コードの実行順序を示す動作情報とを取得する。抽出部は開始命令コード、終了命令コード、及び動作情報に基づいて、動作情報からクリティカルセクションに対応する第1の区間に含まれる命令コードを抽出する。判定部は第1の区間に含まれる命令コードに基づいて、第1の区間に対応するプログラム内の第2の区間を判定する。生成部は第2の区間に基づいて、クリティカルセクションに含まれる命令コード又はクリティカルセクション以外の区間である非クリティカルセクションに含まれる命令コードを特定可能にする分類情報を生成する。
第1の実施形態に係るプログラム情報生成システムの機能的構成を例示する図。 第1の実施形態に係るプログラム情報生成システムのハードウェア構成を例示する図。 第1の実施形態に係る情報処理端末及びサーバの内部構成を例示する図。 第1の実施形態に係るプログラム情報生成システムによる処理の流れを例示するフローチャート。 第1の実施形態に係るソースコード及びプログラムを例示する図。 第1の実施形態に係るプログラム及び動作情報を例示する図。 第1の実施形態に係るプログラムに含まれる命令コードの分類を例示する図。 第1の実施形態の第1の例に係る分類情報を例示する図。 第1の実施形態の第2の例に係る分類情報を例示する図。 第2の実施形態に係るプログラムに含まれる命令コードの分類及び分類情報を例示する図。 第3の実施形態に係るプログラム情報生成システムの機能的構成を例示する図。 第3の実施形態に係るプログラム情報生成システムによる処理の流れを例示するフローチャート。 第3の実施形態に係るソースコード及びプログラムを例示する図。 第3の実施形態に係るプログラム及び動作情報を例示する図。 第3の実施形態の第1の例に係るプログラムに含まれる命令コードの分類及び分類情報を例示する図。 第3の実施形態の第2の例に係るプログラムに含まれる命令コードの分類及び分類情報を例示する図。 第3の実施形態の第3の例に係るプログラムに含まれる命令コードの分類及び分類情報を例示する図。 第4の実施形態に係るプログラム情報生成システムの機能的構成を例示する図。 第4の実施形態の第1の例に係る表示画像を例示する図。 第4の実施形態の第2の例に係る表示画像を例示する図。 第4の実施形態の第3の例に係る表示画像を例示する図。 第4の実施形態の第4の例に係る表示画像を例示する図。 第4の実施形態の第5の例に係る表示画像を例示する図。 第4の実施形態の第6の例に係る表示画像を例示する図。 第4の実施形態の第7の例に係る表示画像を例示する図。 第4の実施形態の第8の例に係る表示画像を例示する図。 第4の実施形態の第9の例に係る表示画像を例示する図。 第4の実施形態の第10の例に係る表示画像を例示する図。
(第1の実施形態)
図1は、第1の実施形態に係るプログラム情報生成システム1の機能的構成を例示する図である。プログラム情報生成システム1は、取得部11、抽出部12、判定部13、及び生成部14を含む。
図2は、第1の実施形態に係るプログラム情報生成システム1のハードウェア構成を例示する図である。本例のプログラム情報生成システム1は情報処理端末31、サーバ32、及びネットワーク33を含む。情報処理端末31はユーザが使用するPC(Personal Computer)、タブレット、スマートフォン等であり得る。サーバ32はプログラム情報生成システム1の管理者が管理するサーバコンピュータ等であり得る。情報処理端末31とサーバ32とはインターネット、LAN(Local Area Network)等のネットワーク33を介して接続されている。なお、同図においては、情報処理端末31及びサーバ32がそれぞれ1つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
図3は、第1の実施形態に係る情報処理端末31及びサーバ32の内部構成を例示する図である。情報処理端末31及びサーバ32はCPU(Central Processing Unit)41、ROM(Read Only Memory)42、RAM(Random Access Memory)43、入力デバイス44、出力デバイス45、通信I/F(Interface)46、及びバス47を含む。CPU41はROM42等に記憶された制御プログラムに従ってRAM43をワーキングエリアとして所定の演算処理を行う。入力デバイス44は外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス45は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信I/F46はネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。
以下に図1に示す各機能部について説明する。取得部11は検査対象となるプログラムと、プログラムに含まれる複数の命令コードの実行順序を示す動作情報とを取得する。本実施形態に係るプログラムはクリティカルセクションを開始させる開始命令コード及びクリティカルセクションを終了させる終了命令コードを含む。クリティカルセクションとは、割込み処理の発生を禁止する又は禁止すべき区間であり、例えば複数の処理が実行されると1つの資源(メモリ等)に対して同時にアクセスが行われ、データの破損等の問題が生じる可能性が高い部分である。取得部11は、例えばCPU41、制御プログラム、ロジックIC(Integrated Circuit)、RAM43等を利用して構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、プログラム及び動作情報はプログラム情報生成システム1以外のシステム(装置)によって生成されてもよいし、プログラム情報生成システム1内で生成されてもよい。プログラム及び動作情報の生成方法は特に限定されるものではなく、プログラム及び動作情報は公知又は新規の技術を用いて適宜生成されればよい。なお、本実施形態において「プログラム」は本プログラム情報生成システム1による検査対象となるプログラムを意味し、「制御プログラム」は本プログラム情報生成システム1を制御するためのプログラムを意味する。
抽出部12は動作クリティカルセクション(CS)判定部21を含む。動作クリティカルセクション判定部21は開始命令コード、終了命令コード、及び動作情報に基づいて、動作情報レベルのクリティカルセクションである動作クリティカルセクション(第1の区間)を判定する。抽出部12は動作クリティカルセクションに含まれる1つ以上の命令コードを抽出する。抽出部12は、例えばCPU41、制御プログラム、ロジックIC、RAM43等を利用して構成される。
判定部13はプログラムクリティカルセクション(CS)判定部25を含む。プログラムクリティカルセクション判定部25は動作クリティカルセクションに含まれる命令コードに基づいて、動作クリティカルセクションに対応する、プログラムレベルのクリティカルセクションであるプログラムクリティカルセクション(第2の区間)を判定する。判定部13は、例えばCPU41、制御プログラム、ロジックIC、RAM43等を利用して構成される。
生成部14は、プログラムクリティカルセクションに基づいて、プログラムに含まれる複数の命令コードのうちどの命令コードがクリティカルセクションに含まれるか、換言すれば、クリティカルセクションに含まれる命令コード又はクリティカルセクション以外の区間である非クリティカルセクションに含まれる命令コードを特定可能にする分類情報を生成する。生成部14は、例えばCPU41、制御プログラム、ロジックIC、RAM43等を利用して構成される。
図4は、第1の実施形態に係るプログラム情報生成システム1による処理の流れを例示するフローチャートである。先ず、取得部11がプログラム及び動作情報を取得する(S101)。その後、抽出部12が動作クリティカルセクション判定部21の機能により動作情報レベルのクリティカルセクションである動作クリティカルセクションを判定し、動作情報から動作クリティカルセクションに含まれる命令コードを抽出する(S102)。その後、判定部13がプログラムクリティカルセクション判定部25の機能により、抽出された命令コードに基づいてプログラムレベルのクリティカルセクションであるプログラムクリティカルセクションを判定する(S103)。その後、生成部14がプログラムクリティカルセクションに基づいて分類情報を生成する(S104)。
上記構成により、クリティカルセクションに関するプログラムレベルの情報を含む分類情報を生成することが可能となる。
図5は、第1の実施形態に係るソースコード50及びプログラム51を例示する図である。ソースコード50及びプログラム51は互いに対応している。プログラム51は特定の処理を実行するための命令を記述した情報である。本例のプログラム51は命令の内容を示す複数の命令コード(add、st、ld、jmp、cmp、jne、mov、jbr、or、bic等)、及び1つ以上の連続した命令コードを含むスコープを特定するラベル(funcA_top、funcA_if、funcA_else、Interrupt_disable、Interrupt_enable等)を含む。プログラム51は命令コード毎に割り当てられたプログラムカウンタ等を更に含んでもよい。
複数の命令コードには、通常命令コード55、クリティカルセクション開始命令コード(以下、開始命令コードと略記する)56、及びクリティカルセクション終了命令コード(以下、終了命令コードと略記する)57が含まれる。開始命令コード56はクリティカルセクションの開始処理を実行させるための命令コードである。終了命令コード57はクリティカルセクションの終了処理を実行させるための命令コードである。通常命令コード55は開始命令コード56及び終了命令コード57以外の命令コードである。
本例のプログラム51はソースコード50の関数funcAに対応している。本例の通常命令コード55はfuncA_top、funcA_if、及びfuncA_elseの3つのラベルが付された複数の命令コードから構成されている。関数funcAには分岐処理が含まれている。分岐を含まない5つの命令コード(add、st、ld、st、及びjmp)にfuncA_topのラベルが付されている。関数funcAのif文及びその内部の処理を示す6つの命令コード(ld、cmp、jne、mov、st、及びjbr)にfuncA_ifのラベルが付されている。関数funcAのelse文及びその内部の処理を示す5つの命令コード(ld、cmp、jne、mov、及びst)にfuncA_elseのラベルが付されている。
ソースコード50の関数Interrupt_disableはクリティカルセクションを開始させるクリティカルセクション開始処理を実行させる関数である。本例の開始命令コード56はInterrupt_disableのラベルが付された3つの命令コード(ld、or、及びst)から構成されている。
ソースコード50の関数Interrupt_enableはクリティカルセクションを終了させるクリティカルセクション終了処理を実行させる関数である。本例の終了命令コード57はInterrupt_enableのラベルが付された3つの命令コード(ld、bic、及びst)から構成されている。
なお、クリティカルセクションの開始処理及び終了処理を実行させる関数が複数存在する場合、本プログラム情報生成システム1による検査対象となる関数を予め設定できるようにしておくことが好ましい。関数の指定はユーザにより手動で行われてもよいし、制御プログラムの処理により自動的に行われてもよい。
図6は、第1の実施形態に係るプログラム51及び動作情報60を例示する図である。動作情報60はプログラム51に含まれる通常命令コード55、開始命令コード56、及び終了命令コード57の実行順序を示す情報(実行トレース)である。本例の動作情報60においては、複数の命令コードが実行された順に記述されている。本例の動作情報60は関数funcAの実行処理において関数Interrupt_disable及び関数Interrupt_enableによるクリティカルセクションの開始処理及び終了処理が実行された場合の例である。本例においては、funcA_top、funcA_if、Interrupt_disable、及びInterrupt_enableの各スコープの動作開始及び動作終了を示す付属ラベル(start及びend)が含まれているが、付属ラベルは必ずしも必要なものではない。
図6において、動作情報60内にクリティカルセクション開始位置65(開始一致部分)、クリティカルセクション終了位置66(終了一致部分)、及び動作クリティカルセクション67が示されている。
抽出部12に含まれる動作クリティカルセクション判定部21(図1参照)は、動作情報60に含まれる複数の命令コードの中からクリティカルセクション開始命令コード56(17〜19のプログラムカウンタ値が付されたld、or及びst)と一致するクリティカルセクション開始位置65を検出し、クリティカルセクション終了命令コード57(20〜22のプログラムカウンタ値が付されたld、bic及びst)と一致するクリティカルセクション終了位置66を検出する。動作クリティカルセクション判定部21はクリティカルセクション開始位置65とクリティカルセクション終了位置66との間の区間を動作クリティカルセクション67であると判定する。抽出部12は動作クリティカルセクション67に含まれる命令コード(1〜4のプログラムカウンタ値が付されたadd、st、ld、及びst)を抽出する。
一致部分(クリティカルセクション開始位置65及びクリティカルセクション終了位置66)の検出方法は特に限定されるべきものではなく、周知又は新規な技術を適宜利用した方法であればよい。一致部分は、例えば関数Interrupt_disableの命令コード(ld、or及びst)、関数Interrupt_enableの命令コード(ld、bic及びst)、命令コードを示すプログラムカウンタ、及びラベル(Interrupt_disable及びInterrupt_enable)を検索キーワードとして検索処理を行うことにより検出することができる。また、通常命令コード55の命令コード(add、st、ld、jmp、cmp、jne、mov、jbr等)及びラベル(funcA_top等)を検索キーワードとして用いてもよい。通常命令コード55の命令コード及びラベルを検索キーワードとして利用することにより、一致部分の前後の命令コードの並び順を確かめることができるので、一致部分の検出をより高い精度で行うことが可能となる。
本例の動作情報60においては、クリティカルセクションの開始処理を実行させる関数Interrupt_disableの命令コード(ld、or、及びst)がfuncA_topの動作開始を示す付属ラベルであるfuncA_top:startの前に存在している。このことから動作情報60から関数funcAの開始前にクリティカルセクションの開始処理が発生したことを読み取ることができる。また、クリティカルセクションの終了処理を実行させる関数Interrupt_enableの命令コード(ld、bic、及びst)がfuncA_top:startの後、funcA_topの動作終了を示す付属ラベルであるfuncA_top:endの前、及びfuncA_ifの動作開始を示す付属ラベルであるfuncA_if:startの前に存在している。このことから関数funcAの分岐を除いた処理の間にクリティカルセクションの終了処理が発生したことを読み取ることができる。また、動作クリティカルセクション67内において関数funcAに含まれる4つの命令コードadd、st、ld、及びstが実行されたことを読み取ることができる。
図7は、第1の実施形態に係るプログラム51に含まれる命令コードの分類を例示する図である。図7において、プログラム51内におけるプログラムクリティカルセクション71、プログラム非クリティカルセクション72、及び未実行セクション73が示されている。
判定部13に含まれるプログラムクリティカルセクション判定部25(図1参照)は、動作情報60から抽出された動作クリティカルセクション67に含まれる命令コード(1〜4のプログラムカウンタ値が付されたadd、st、ld、及びst)に基づいて、動作クリティカルセクション67に対応するプログラムクリティカルセクション71を判定する。また、本実施形態においては更にプログラム51内におけるプログラム非クリティカルセクション72及び未実行セクション73が判定される。
プログラムクリティカルセクション71に含まれる命令コード(1〜4のプログラムカウンタ値が付された命令コードadd、st、ld、及びst)は動作クリティカルセクション67に含まれる命令コードと一致する。すなわち、プログラムクリティカルセクション71に含まれる命令コードは動作情報60に含まれる全ての命令コードのうちクリティカルセクション内で実行された命令コードである。プログラム非クリティカルセクション72に含まれる命令コード(5〜11,17〜22のプログラムカウンタ値が付された命令コード)は動作情報60に含まれる全ての命令コードのうちクリティカルセクション外で実行された命令コードである。未実行セクション72に含まれる命令コード(12〜16のプログラムカウンタ値が付された命令コード)は動作情報60に含まれない、すなわち実行されていない命令コードである。なお、動作情報60に含まれる命令コードは実行された命令コードである。
上記判定処理により、プログラム51に含まれる複数の命令コードのうちどの命令コードがクリティカルセクションに含まれるか(クリティカルセクション内で実行されたか)を特定することが可能となる。また、本実施形態においては更にクリティカルセクションに含まれない(クリティカルセクション外で実行された)命令コード、及び実行されていない命令コードを特定することが可能となる。
図8は、第1の実施形態の第1の例に係る分類情報81Aを例示する図である。生成部14(図1参照)は判定部13による判定処理の結果に基づいて分類情報81Aを生成する。分類情報81Aはプログラム51に含まれる各命令コードがどのセクション(プログラムクリティカルセクション71、プログラム非クリティカルセクション72、又は未実行セクション73)に含まれるか(どのセクションで実行されたか)を示している。
本例に係る分類情報81Aは1のプログラムカウンタ値が付された命令コードaddについての情報であり、項目として「命令コードID」及び「分類」を含んでいる。「命令コードID」はプログラム51に含まれる命令コードを一意に特定可能な情報であり、本例ではプログラムカウンタ値が用いられているが、これに限られるものではない。「分類」は対象となる命令コードが含まれるセクションを示す情報である。本例に係る分類情報81Aは命令コードID:1に対応する命令コードaddがクリティカルセクション内で実行されたことを示している。同様に、命令コードがクリティカルセクション外で実行されたか、又は未実行であるかを示す分類情報81Aを生成することができる。このような分類情報81Aを各命令コードについて生成することができる。このような分類情報81Aにより、各命令コードとクリティカルセクションとの関係をプログラムレベルで把握することが可能となる。
図9は、第1の実施形態の第2の例に係る分類情報81Bを例示する図である。本例に係る分類情報81Bは、項目として第1の例に係る分類情報81Aの項目「命令コードID」及び「分類」に加え、「ラベル」を含んでいる。「ラベル」は対象となる命令コードが属するスコープを特定する情報である。このように、命令コードに関する情報を適宜追加することにより、情報の利便性を向上させることができる。
上記本実施形態によれば、プログラム51に含まれる各命令コードがどのセクション(クリティカルセクション内、クリティカルセクション外、又は未実行)に含まれるかを特定する分類情報81A,81Bを生成することができる。これにより、クリティカルセクションに関する情報をプログラムレベルで取得することが可能となり、ユーザに対し有用な情報を提供することが可能となる。
以下に他の実施形態について図面を参照して説明するが、第1の実施形態と同一又は同様の作用効果を奏する箇所については同一の符号を付してその説明を省略する。
(第2の実施形態)
図10は、第2の実施形態に係るプログラム51に含まれる命令コードの分類及び分類情報82を例示する図である。本実施形態に係る動作情報90においては、1〜11のプログラムカウンタ値が付された命令コードがそれぞれ2回ずつ実行されている。これらの命令コードのうち、先に実行された1〜4のプログラムカウンタ値が付された第1の命令コード群91は動作クリティカルセクション67に含まれ、後に実行された1〜4のプログラムカウンタ値が付された第2の命令コード群92は動作クリティカルセクション67に含まれていない。
上記のように、本実施形態においては、プログラム51内の同一のスコープ(1〜4のプログラムカウンタ値が付された命令コード群add,st,ld,及びstからなるスコープ)がクリティカルセクション内及びクリティカルセクション外の両方で実行されている。本実施形態に係る生成部14はこのようにクリティカルセクション内外の両方で実行された命令コードを未判定セクション95に分類する。本実施形態に係る分類情報82は2のプログラムカウンタ値が付された命令コードstについての情報であり、「分類」が「クリティカルセクション未判定」となっている。この分類は対象となる命令コードがクリティカルセクション内及びクリティカルセクション外の両方で実行されたことを意味している。
このように、クリティカルセクション内外の両方で実行された場合を示す分類を追加することにより、より詳細な分類情報82を生成することが可能となる。
(第3の実施形態)
図11は、第3の実施形態に係るプログラム情報生成システム101の機能的構成を例示する図である。図1に示す第1の実施形態に係るプログラム情報生成システム1との機能構成的な比較において、本実施形態に係るプログラム情報生成システム101の抽出部12は動作割込み位置判定部111を更に含み、判定部13はプログラム割込み位置判定部115を更に含む。
本実施形態に係る取得部11が取得するプログラムには、割込み処理を実行させる割込み命令コードが含まれる。動作割込み位置判定部111は動作情報レベルの割込み発生位置を判定する。プログラム割込み位置判定部115はプログラムレベルの割込み発生位置を判定する。生成部14はクリティカルセクションに関する情報に加え、割込み処理に関する情報も含む分類情報を生成する。
図12は、第3の実施形態に係るプログラム情報生成システム101による処理の流れを例示するフローチャートである。先ず、取得部11がプログラム及び動作情報を取得する(S201)。その後、抽出部12が動作クリティカルセクション判定部21の機能により動作クリティカルセクション67を判定し、動作情報から動作クリティカルセクション67に含まれる命令コードを抽出する(S202)。その後又はステップS202と並行して、抽出部12が動作割込み位置判定部111の機能により動作情報レベルの割込み発生位置である動作割込み位置(第1の位置)を判定し、動作割込み位置に対応する命令コードを抽出する(S203)。その後、判定部13がプログラムクリティカルセクション判定部25の機能によりプログラムクリティカルセクション71を判定する(S204)。その後又はステップS204と平行して、判定部13がプログラム割込み位置判定部115の機能により、ステップS203において抽出された命令コードに基づいてプログラムレベルの割込み発生位置であるプログラム割込み位置(第2の位置)を判定する(S205)。その後、生成部14がプログラムクリティカルセクション71及びプログラム割込み位置に基づいて分類情報を生成する(S206)。
上記構成により、クリティカルセクション及び割込み位置に関するプログラムレベルの情報を含む分類情報を生成することが可能となる。
図13は、第3の実施形態に係るソースコード120及びプログラム121を例示する図である。ソースコード120に含まれる割込み関数handlerは割込み処理を実行させる関数である。プログラム121に含まれる、割込み関数handlerに対応する割込み命令コード125はhandlerのラベルが付された複数の命令コード(mov及びst)から構成されている。
なお、複数の割込み関数が存在する場合、本プログラム情報生成システム101による検査対象となる関数を予め指定できるようにしておくことが好ましい。関数の指定はユーザにより手動で行われてもよいし、制御プログラムの処理により自動的に行われてもよい。
図14は、第3の実施形態に係るプログラム121及び動作情報130Aを例示する図である。動作情報130Aはプログラム121に含まれる通常命令コード55、開始命令コード56、終了命令コード57、及び割込み命令コード125の実行順序を示す情報である。動作情報130Aは関数funcAの実行中に割込み関数handlerによる割込み処理が実行された場合の例である。なお、本例に係る動作情報130AにおいてはfuncA_top、funcA_if、Interrupt_disable、Interrupt_enable、及びhandlerの各スコープの動作開始及び動作終了を示す付属ラベル(start及びend)が含まれているが、付属ラベルは必ずしも必要なものではない。
動作情報130Aにおいてクリティカルセクション開始位置65、クリティカルセクション終了位置66、動作クリティカルセクション67、及び動作割込み位置135Aが示されている。動作割込み位置135Aの直前に実行された命令コード(cmp)を直前命令コード137Aと称し、動作割込み位置135Aの直後に実行された命令コード(jne)を直後命令コード138Aと称する。直前命令コード137A及び直後命令コード138Aは動作割込み位置135Aに対応する命令コードである。
本実施形態に係る動作割込み位置判定部111は動作情報130A内において割込み命令コード125に含まれる命令コード(mov及びst)と一致する部分(割込み一致部分)を動作割込み位置135Aと判定する。抽出部12はこのように判定された動作割込み位置135Aに対応する直前命令コード(cmp)137A及び直後命令コード(jne)138Aを動作情報130Aから抽出する。本実施形態に係るプログラム割込み位置判定部115はプログラム121内において直前命令コード137A及び直後命令コード138Aが連続している部分をプログラム割込み位置127Aと判定する。
一致部分(動作割込み位置135A)の検出方法は特に限定されるべきものではなく、周知又は新規な技術を適宜利用した方法であればよい。一致部分は、例えば割込み命令コード(mov及びst)及びラベル(handler)を検索キーワードとして動作情報130A内から検出することができる。また、通常命令コード55、開始命令コード56、終了命令コード57、及びラベルを検索キーワードとして用いてもよい。通常命令コード55、開始命令コード56、終了命令コード57、及びラベルを検索キーワードとして利用することにより、直前命令コード137A及び直後命令コード138Aの並び順を確かめることができるので、一致部分の検出をより高い精度で行うことが可能となる。
図15は、第3の実施形態の第1の例に係るプログラム121に含まれる命令コードの分類及び分類情報141Aを例示する図である。本例は割込み処理がクリティカルセクション外で発生した場合の例である。本例に係る動作情報130A及びプログラム121における直前命令コード137Aは7のプログラムカウンタ値が付された命令コードcmpであり、プログラム非クリティカルセクション72に含まれている。すなわち、割込み処理は7のプログラムカウンタ値が付された命令コードcmpの実行直後であり且つクリティカルセクション外において発生したことが示されている。
本実施形態に係る生成部14は上記のように判定された割込み処理に関する情報を含む分類情報141Aを生成する。分類情報141Aはプログラム121に含まれる各命令コードがどのセクション(クリティカルセクション内(プログラムクリティカルセクション71)、クリティカルセクション外(プログラム非クリティカルセクション72)、又は未実行(未実行セクション73))に含まれるかを示す情報、及び割込み処理との関係を示す情報を含む。
本例に係る分類情報141Aは7のプログラムカウンタ値が付された命令コードcmpについての情報であり、項目として「命令コードID」、「分類」、及び「割込み処理との関係」を含んでいる。「命令コードID」及び「分類」は第1の実施形態と同様である。「割込み処理との関係」は対象となる命令コードの実行タイミングと割込み処理の実行タイミングとの関係を示す情報である。本例においては、「命令コードID」が「7」、「分類」が「クリティカルセクション外」、「割込み処理との関係」が「直前」となっている。「割込み処理との関係」:「直前」は対象となる命令コード(cmp)が割込み処理発生の直前に実行されたことを示している。なお、本例に係る「割込み処理との関係」は対象となる命令コードが割込み発生位置の直前であるか、直後であるか、又はそれ以外であるかを示す情報であるが、これに限られるものではない。このような分類情報141Aにより、各命令コード、クリティカルセクション、及び割込み処理の関係をプログラムレベルで把握することが可能となる。
図16は、第3の実施形態の第2の例に係るプログラム121に含まれる命令コードの分類及び分類情報141Bを例示する図である。本例は割込み処理がクリティカルセクション内で発生した場合の例である。本例に係る動作情報130B及びプログラム121における直前命令コード137Bは1のプログラムカウンタ値が付された命令コードaddであり、プログラムクリティカルセクション71に含まれている。すなわち、割込み処理は1のプログラムカウンタ値が付された命令コードaddの実行直後であり且つクリティカルセクション内において発生したことが示されている。
本例に係る分類情報141Bは1のプログラムカウンタ値が付された命令コードaddについての情報であり、「命令コードID」が「1」、「分類」が「クリティカルセクション内」、「割込み処理との関係」が「直前」となっている。このような分類情報141Bにより、本来割込み処理が発生してはならないクリティカルセクション内で発生した割込み処理に密接に関係する命令コード、すなわち改善が必要である可能性が高い命令コードを容易に発見することが可能となる。
図17は、第3の実施形態の第3の例に係るプログラム121に含まれる命令コードの分類及び分類情報141Cを例示する図である。本例は割込み処理がクリティカルセクション未判定の領域、すなわちクリティカルセクション内外の両方で実行された命令コードの直後において発生した場合の例である。本例に係る動作情報130C及びプログラム121における直前命令コード137Cは2のプログラムカウンタ値が付された命令コードstであり、未判定セクション95に含まれている。すなわち、割込み処理はクリティカルセクション内外の両方で実行された2のプログラムカウンタ値が付された命令コードstの実行直後に発生したことが示されている。
本例に係る分類情報141Cは2のプログラムカウンタ値が付された命令コードstについての情報であり、「命令コードID」が「2」、「分類」が「クリティカルセクション未判定」、「割込み処理との関係」が「直前」となっている。このような分類情報141Cにより、割込み処理に密接に関係する命令コードがクリティカルセクション内外の両方で実行されたものであることを認識することが可能となる。
上記のように本実施形態によれば、クリティカルセクションに関する情報及び割込み処理に関する情報をプログラムレベルで取得することが可能となる。
上記第1〜第3の実施形態において複数種の分類情報81A,81B,82,141A〜141Cを示したが、生成部14により生成される分類情報はこれらに限られるものではなく、適宜な情報の追加、削除、又は変更がなされた情報であってもよい。追加され得る適宜な情報としては、例えば割込み処理の発生回数、各処理(スコープ)の実行時間、各処理(スコープ)間の親子関係(呼び出し関係)等が挙げられる。
上記のように生成された分類情報81A,81b,82,141A〜141C(これらから派生する情報を含む)は様々な目的で利用され得る。分類情報81A,81b,82,141A〜141Cは、例えばGUI(Graphical User Interface)を利用してプログラム51の実行状況を可視化したり、プログラム51(ソースコード50)を検証したりするシステムに提供されてもよいし、そのままコンピュータのディスプレイ等に出力されてもよい。
なお、図2及び図3に示すハードウェア構成は一例であり、プログラム情報生成システム1は様々なハードウェア構成により実現することができる。例えば、プログラム情報生成システム1は単体の汎用コンピュータ、組み込みプロセッサを有する専用装置等により構成されてもよい。
また、図1にはプログラム情報生成システム1の最も基本的な機能ブロックである取得部11、抽出部12、判定部13、及び生成部14を処理の順序で接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、1つの機能ブロックを複数の機能ブロックに分割する構成、これら3つの構成を組み合わせた構成等であってもよい。
プログラム情報生成システム1の機能を実現させる制御プログラムはインストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムはネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めROM等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは上記取得部11、抽出部12、判定部13、及び生成部14の機能を実現する複数のモジュールから構成されてもよい。
(第4の実施形態)
図18は、第4の実施形態に係るプログラム情報生成システム201の機能的構成を例示する図である。本実施形態に係るプログラム情報生成システム201は図11に示す第3の実施形態に係るプログラム情報生成システム101の構成に加え、表示制御部15を含む。
表示制御部15は生成部14により生成された分類情報81A,81B,82,141A〜141C又はこれらに適宜な情報を追加した情報に基づいて、命令コードとクリティカルセクションとの関係、命令コードとクリティカルセクションと割込み処理との関係等を示す表示画像が表示されるように所定の表示部を制御する。表示部とは画像を出力するデバイスであり、例えばディスプレイ、プリンタ等である。表示制御部15は、例えばCPU41、制御プログラム、ロジックIC、RAM43等を利用して構成される。
図19は、第4の実施形態の第1の例に係る表示画像211Aを例示する図である。本例に係る表示画像211Aは命令コードオブジェクト215A及びセクションオブジェクト216A〜216Cを含む。
命令コードオブジェクト215Aはプログラム51,121に含まれる各命令コードを特定するオブジェクトであり、本例においては命令コードID(プログラムカウンタ値)を示している。セクションオブジェクト216A〜216Cは各命令コードが属するセクションの種類を示している。セクションオブジェクト216Aはクリティカルセクション外(プログラム非クリティカルセクション72)を示し、セクションオブジェクト216Bはクリティカルセクション内(プログラムクリティカルセクション71)を示し、セクションオブジェクト216Cは未実行(未実行セクション73)を示している。各セクションオブジェクト216A〜216Cの表示形式(例えば、色、輝度、網掛け、ハッチング、点滅等)は各セクションの種類が視覚的に識別可能となるよう互いに異なっている。このような表示画像211Aにより、プログラム51,121に含まれる各命令コードがどのセクションに属するかを的確に把握することが可能となる。
図20は、第4の実施形態の第2の例に係る表示画像211Bを例示する図である。本例に係る表示画像211Bは図19に示す第1の例に係る表示画像211Aの構成に加え、割込み回数オブジェクト221を含む。
割込み回数オブジェクト221は各命令コードの実行直後に発生した割込み処理の回数を示している。割込み回数オブジェクト221は各命令コードの実行直前に発生した割込み処理の回数を示すものであってもよい。このような表示画像211Bにより、割込み処理の発生頻度と命令コードとの関係、クリティカルセクション内における割込み処理の発生状況等を的確に把握することが可能となる。
図21は、第4の実施形態の第3の例に係る表示画像211Cを例示する図である。本例に係る表示画像211Cは図20に示す第2の例に係る表示画像211Bの構成に加え、クリティカルセクション未判定(未判定セクション95)を示すセクションオブジェクト216Dを含む。このような表示画像211Cにより、クリティカルセクション内外の両方で実行された命令コードの状況を的確に把握することが可能となる。
図22は、第4の実施形態の第4の例に係る表示画像211Dを例示する図である。本例に係る表示画像211Dは図20に示す第2の例に係る表示画像211Bの構成に加え、クリティカルセクション外において割込み処理が発生した部分を示すセクションオブジェクト216E及びクリティカルセクション内において割込み処理が発生した部分を示すセクションオブジェクト216Fを含む。このような表示画像211Dにより、クリティカルセクションと割込み処理との関係をより的確に把握することが可能となる。
図23は、第4の実施形態の第5の例に係る表示画像211Eを例示する図である。本例に係る表示画像211Eは図22に示す第4の例に係る表示画像211Dの構成に加え、クリティカルセクション未判定(未判定セクション95)を示すセクションオブジェクト216D及びクリティカルセクション未判定内において割込み処理が発生した部分を示すセクションオブジェクト216Gを含む。このような表示画像211Eにより、クリティカルセクション内外の両方で実行された命令コードと割込み処理との関係を的確に把握することが可能となる。
図24は、第4の実施形態の第6の例に係る表示画像211Fを例示する図である。本例に係る表示画像211Fは図20に示す第2の例に係る表示画像211Bと同様のセクションオブジェクト216A〜216C及び割込み回数オブジェクト221を含む。本例に係る命令コードオブジェクト215Bは16進数により表示されている。プログラムカウンタ値の代わりにこのような表示を用いてもよい。また、本例に係る表示画像211Fは割込み未発生オブジェクト225を含む。割込み未発生オブジェクト225は実行直後に割込み処理が発生しなかった命令コードに対応して表示される。このような表示画像211Fにより、命令コードと割込み処理との関係をより的確に把握することが可能となる。
図25は、第4の実施形態の第7の例に係る表示画像211Gを例示する図である。本例に係る表示画像211Gはクリティカルセクション内を示すセクションオブジェクト216Bを含まず、クリティカルセクション未判定を示すセクションオブジェクト216Dを含む。このような表示画像211Gであっても、命令コード、クリティカルセクション、及び割込み処理の関係を把握することが可能である。
図26は、第4の実施形態の第8の例に係る表示画像211Hを例示する図である。本例に係る表示画像211Hはセクションの種類を示すオブジェクトとしてクリティカルセクション内を示すセクションオブジェクト216Bのみを含み、割込み回数オブジェクト221及び割込み未発生オブジェクト225を含む。このように特定のセクションの状態のみを表示可能にすることにより、特定のセクションに対する検証をより集中的に行うことが可能となる。
図27は、第4の実施形態の第9の例に係る表示画像211Iを例示する図である。本例に係る表示画像211Iは上記第1〜第8の例に係るセクションオブジェクト216A〜216Gと同様のオブジェクトを含まない。本例に係る表示画像211Iは割込み回数を示すオブジェクトとして、セクションの種類毎に割込み処理を示す割込み回数オブジェクト222A〜222Cを含む。本例においては同一の命令コードに対応する複数の割込み回数オブジェクト222A〜222Cが並列に表示されている(命令コードID:7,8参照)。例えば、割込み回数オブジェクト222Aはクリティカルセクション外における割込み回数を示し、割込み回数オブジェクト222Bはクリティカルセクション内における割込み回数を示し、割込み回数オブジェクト222Cは未判定セクション95における割込み回数を示す。このような表示画像211Iであっても、命令コード、クリティカルセクション、及び割込み処理の関係を的確に把握することが可能である。
図28は、第4の実施形態の第10の例に係る表示画像211Jを例示する図である。本例に係る表示画像211Jは図27に示す第9の例と同様の割込み回数オブジェクト222A〜222Cを含む。本例においては同一の命令コードに対応する複数の割込み回数オブジェクト222A〜222Cが直列に表示されている(命令コードID:7,8参照)。このような表示画像211Jであっても、命令コード、クリティカルセクション、及び割込み処理の関係を的確に把握することが可能である。
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1,101,201 プログラム情報生成システム
11 取得部
12 抽出部
13 判定部
14 生成部
15 表示制御部
21 動作クリティカルセクション判定部
25 プログラムクリティカルセクション判定部
31 情報処理端末
32 サーバ
22 ネットワーク
41 CPU
42 ROM
43 RAM
44 入力デバイス
45 出力デバイス
46 通信I/F
47 バス
50,120 ソースコード
51,121 プログラム
55 通常命令コード
56 クリティカルセクション開始命令コード
57 クリティカルセクション終了命令コード
60,90,130A,130B,130C 動作情報
65 クリティカルセクション開始位置
66 クリティカルセクション終了位置
67 動作クリティカルセクション
71 プログラムクリティカルセクション
72 プログラム非クリティカルセクション
73 未実行セクション
81A,81B,82,141A,141B,141C 分類情報
91 第1の命令コード群
92 第2の命令コード群
95 未判定セクション
111 動作割込み位置判定部
115 プログラム割込み位置判定部
125 割込み命令コード
127A プログラム割込み位置
135A,135B,135C 動作割込み位置
137A,137B,137C 直前命令コード
138A,138B,138C 直後命令コード
211A,211B,211C,211D,211E,211F,211G,211H,211I,211J 表示画像
215A,215B 命令コードオブジェクト
216A,216B,216C,216D,216E,216F,216G セクションオブジェクト
221,222A,222B,222C 割込み回数オブジェクト
225 割込み未発生オブジェクト

Claims (9)

  1. 割込み処理を禁止するクリティカルセクションを開始させる開始命令コード及び前記クリティカルセクションを終了させる終了命令コードを含む複数の命令コードを含むプログラムと、複数の前記命令コードを実行した順序を示す動作情報とを取得する取得部と、
    前記動作情報から、前記開始命令コードと一致する開始一致部分と前記終了命令コードの一致する終了一致部分との間の区間である第1の区間に含まれる前記命令コードを抽出する抽出部と、
    前記第1の区間に含まれる前記命令コードに基づいて、前記第1の区間に対応する前記プログラム内の第2の区間を判定する判定部と、
    前記命令コードが前記第2の区間に含まれるか否かを特定可能にする分類情報を生成する生成部と、
    を備えるプログラム情報生成システム。
  2. 前記分類情報は、前記命令コードが前記第2の区間に含まれることを示す情報及び前記命令コードが第2の区間以外の区間に含まれることを示す情報を含む
    請求項1に記載のプログラム情報生成システム。
  3. 前記抽出部は、前記動作情報に含まれる複数の前記命令コードの中から前記開始一致部分及び前記終了一致部分を検出し、前記開始一致部分と前記終了一致部分との間の区間を前記第1の区間と判定し、
    前記判定部は、前記第1の区間に含まれる1つ以上の前記命令コードを識別する命令コードIDと一致する前記命令コードIDで識別される前記命令コードを含む前記プログラム内の区間を前記第2の区間と判定する、
    請求項1又は2に記載のプログラム情報生成システム。
  4. 前記プログラムは、前記割込み処理を実行させる割込み命令コードを更に含み、
    前記抽出部は、前記割込み命令コード及び前記動作情報に基づいて、前記動作情報内での前記割込み処理の発生位置を示す第1の位置に対応する前記命令コードを前記動作情報から更に抽出し、
    前記判定部は、前記第1の位置に対応する前記命令コードに基づいて、前記第1の位置に対応する前記プログラム内の第2の位置を更に判定し、
    前記生成部は、前記第2の位置及び前記第2の区間に基づいて、前記割込み処理の発生位置が前記第2の区間に含まれるか否かを更に特定可能にする前記分類情報を生成する、
    請求項1〜3のいずれか1項に記載のプログラム情報生成システム。
  5. 前記抽出部は、前記動作情報に含まれる複数の前記命令コードの中から前記割込み命令コードと一致する割込み一致部分を検出し、前記割込み一致部分の直前に位置する直前命令コード及び直後に位置する直後命令コードを検出し、
    前記判定部は、前記プログラムに含まれる複数の前記命令コードのうち前記直前命令コード及び前記直後命令コードが連続している部分を前記第2の位置と判定する、
    請求項4に記載のプログラム情報生成システム。
  6. 前記分類情報に基づいて、前記命令コードと前記第2の区間との関係を示す表示画像が表示されるように表示部を制御する表示制御部、
    を更に備える請求項1〜5のいずれか1項に記載のプログラム情報生成システム。
  7. 前記分類情報に基づいて、前記命令コード、前記第2の区間、及び前記割込み処理の発生位置との関係を示す表示画像が表示されるように表示部を制御する表示制御部、
    を更に備える請求項4又は5に記載のプログラム情報生成システム。
  8. 割込み処理を禁止するクリティカルセクションを開始させる開始命令コード及び前記クリティカルセクションを終了させる終了命令コードを含む複数の命令コードを含むプログラムと、複数の前記命令コードを実行した順序を示す動作情報とを取得するステップと、
    前記動作情報から、前記開始命令コードと一致する開始一致部分と前記終了命令コードの一致する終了一致部分との間の区間である第1の区間に含まれる前記命令コードを抽出するステップと、
    前記第1の区間に含まれる前記命令コードに基づいて、前記第1の区間に対応する前記プログラム内の第2の区間を判定するステップと、
    前記命令コードが前記第2の区間に含まれるか否かを特定可能にする分類情報を生成するステップと、
    を含むプログラム情報生成方法。
  9. コンピュータに、
    割込み処理を禁止するクリティカルセクションを開始させる開始命令コード及び前記クリティカルセクションを終了させる終了命令コードを含む複数の命令コードを含むプログラムと、複数の前記命令コードを実行した順序を示す動作情報とを取得する処理と、
    前記動作情報から、前記開始命令コードと一致する開始一致部分と前記終了命令コードの一致する終了一致部分との間の区間である第1の区間に含まれる前記命令コードを抽出する処理と、
    前記第1の区間に含まれる前記命令コードに基づいて、前記第1の区間に対応する前記プログラム内の第2の区間を判定する処理と、
    前記命令コードが前記第2の区間に含まれるか否かを特定可能にする分類情報を生成する処理と、
    を実行させるプログラム情報生成プログラム。
JP2016124547A 2016-06-23 2016-06-23 プログラム情報生成システム、方法、及びプログラム Expired - Fee Related JP6699889B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016124547A JP6699889B2 (ja) 2016-06-23 2016-06-23 プログラム情報生成システム、方法、及びプログラム
US15/440,635 US20170371664A1 (en) 2016-06-23 2017-02-23 Program information generation system, method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016124547A JP6699889B2 (ja) 2016-06-23 2016-06-23 プログラム情報生成システム、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017228125A JP2017228125A (ja) 2017-12-28
JP6699889B2 true JP6699889B2 (ja) 2020-05-27

Family

ID=60677527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016124547A Expired - Fee Related JP6699889B2 (ja) 2016-06-23 2016-06-23 プログラム情報生成システム、方法、及びプログラム

Country Status (2)

Country Link
US (1) US20170371664A1 (ja)
JP (1) JP6699889B2 (ja)

Also Published As

Publication number Publication date
JP2017228125A (ja) 2017-12-28
US20170371664A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
JP2016519385A (ja) ドライバをロードする方法及び組み込みデバイス
US20200004663A1 (en) Visible elements-based application testing
JP2009116847A (ja) ソフトウェア脆弱点点検装置及び方法
CN111124479B (zh) 配置文件的解析方法、系统及电子设备
JP6268029B2 (ja) テストケース生成装置及びテストケース生成方法
US10635421B2 (en) Electronic device, compiling method and computer-readable recording medium
US20160062871A1 (en) Program information generating system, method, and computer program product
US20210208996A1 (en) Verification automation apparatus, verification automation method, and computer-readable recording medium
JP2016115175A (ja) ソフトウェアテスト装置およびソフトウェアテストプログラム
JP7077909B2 (ja) デッドコード解析プログラム、デッドコード解析方法及びデッドコード解析装置
US10095607B2 (en) Information processing device, computer program product, and testing system with acquiring total execution history
JP6409577B2 (ja) テスト選択プログラム、テスト選択方法、及びテスト選択装置
JP6309795B2 (ja) 情報処理装置、情報処理方法およびプログラム
US10884711B2 (en) Code management system and code management method using a visual programming tool
JP2015176230A (ja) テストケース生成装置、方法、及びプログラム
JP6699889B2 (ja) プログラム情報生成システム、方法、及びプログラム
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP2015184824A (ja) 情報処理プログラム、情報処理方法および情報処理装置
JP2018018197A (ja) ソースコード評価プログラム
WO2017204139A1 (ja) データ処理装置、データ処理方法、およびプログラム記録媒体
JP5755861B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JP6364786B2 (ja) 設計書管理プログラム、設計書管理方法および設計書管理装置
WO2017022016A1 (ja) プログラム情報生成システム、方法、及びプログラム
JP6945434B2 (ja) ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200313

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200331

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200424

R150 Certificate of patent or registration of utility model

Ref document number: 6699889

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees