JPWO2017022016A1 - プログラム情報生成システム、方法、及びプログラム - Google Patents
プログラム情報生成システム、方法、及びプログラム Download PDFInfo
- Publication number
- JPWO2017022016A1 JPWO2017022016A1 JP2017532252A JP2017532252A JPWO2017022016A1 JP WO2017022016 A1 JPWO2017022016 A1 JP WO2017022016A1 JP 2017532252 A JP2017532252 A JP 2017532252A JP 2017532252 A JP2017532252 A JP 2017532252A JP WO2017022016 A1 JPWO2017022016 A1 JP WO2017022016A1
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- program
- instruction code
- information
- indicating
- 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.)
- Abandoned
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
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
プログラム情報生成システムは、非割込み命令コード及び割込み命令コードを含むプログラムと、非割込み命令コード及び割込み命令コードの実行順序を示す動作情報とを取得する取得部と、割込み命令コード及び動作情報に基づいて、動作情報内における割込み発生位置を示す動作割込み位置を判定する動作割込み位置判定部と、非割込み命令コード及び動作割込み位置に基づいて、プログラム内における割込み発生位置を示すプログラム割込み位置を判定するプログラム割込み位置判定部と、プログラム割込み位置を特定するプログラム割込み位置情報を生成する生成部とを備える。
Description
本発明の実施形態は、プログラム情報生成システム、方法、及びプログラムに関する。
プログラム(ソフトウェア)の開発、検査等を行うために、プログラムの実行状況を示す情報を生成するシステムが利用される。例えば、シミュレーションにおいて実行されたプログラムの実行順序及び実行結果を時間軸上に表示するシステムであって、非割込み処理の実行タイミングと割込み処理の実行タイミングとが同一の時間軸上に表示されるシステムがある。
従来のシステムにおいては、割込み処理が発生した位置がシミュレーションの結果を表示する際に用いられる時間軸上に表示される。すなわち、割込み位置をプログラムの動作情報(トレース情報)のレベルで特定することはできるが、プログラムを構成する命令コードのレベルで特定することはできない。
そこで、以下の実施形態では、割込み発生位置をプログラムの命令コードのレベルで特定することができる情報を生成することを目的とする。
実施形態のプログラム情報生成システムは、取得部と、第1の判定部と、第2の判定部と、生成部とを含む。取得部は、非割込み命令コード及び割込み命令コードを含むプログラムと、非割込み命令コード及び割込み命令コードの実行順序を示す動作情報とを取得する。第1の判定部は、割込み命令コード及び動作情報に基づいて、動作情報内における割込み発生位置を示す動作割込み位置を判定する。第2の判定部は、非割込み命令コード及び動作割込み位置に基づいて、プログラム内における割込み発生位置を示すプログラム割込み位置を判定する。生成部は、プログラム割込み位置を特定するプログラム割込み位置情報を生成する。
(第1の実施形態)
図1は、第1の実施形態におけるプログラム情報生成システム1の機能的構成を例示する図である。プログラム情報生成システム1は、取得部11、動作割込み位置判定部12(第1の判定部)、プログラム割込み位置判定部13(第2の判定部)、及び生成部14を含む。
図1は、第1の実施形態におけるプログラム情報生成システム1の機能的構成を例示する図である。プログラム情報生成システム1は、取得部11、動作割込み位置判定部12(第1の判定部)、プログラム割込み位置判定部13(第2の判定部)、及び生成部14を含む。
図2は、プログラム情報生成システム1のハードウェア構成を例示する図である。本例のプログラム情報生成システム1は、情報処理端末21、サーバ22、及びネットワーク23を含む。情報処理端末21は、ユーザが使用するPC(Personal Computer)、タブレット、スマートフォン等であり得る。サーバ22は、プログラム情報生成システム1の管理者が管理するサーバコンピュータ等であり得る。情報処理端末21とサーバ22とは、インターネット、LAN(Local Area Network)等のネットワーク23を介して接続されている。なお、同図においては、情報処理端末21及びサーバ22がそれぞれ1つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
図3は、情報処理端末21及びサーバ22の内部構成を例示する図である。情報処理端末21及びサーバ22は、CPU(Central Processing Unit)31、ROM(Read Only Memory)32、RAM(Random Access Memory)33、入力デバイス34、出力デバイス35、通信IF(Interface)36、及びバス37を含む。CPU31は、ROM32等に記憶された制御プログラムに従ってRAM33をワーキングエリアとして所定の演算処理を行う。入力デバイス34は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス35は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信IF36は、ネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。
取得部11は、検査対象となるプログラムと、当該プログラムに含まれる複数の命令コードの実行順序を示す動作情報とを取得する。プログラムは、非割込み命令コード及び割込み命令コードを含む。取得部11は、例えばCPU31、制御プログラム、ロジックIC(Integrated Circuit)、RAM33等を利用して構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、プログラム及び動作情報は、プログラム情報生成システム1以外のシステム(装置)によって生成されてもよいし、プログラム情報生成システム1内で生成されてもよい。プログラム及び動作情報の生成方法は特に限定されるものではなく、プログラム及び動作情報は公知又は新規の技術を用いて適宜生成されればよい。
動作割込み位置判定部12は、割込み命令コード及び動作情報に基づいて、動作情報内における割込み発生位置を示す動作割込み位置を判定する。動作割込み位置判定部12は、例えばCPU31、制御プログラム、ロジックIC、RAM33等を利用して構成される。
プログラム割込み位置判定部13は、非割込み命令コード及び動作割込み位置に基づいて、プログラム内における割込み発生位置を示すプログラム割込み位置を判定する。プログラム割込み位置判定部13は、例えばCPU31、制御プログラム、ロジックIC、RAM33等を利用して構成される。
生成部14は、プログラム割込み位置を特定するプログラム割込み位置情報を生成する。生成部14は、例えばCPU31、制御プログラム、ロジックIC、RAM33等を利用して構成される。
図4は、プログラム情報生成システム1による処理の流れを例示するフローチャートである。先ず、取得部11がプログラム及び動作情報を取得する(S101)。その後、動作割込み位置判定部12が、プログラムに含まれる割込み命令コード及び動作情報に基づいて、動作情報内における動作割込み位置を判定する(S102)。その後、プログラム割込み位置判定部13が、プログラムに含まれる非割込み命令コード及び動作割込み位置に基づいて、プログラム内におけるプログラム割込み位置を判定する(S103)。その後、生成部14がプログラム割込み位置を特定するプログラム割込み位置情報を生成する(S104)。
図5は、ソースコード51及びプログラム52を例示する図である。ソースコード51及びプログラム52は、互いに対応している。プログラム52は、特定の処理を実行するための命令を記述した情報である。本例のプログラム52は、命令の内容を示す複数の命令コード(add、st、ld、jmp、cmp、jne、mov、jbr等)50、及び1つ以上の連続した命令コード50を含むスコープを特定するラベル(funcA_top、funcA_if、funcA_else、handler等)54を含む。プログラム52は、更に、命令コード50毎に割り当てられたプログラムカウンタ等を更に含んでもよい。
複数の命令コード50には、非割込み命令コード55及び割込み命令コード56が含まれる。割込み命令コード56は、割込み処理を実行させるための命令コードである。非割込み命令コード55は、割込み命令コード56以外の命令コードである。
本例のプログラム52は、ソースコード51の関数funcAに対応している。本例の非割込み命令コード55は、funcA_top、funcA_if、及びfuncA_elseの3つのラベル54が付された複数の命令コード50から構成されている。関数funcAには分岐処理が含まれている。分岐を含まない5つの命令コード(add、st、ld、st、及びjmp)50にfuncA_topのラベル54が付されている。関数funcAのif文及びその内部の処理を示す6つの命令コード(ld、cmp、jne、mov、st、及びjbr)50にfuncA_elseのラベル54が付されている。関数funcAのelse文及びその内部の処理を示す5つの命令コード(ld、cmp、jne、mov、及びst)50にfuncA_elseのラベル54が付されている。
ソースコード51の関数handlerは、割込み処理を実行する関数である。本例の割込み命令コード56は、handlerのラベル54が付された複数の命令コード(mov及びst)50から構成されている。
なお、割込み処理を実行する関数は、予め指定されていることが好ましい。割込み処理を実行する関数は、ユーザにより手動で指定されてもよいし、制御プログラムの処理により自動的に検出され指定されてもよい。
図6は、プログラム52及び動作情報53を例示する図である。動作情報53は、プログラム52に含まれる非割込み命令コード55及び割り込み命令コード56の実行順序を示す情報である。本例の動作情報53においては、複数の命令コード50が実行された順に記述されている。本例の動作情報53は、関数funcAの分岐処理中に関数handlerによる割込み処理が実行された場合の例である。また、本例においては、funcA_top、funcA_if、及びhandlerの各スコープの動作開始及び動作終了を示す付属ラベル(start及びend)57が含まれているが、付属ラベル57は必ずしも必要なものではない。
図7は、動作割込み位置61の判定方法を例示する図である。動作割込み位置判定部12は、プログラム52に含まれる割込み命令コード56及び動作情報53に基づいて、動作情報53内における割込み発生位置を示す動作割込み位置61を判定する。
動作割込み位置判定部12は、動作情報53に含まれる複数の命令コード50の中から割込み命令コード(mov及びst)56と一致する部分(一致部分)を検出し、一致部分を動作割込み位置61と判定する。一致部分の検出方法は、特に限定されるべきものではなく、周知又は新規な技術を適宜利用した方法であればよい。一致部分は、例えば、関数handlerの命令コード(mov及びst)50及びラベル(handlar)54を検索キーワードとして動作情報53内から検出することができる。また、非割込み命令コード55の命令コード(ld、cmp、jne、mov、st、jbr等)50及びラベル(funcA_if等)54を検索キーワードとして用いてもよい。非割込み命令コード55の命令コード50及びラベル54を検索キーワードとして利用することにより、一致部分の前後の命令コード50の並び順を確かめることができるので、一致部分の検出をより高い精度で行うことが可能となる。
本例の動作情報53においては、handlerの割込み命令コード(mov及びst)50がfuncA_ifの動作開始を示す付属ラベル57であるstartと動作終了を示す付属ラベル57であるendとの間に存在している。従って、動作情報53から関数funcA内のif文の中で割込みが発生したことを読み取ることができる。
図8は、プログラム割込み位置65の判定方法を例示する図である。プログラム割込み位置判定部13は、プログラム52に含まれる非割込み命令コード55、及び上述のように判定された動作割込み位置61に基づいて、プログラム52内における割込み発生位置を示すプログラム割込み位置65を判定する。
プログラム割込み位置判定部13は、先ず、動作割込み位置61の直前に位置する直前命令コード62及び直後に位置する直後命令コード63を検出する。その後、プログラム割込み位置判定部13は、非割込み命令コード55内において直前命令コード62及び直後命令コード63が連続している部分(連続部分)を検出し、当該連続部分をプログラム割込み位置65と判定する。連続部分の検出方法は、特に限定されるべきものではなく、周知又は新規な技術を適宜利用した方法であればよい。連続部分(プログラム割込み位置65)は、例えば、直前命令コード(mov)62、直後命令コード(st)63、これらを含むスコープを示すラベル(funcA_if)54等を検索キーワードとして、非割込み命令コード55内から検出することができる。また、動作情報53において直前命令コード62及び直後命令コード63の前後の命令コード(ld、cmp、jne、mov、st、jbr等)50及びラベル(funcA_if等)54を検索キーワードとして用いてもよい。直前命令コード62及び直後命令コード63の前後の命令コード50及びラベル54を検索キーワードとして利用することにより、連続部分の前後における命令コード50の並び順を確かめることができるので、連続部分の検出をより高い精度で行うことが可能となる。
本例の連続部分(プログラム割込み位置65)は、非割込み命令コード55のfuncA_if内の2つの命令コード50:「mov」及び「st」の位置にある。このことから、関数funcA内のif文の中の命令コード50:「mov」の実行後、命令コード50:「st」の実行前に割込みが発生したことがわかる。このように、プログラム割込み位置65によれば、割込み発生位置をプログラム50の命令コード50のレベルで特定することが可能となる。
図9は、第1の例のプログラム割込み位置情報71を例示する図である。生成部14は、プログラム割込み位置65を一意に示すプログラム割込み位置情報71を生成する。本例においては、プログラム52に第1の識別番号68が含まれている。第1の識別番号68は、プログラム52に含まれる全ての命令コード50に対して一意に割り当てられた番号である。本例のプログラム割込み位置情報71は、直前命令コード62に対応する第1の識別番号68を示す直前命令コードID72(命令コード特定情報)を含む。本例の直前命令コードID72:「9」は、プログラム52のfuncA_if内の命令コード50:「mov」に対応している。すなわち、本例のプログラム割込み位置情報71は、funcA_if内の命令コード50:「mov」の実行直後に割込みが発生したことを示している。
図10は、第2の例のプログラム割込み位置情報71を例示する図である。本例においては、プログラム52に第2の識別番号69が含まれている。第2の識別番号69は、プログラム割込み位置65を含むスコープ内の命令コード50に対してのみ一意に割り当てられた番号である。本例のプログラム割込み位置情報71は、直前命令コードID72及び割込み位置ラベル73(スコープ特定情報)を含む。割込み位置ラベル73は、プログラム割込み位置65を含むスコープを示すラベル54を示している。本例の直前命令コードID72:「4」は、プログラム52のfuncA_if内の命令コード50:「mov」に対応している。すなわち、本例のプログラム割込み位置情報71は、図9に示す第1の例と同様に、funcA_if内の命令コード50:「mov」の実行直後に割込みが発生したことを示している。
なお、プログラム割込み位置情報71は、上記例に限られるものではない。例えば、プログラム割込み位置情報71は、直前命令コードID72に加え、又はこれに代えて、直後命令コード63に対応するIDを含んでもよい。
上記のように生成されたプログラム割込み位置情報71は、様々な目的で利用され得る。例えば、プログラム割込み位置情報71は、そのままコンピュータのディスプレイ等に出力されてもよいし、他のシステム、例えばGUI(Graphical User Interface)を利用してプログラム52の実行状況を可視化したり、プログラム52(ソースコード51)を検証したりするシステムに提供されてもよい。
なお、図2及び図3に示すハードウェア構成は一例であり、プログラム情報生成システム1は、様々なハードウェア構成により実現することができる。例えば、プログラム情報生成システム1は、単体の汎用コンピュータ、組み込みプロセッサを有する専用装置等により構成されてもよい。
また、図1には、プログラム情報生成システム1の最も基本的な機能ブロックである取得部11、動作割込み位置判定部12、プログラム割込み位置判定部13、及び生成部14を処理の順序で接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、1つの機能ブロックを複数の機能ブロックに分割する構成、これら3つの構成を組み合わせた構成等であってもよい。
プログラム情報生成システム1の機能を実現させる制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムは、ネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めROM等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは、上記取得部11、動作割込み位置判定部12、プログラム割込み位置判定部13、及び生成部14の機能を実現する複数のモジュールから構成されてもよい。
上記第1の実施形態によれば、割込み発生位置をプログラム52の命令コード50のレベルで特定することが可能となる。
以下に、他の実施形態について図面を参照して説明するが、上記第1の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
(第2の実施形態)
図11は、第2の実施形態におけるプログラム情報生成システム81の機能的構成を例示する図である。プログラム情報生成システム81は、第1の実施形態におけるプログラム情報生成システム1の構成に加え、指定部82を含む。
図11は、第2の実施形態におけるプログラム情報生成システム81の機能的構成を例示する図である。プログラム情報生成システム81は、第1の実施形態におけるプログラム情報生成システム1の構成に加え、指定部82を含む。
指定部82は、プログラム52に含まれる複数のスコープの中から1つ以上のスコープを指定する。指定部82は、例えばCPU31、制御プログラム、ロジックIC、RAM33等を利用して構成される。動作割込み位置判定部12は、指定されたスコープ内における動作割込み位置61を判定する。プログラム割込み位置判定部13は、指定されたスコープ内におけるプログラム割込み位置65を判定する。すなわち、第2の実施形態においては、割込み発生位置を判定するプログラム52の範囲を指定することができる。
指定部82により指定されるスコープは、1つ以上の連続した命令コード50からなる区間である。指定されるスコープは、代表的にはラベル54が付された関数単位の区間であるが、これに限定されるものではない。スコープは、ユーザにより手動で指定されてもよいし、制御プログラムの処理により所定の条件に基づいて自動的に指定されてもよい。
図12は、第2の実施形態におけるプログラム52及び動作情報91を例示する図である。同図に示される指定区間89は、指定部82により指定されたスコープである。本例は、指定部82によりプログラム52の中からfuncA_ifのラベル54が付されたスコープが選択された場合を示している。指定区間89には、6つの命令コード(ld、cmp、jne、mov、st、及びjbr)50と、各命令コード50に一意に割り当てられた識別番号76とが含まれている。
本実施形態における動作割込み位置判定部12は、指定区間89についてのみ動作割込み位置61の判定を行う。動作情報91は、指定区間89における実行順序のみを示している。本例の動作情報91は、指定区間89について繰り返しシミュレーションを行った場合に生成される情報である。本例においては、異なるシミュレーションにおける2種類の動作割込み位置61A,61Bが示されている。
本実施形態におけるプログラム割込み位置判定部13は、動作割込み位置61A,61B及びプログラム52に基づいて、第1の実施形態と同様に、指定区間89内におけるプログラム割込み位置65A,65Bを判定する。プログラム割込み位置65Aは動作割込み位置61Aに対応し、プログラム割込み位置65Bは動作割込み位置61Bに対応する。生成部14は、このように判定されたプログラム割込み位置65A,65Bに基づいて、第1の実施形態と同様にプログラム割込み位置情報71を生成する。
上記第2の実施形態によれば、ユーザが必要とするスコープについてのみ割込み発生位置の判定を行うことができる。これにより、不要な情報の生成を抑制したり、検証結果をスコープ毎に確認しやすくしたりすることが可能となる。
(第3の実施形態)
図13は、第3の実施形態におけるプログラム情報生成システム101の機能的構成を例示する図である。プログラム情報生成システム101は、第2の実施形態におけるプログラム情報生成システム81の構成に加え、表示制御部102を含む。
図13は、第3の実施形態におけるプログラム情報生成システム101の機能的構成を例示する図である。プログラム情報生成システム101は、第2の実施形態におけるプログラム情報生成システム81の構成に加え、表示制御部102を含む。
表示制御部102は、生成部14により生成されたプログラム割込み位置情報に基づいて、割込み命令コード56の実行状況を示す表示画像が表示されるように表示部を制御する。表示部とは、画像を出力するデバイスであり、ディスプレイ、プリンタ等である。表示制御部102は、例えばCPU31、制御プログラム、ロジックIC、RAM33等を利用して構成される。
図14は、第3の実施形態における生成部14により生成されるプログラム割込み位置情報86を例示する図である。本例のプログラム割込み位置情報86は、直前命令コードID72、割込み位置ラベル73、及び割込み回数87(割込み回数情報)を含む。本例の直前命令コードID72及び割込み位置ラベル73は、図10に示す第1の実施形態における第2の例の直前命令コードID72及び割込み位置ラベル73と同一である。割込み回数87は、指定部82により指定されたスコープ(割込み位置ラベル73:「funcA_if」)内の割込み発生位置(直前命令コードID72:「4」が示す命令コード50:「mov」の実行後)65において割込み命令コード56が実行された回数を示している。このようなプログラム割込み位置情報86は、シミュレーションの実行毎に生成される。すなわち、シミュレーション毎に変化する割込み発生位置(直前命令コードID72)及びその位置における累積の割込み発生回数(割込み回数87)に応じてプログラム割込み位置情報86が生成される。
図15は、第3の実施形態における第1の例の表示画像111を例示する図である。本例の表示画像111には、直前命令コードID72に対応する割込み回数87を示す回数オブジェクト100が描画されている。本例においては、直前命令コードID72:「1」が示すプログラム割込み位置65(図10におけるfuncA_if内のld実行後)において割込み処理が1回発生し、直前命令コードID72:「2」が示すプログラム割込み位置65(図10におけるfuncA_if内のcmp実行後)において割込み処理が6回発生し、直前命令コードID72:「4」が示すプログラム割込み位置65(図10におけるfuncA_if内のmov実行後)において割込み処理が4回発生し、直前命令コードID72:「5」が示すプログラム割込み位置65(図10におけるfuncA_if内のst実行後)において割込み処理が2回発生し、直前命令コードID72:「3」及び「6」が示すプログラム割込み位置65(図10におけるfuncA_if内のjne実行後及びjbr実行後)においては割込み処理が発生していないことが示されている。
図16は、第3の実施形態における第2の例の表示画像112を例示する図である。本例の表示画像112においては、直前命令コードID72:「3」及び「6」の部分に、他の部分とは異なる表示形式で表示される強調オブジェクト116が描画されている。表示形式としては、例えば色彩、輝度、点滅等が挙げられる。強調オブジェクト116は、割込み回数87が所定条件を満たしている部分に描画される。本例における所定条件は、割込み回数87が「0」の場合である。所定条件はこれに限られるものではなく、例えば割込み回数87が所定値以上である場合等も考えられる。
図17は、第3の実施形態における第3の例の表示画像113を例示する図である。本例の表示画像113は、スコープ指定領域117A及び結果表示領域118を含む。
スコープ指定領域117Aは、ユーザに、プログラム52に含まれる複数のスコープ(関数)の中から所望のスコープを選択させるための領域である。本例においては、複数のスコープがリスト状に表示されており、ユーザはマウス、タッチパネル等を介して所望のスコープを指定できるようになされている。ユーザが選択したスコープ、割込み処理が発生したスコープ等の欄を、その他の欄の表示形式と異ならせることにより強調表示してもよい。
結果表示領域118は、スコープ指定領域117Aにおいて指定されたスコープにおける割込み処理の実行状況を示すグラフを表示する。
図18は、第3の実施形態における第4の例の表示画像114を例示する図である。本例のスコープ指定領域117Bにおいては、プログラム52に含まれる複数のスコープが、それらの包含関係を把握できるように表示されている。本例では、左側からプログラム全体を示す「root」のボックス、プログラム内のファイルを示すボックス、各ファイルに記述されている関数を示すボックス、各関数に包含される条件分岐「COND」及びループ「LOOP」を示すボックスが、階層的に表示されている。これにより、ユーザはスコープの包含関係を考慮しながら指定を行うことができる。
図19は、第3の実施形態における第5の例の表示画像115を例示する図である。本例の表示画像115は、第1のスコープ指定領域117C、第2のスコープ指定領域117D、及び結果表示領域118を含む。このとき、生成部14は、コールツリー120のスコープの呼び出し関係を示す情報(後述する)から、第2のスコープ指定領域117Dの横軸に表示すべき項目を決定する。
コールツリー120は、プログラム52のスコープをノードとして表示し、それらの呼び出し関係を示している。各ノードの右上に書かれた数字は、そのノード内で発生した割込みの回数を示している。第1のスコープ指定領域117Cは、プログラム52内の比較的広い区間(スコープ)を指定するための領域である。第2のスコープ指定領域117Dは、第1のスコープ指定領域117Cより詳細な区間を指定するための領域である。結果表示領域118には、第2のスコープ指定領域117Dで指定された区間における割込み処理の実行状況を示すグラフが表示される。これにより、コールツリー120に示されたスコープの呼び出し関係を示す情報を用いて、広い区間の指定からより詳細な区間の指定へと2段階でスコープの指定を行うことができる。また、表示制御部102は、コールツリー120を表示部に表示させてもよい。
第1段階の区間指定について説明する。第1のスコープ指定領域117Cの横軸には、ファイル、関数等のプログラムにおいて比較的広い区間を示す項目が列挙されている。縦軸には、各項目の区間の実行中に発生した全ての割込み処理の合計回数が示されている。ここで、ある区間の実行中に発生した全ての割込み処理の合計回数を取得するためには、当該区間を実行中に呼び出された全ての区間において発生した割込み処理の回数を取得する必要がある。コールツリーには、そのような取得すべき全ての割込み処理の回数が示されている。例えば、FuncAにおける割込み発生回数は、分岐部122に示されるように、FuncAとその全ての子孫のノード:FuncA_if及びFuncA_elseで発生した割り込み発生回数の合計値である。従って、FuncAの実行中に発生した割込み処理の合計回数は、5+30+15=50となる。このような情報を参考にして、ユーザは第1のスコープ指定領域117Cの中から比較的広い区間を指定する。
上記のような第1段階の区間指定が終了すると、より詳細な区間を指定する第2段階へと移行する。本例では、第1段階においてFuncAが指定された場合が示されている。第2のスコープ指定領域117Dの横軸には、FuncAの実行中に動作する全ての区間を示す項目が列挙される。これらの列挙される項目は、コールツリー120のFuncAノードの子孫のノードから読み取ることができる。本例では、FuncA、FuncA_if、及びFuncA_elseの3つの項目が表示される。縦軸には、各項目の区間の実行中に発生した全ての割込み処理の合計回数が示されている。第2のスコープ指定領域117Dの縦軸は、第1のスコープ指定領域117Cとは異なり、別の区間で発生した割込み回数を含まない。第2のスコープ指定領域117Dから所望の区間、例えばFuncA_ifを指定すると、FuncA_ifにおける割込み処理の実行状況を示すグラフが結果表示領域118に表示される。
なお、上記プログラム割込み位置情報86及び表示画像111〜115は、単なる例示であり、これらに限られるものではない。図14に示すプログラム割込み位置情報86は割込み回数87を含んでいるが、図10に示すような割込み回数87を含まないプログラム割込み位置情報71であっても、例えばプログラム割込み位置情報71の数をカウントすること等によって、上記のような表示画像111,112を生成することができる。上記プログラム割込み位置情報71,86の内容を適宜変更することにより、様々な表示画像を生成することができる。
上記第3の実施形態によれば、指定部82による指定結果及び生成部14により生成されたプログラム割込み位置情報86を利用して、ユーザが所望するスコープにおける割込み命令コード56の実行状況を視覚的に表現する表示画像111〜115を生成することが可能となる。
(第4の実施形態)
図20は、第4の実施形態におけるプログラム121、動作情報131、及びプログラム割込み位置情報141〜143を例示する図である。第1〜第3の実施形態におけるプログラム52は、1つの割込み命令コード56を含むものであったが、本実施形態におけるプログラム121は、複数(3つ)の割込み命令コード125〜127を含む。これに伴い、1つの動作情報131は3つの動作割込み位置135〜137を含み、3つのプログラム割込み位置情報141〜143が生成される。
図20は、第4の実施形態におけるプログラム121、動作情報131、及びプログラム割込み位置情報141〜143を例示する図である。第1〜第3の実施形態におけるプログラム52は、1つの割込み命令コード56を含むものであったが、本実施形態におけるプログラム121は、複数(3つ)の割込み命令コード125〜127を含む。これに伴い、1つの動作情報131は3つの動作割込み位置135〜137を含み、3つのプログラム割込み位置情報141〜143が生成される。
第1の割込み命令コード125は、ラベル54:「handler_1」が付された2つの命令コード50:「mov」及び「st」からなる。第2の割込み命令コード126は、ラベル54:「handler_2」が付された3つの命令コード50:「mov」、「add」、及び「st」からなる。第3の割込み命令コード127は、ラベル54:「handler_3」が付された3つの命令コード50:「mov」、「sub」、及び「st」からなる。
第1の動作割込み位置135は、第1の割込み命令コード125に対応する。第2の動作割込み位置136は、第2の割込み命令コード126に対応する。第3の動作割込み位置137は、第3の割込み命令コード127に対応する。各動作割込み位置135〜137は、各割込み命令コード125〜127について第1の実施形態と同様の処理を行うことにより判定することができる。
第1のプログラム割込み位置情報141は、第1の動作割込み位置135に対応する。第2のプログラム割込み位置情報142は、第2の動作割込み位置136に対応する。第3のプログラム割込み位置情報143は、第3の動作割込み位置137に対応する。各プログラム割込み位置141〜143は、各動作割込み位置135〜137について第1の実施形態と同様の処理を行うことにより生成することができる。
図21は、第4の実施形態における第1の例の表示画像145を例示する図である。本例の表示画像145においては、3種類の回数オブジェクト155〜157(第1の回数オブジェクト155〜第3の回数オブジェクト157)が各直前命令コードID72(割込み発生位置)において並列に描画されている。第1の回数オブジェクト155は、第1の割込み命令コード125に対応する。第2の回数オブジェクト156は、第2の割込み命令コード126に対応する。第3の回数オブジェクト157は、第3の割込み命令コード127に対応する。例えば、直前命令コードID72:「4」が示す割込み発生位置において、第1の割込み命令コード125が2回実行され、第2の割込み命令コード126が1回実行され、第3の割込み命令コード127が4回実行されたことが示されている。このような表示方法によれば、各割込み発生位置における割込み回数を、各割込み命令コード125〜127毎に容易に把握することができる。
図22は、第4の実施形態における第2の例の表示画像146を例示する図である。本例の表示画像152においては、3種類の回数オブジェクト155〜157が各直前命令コードID72において直列に描画されている。このような表示方法によれば、各割込み発生位置における割込み回数を、全ての割込み命令コード125〜127の割込み回数の合計として容易に把握することができる。
なお、上記表示画像145,146は、単なる例示であり、これらに限られるものではない。例えば、図16に示す強調オブジェクト116が更に描画されてもよい。
上記第4の実施形態によれば、複数の割込み命令コード125〜127が存在する場合に、割込み命令コード125〜127毎に割込み発生位置を確認することができる。また、割込み命令コード125〜127毎に割込み回数を比較することが容易になるため、1つの動作情報131における複数の割込み命令コード125〜127の各挙動を容易に比較することが可能となる。
(第5の実施形態)
図23は、第5の実施形態におけるプログラム88、動作情報151〜153、及びプログラム割込み位置情報158〜160を例示する図である。本実施形態においては、プログラム87に1つの割込み命令コード125が含まれ、複数(3つ)の動作情報151〜153が取得される。これに伴い、各動作情報151〜153に対応して3つのプログラム割込み位置情報158〜160が生成される。
図23は、第5の実施形態におけるプログラム88、動作情報151〜153、及びプログラム割込み位置情報158〜160を例示する図である。本実施形態においては、プログラム87に1つの割込み命令コード125が含まれ、複数(3つ)の動作情報151〜153が取得される。これに伴い、各動作情報151〜153に対応して3つのプログラム割込み位置情報158〜160が生成される。
3つの動作情報151〜153は、例えばプログラム88を異なる条件下で3回実行させることにより取得される。第1の動作情報151における第1の動作割込み位置148と、第2の動作情報152における第2の動作割込み位置149と、第3の動作情報153における第3の動作割込み位置150とは、互いに異なっている。
第1のプログラム割込み位置情報158は、第1の動作情報151(第1の動作割込み位置148)に対応する。第2のプログラム割込み位置情報159は、第2の動作情報152(第1の動作割込み位置149)に対応する。第3のプログラム割込み位置情報160は、第3の動作情報153(第3の動作割込み位置150)に対応する。
図24は、第5の実施形態における第1の例の表示画像161を例示する図である。本例の表示画像161においては、3種類の回数オブジェクト165〜167(第4の回数オブジェクト165〜第6の回数オブジェクト167)が各直前命令コードID72において並列に描画されている。第4の回数オブジェクト165は、第1の動作情報151に対応する。第5の回数オブジェクト166は、第2の動作情報152に対応する。第6の回数オブジェクト167は、第3の動作情報153に対応する。このような表示方法によれば、各割込み発生位置における割込み回数を、各動作情報151〜153毎に容易に把握することができる。
図25は、第5の実施形態における第2の例の表示画像162を例示する図である。本例の表示画像162においては、3種類の回数オブジェクト165〜167が各直前命令コードID72において直列に描画されている。このような表示方法によれば、各割込み発生位置における割込み回数を、全ての動作情報151〜153における割込み回数の合計として容易に把握することができる。
なお、上記表示画像161,162は、単なる例示であり、これらに限られるものではない。例えば、図16に示す強調オブジェクト116が更に描画されてもよい。
上記第5の実施形態によれば、複数の動作情報151〜153が存在する場合に、動作情報151〜153毎に割込み位置を確認することができる。また、動作情報151〜153毎に割込み回数を比較することが容易になるため、1つの割込み命令コード125の複数の動作情報151〜153における挙動を容易に比較することが可能となる。
(第6の実施形態)
図26は、第6の実施形態におけるプログラム121、動作情報171〜173、及びプログラム割込み位置情報181〜184を例示する図である。本実施形態においては、プログラム121に複数(3つ)の割込み命令コード125〜127が含まれ、複数(3つ)の動作情報171〜173が取得される。これに伴い、各割込み命令コード125〜127と各動作情報171〜173との組み合わせに対応して複数(本例では4つ)のプログラム割込み位置情報181〜184が生成される。
図26は、第6の実施形態におけるプログラム121、動作情報171〜173、及びプログラム割込み位置情報181〜184を例示する図である。本実施形態においては、プログラム121に複数(3つ)の割込み命令コード125〜127が含まれ、複数(3つ)の動作情報171〜173が取得される。これに伴い、各割込み命令コード125〜127と各動作情報171〜173との組み合わせに対応して複数(本例では4つ)のプログラム割込み位置情報181〜184が生成される。
本実施形態においては、第1の動作情報171には第1の割込み命令コード125に対応する第1の動作割込み位置175が含まれる。第2の動作情報172には第2の割込み命令コード126に対応する第2の動作割込み位置176が含まれる。第3の動作情報173には第1の割込み命令コード125に対応する第3の動作割込み位置177と、第3の割込み命令コード127に対応する第4の動作割込み位置178とが含まれる。
第1のプログラム割込み位置情報181は、第1の動作割込み位置情報175に対応する。第2のプログラム割込み位置情報182は、第2の動作割込み位置情報176に対応する。第3のプログラム割込み位置情報183は、第3の動作割込み位置情報177に対応する。第4のプログラム割込み位置情報184は、第4の動作割込み位置情報178に対応する。
図27は、第6の実施形態における表示画像191を例示する図である。本例の表示画像191においては、9種類の回数オブジェクト201〜209(第7の回数オブジェクト201〜第15の回数オブジェクト209)が各直前命令コードID72(割込み発生位置)において描画されている。第7の回数オブジェクト201は、第1の動作情報171と第1の割込み命令コード125との組み合わせに対応する。第8の回数オブジェクト202は、第1の動作情報171と第2の割込み命令コード126との組み合わせに対応する。第9の回数オブジェクト203は、第1の動作情報171と第3の割込み命令コード127との組み合わせに対応する。第10の回数オブジェクト204は、第2の動作情報172と第1の割込み命令コード125との組み合わせに対応する。第11の回数オブジェクト205は、第2の動作情報172と第2の割込み命令コード126との組み合わせに対応する。第12の回数オブジェクト206は、第2の動作情報172と第3の割込み命令コード127との組み合わせに対応する。第13の回数オブジェクト207は、第3の動作情報173と第1の割込み命令コード125との組み合わせに対応する。第14の回数オブジェクト208は、第3の動作情報173と第2の割込み命令コード126との組み合わせに対応する。第15の回数オブジェクト209は、第3の動作情報173と第3の割込み命令コード127との組み合わせに対応する。このような表示方法によれば、各割込み発生位置における割込み回数を、各割込み命令コード125〜127と各動作情報171〜173との組み合わせ毎に容易に把握することができる。
なお、上記表示画像191は、単なる例示であり、これらに限られるものではない。例えば、図16に示す強調オブジェクト116が更に描画されてもよい。
上記第6の実施形態によれば、複数の割込み命令コード125〜127及び複数の動作情報171〜173が存在する場合に、各割込み発生位置における割込み回数を両者の組み合わせ毎に確認することができる。また、複数の割込み命令コード125〜127と複数の動作情報171〜173とに基づくプログラム割込み位置情報181〜184を生成することにより、多様な割込み発生パターンを調査することが可能となる。
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
Claims (13)
- 非割込み命令コード及び割込み命令コードを含むプログラムと、前記非割込み命令コード及び前記割込み命令コードの実行順序を示す動作情報とを取得する取得部と、
前記割込み命令コード及び前記動作情報に基づいて、前記動作情報内における割込み発生位置を示す動作割込み位置を判定する第1の判定部と、
前記非割込み命令コード及び前記動作割込み位置に基づいて、前記プログラム内における割込み発生位置を示すプログラム割込み位置を判定する第2の判定部と、
前記プログラム割込み位置を特定するプログラム割込み位置情報を生成する生成部と、
を備えるプログラム情報生成システム。 - 前記第1の判定部は、前記動作情報に含まれる複数の命令コードの中から前記割込み命令コードと一致する一致部分を検出し、
前記第2の判定部は、前記動作情報内において前記一致部分の直前に位置する直前命令コード及び直後に位置する直後命令コードを検出し、前記非割込み命令コード内において前記直前命令コード及び前記直後命令コードが連続している部分を前記プログラム割込み位置と判定する、
請求項1に記載のプログラム情報生成システム。 - 前記プログラム割込み位置情報は、複数の前記非割込み命令コードの中から前記直前命令コード又は前記直後命令コードに該当する前記非割込み命令コードを特定する命令コード特定情報を含む、
請求項2に記載のプログラム情報生成システム。 - 前記プログラム割込み位置情報は、更に、前記プログラム内の複数のスコープのうち前記直前命令コード又は前記直後命令コードを含むスコープを特定するスコープ特定情報を含む、
請求項3に記載のプログラム情報生成システム。 - 前記プログラム割込み位置情報は、更に、前記割込み命令コードが実行された回数を示す割込み回数情報を含む、
請求項3に記載のプログラム情報生成システム。 - 前記プログラムは、複数の前記割込み命令コードを含み、
前記プログラム割込み位置情報は、前記割込み命令コード毎に生成される、
請求項3に記載のプログラム情報生成システム。 - 前記プログラムは、複数の前記割込み命令コードを含み、
前記取得部は、1つの前記プログラムに対して複数の前記動作情報を取得し、
前記プログラム割込み位置情報は、前記動作情報と前記割込み命令コードとの組み合わせ毎に生成される、
請求項3に記載のプログラム情報生成システム。 - 前記プログラム内のスコープを指定する指定部、を更に備え、
前記第1の判定部は、指定された前記スコープ内における前記動作割込み位置を判定し、
前記第2の判定部は、指定された前記スコープ内における前記プログラム割込み位置を判定する、
請求項1に記載のプログラム情報生成システム。 - 前記プログラム割込み位置情報に基づいて、前記割込み命令コードの実行状況を示す表示画像が表示されるように表示部を制御する表示制御部、を更に備える、
請求項1に記載のプログラム情報生成システム。 - 前記プログラム割込み位置情報は、前記プログラム割込み位置と前記割込み命令コードが実行された回数を示す割込み回数とを対応付ける情報を含み、
前記表示制御部は、前記プログラム割込み位置情報に基づいて、前記プログラム割込み位置毎の前記割込み回数を示す前記表示画像が表示されるように前記表示部を制御する、
請求項9に記載のプログラム情報生成システム。 - 前記表示制御部は、前記表示画像内の前記割込み回数が所定条件を満たしている部分を、前記所定条件を満たしていない部分とは異なる表示形式で表示する、
請求項10に記載のプログラム情報生成システム。 - 非割込み命令コード及び割込み命令コードを含むプログラムと、前記非割込み命令コード及び前記割込み命令コードの実行順序を示す動作情報とを取得するステップと、
前記割込み命令コード及び前記動作情報に基づいて、前記動作情報内における割込み発生位置を示す動作割込み位置を判定するステップと、
前記非割込み命令コード及び前記動作割込み位置に基づいて、前記プログラム内における割込み発生位置を示すプログラム割込み位置を判定するステップと、
前記プログラム割込み位置を特定するプログラム割込み位置情報を生成するステップと、
を含むプログラム情報生成方法。 - コンピュータに、
非割込み命令コード及び割込み命令コードを含むプログラムと、前記非割込み命令コード及び前記割込み命令コードの実行順序を示す動作情報とを取得する処理と、
前記割込み命令コード及び前記動作情報に基づいて、前記動作情報内における割込み発生位置を示す動作割込み位置を判定する処理と、
前記非割込み命令コード及び前記動作割込み位置に基づいて、前記プログラム内における割込み発生位置を示すプログラム割込み位置を判定する処理と、
前記プログラム割込み位置を特定するプログラム割込み位置情報を生成する処理と、
を実行させるプログラム情報生成プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/071811 WO2017022016A1 (ja) | 2015-07-31 | 2015-07-31 | プログラム情報生成システム、方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2017022016A1 true JPWO2017022016A1 (ja) | 2017-09-21 |
Family
ID=57942527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017532252A Abandoned JPWO2017022016A1 (ja) | 2015-07-31 | 2015-07-31 | プログラム情報生成システム、方法、及びプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170371704A1 (ja) |
JP (1) | JPWO2017022016A1 (ja) |
CN (1) | CN107430541A (ja) |
WO (1) | WO2017022016A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05134903A (ja) * | 1991-11-13 | 1993-06-01 | Nec Corp | プログラム動作解析装置 |
JP2002108647A (ja) * | 2000-09-29 | 2002-04-12 | Ricoh Co Ltd | トレースメモリを内蔵した半導体装置及びプロセッサ開発支援装置 |
JP2005215816A (ja) * | 2004-01-28 | 2005-08-11 | Hitachi Ltd | ハードウェアモニタを用いた性能プロファイリング方法 |
-
2015
- 2015-07-31 WO PCT/JP2015/071811 patent/WO2017022016A1/ja active Application Filing
- 2015-07-31 JP JP2017532252A patent/JPWO2017022016A1/ja not_active Abandoned
- 2015-07-31 CN CN201580077165.1A patent/CN107430541A/zh not_active Withdrawn
-
2017
- 2017-08-21 US US15/681,523 patent/US20170371704A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05134903A (ja) * | 1991-11-13 | 1993-06-01 | Nec Corp | プログラム動作解析装置 |
JP2002108647A (ja) * | 2000-09-29 | 2002-04-12 | Ricoh Co Ltd | トレースメモリを内蔵した半導体装置及びプロセッサ開発支援装置 |
JP2005215816A (ja) * | 2004-01-28 | 2005-08-11 | Hitachi Ltd | ハードウェアモニタを用いた性能プロファイリング方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107430541A (zh) | 2017-12-01 |
US20170371704A1 (en) | 2017-12-28 |
WO2017022016A1 (ja) | 2017-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9690682B2 (en) | Program information generating system, method, and computer program product | |
TWI468884B (zh) | 次序程式作成裝置 | |
US9921946B2 (en) | Method and system to display and browse program trace using source code decoration | |
US10241808B2 (en) | Determining test application effectiveness | |
JP2016115175A (ja) | ソフトウェアテスト装置およびソフトウェアテストプログラム | |
US20170192957A1 (en) | Methods and analytics systems having an ontology-guided graphical user interface for analytics models | |
JP6245006B2 (ja) | テストケース生成装置、方法、及びプログラム | |
US20170075665A1 (en) | Program information generation system, method, and computer program | |
JP2015179312A (ja) | 情報処理装置、情報処理方法およびプログラム | |
US9384070B2 (en) | Display information generating device, program-execution status display system, program-execution status display method, and computer program product | |
JP2020067697A (ja) | デッドコード解析プログラム、デッドコード解析方法及びデッドコード解析装置 | |
JP6532762B2 (ja) | 情報生成システム、装置、方法、及びプログラム | |
WO2017022016A1 (ja) | プログラム情報生成システム、方法、及びプログラム | |
JP2018106556A5 (ja) | ||
JP5615245B2 (ja) | バグ対策優先度表示システム | |
JP6209985B2 (ja) | 製品設計支援プログラム、製品設計支援方法および製品設計支援装置 | |
JP6462615B2 (ja) | プログラム情報生成システム、方法、及びプログラム | |
JP6699889B2 (ja) | プログラム情報生成システム、方法、及びプログラム | |
JP6661500B2 (ja) | 情報生成システム、装置、方法、及びプログラム | |
US20150254879A1 (en) | Program information generation system, method for program information generation, program for program information generation, and program information display system | |
JP2016045676A (ja) | デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法 | |
WO2018016554A1 (ja) | 障害内容特定装置、障害内容特定方法、及び、障害内容特定プログラムが格納された記録媒体 | |
JP6364786B2 (ja) | 設計書管理プログラム、設計書管理方法および設計書管理装置 | |
Raeder et al. | Model monitor (m 2): Evaluating, comparing, and monitoring models | |
JPWO2015145539A1 (ja) | プログラム抽象図作成装置、及びプログラム抽象図作成プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170524 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180612 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180813 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20181207 |