JP5703968B2 - プログラム開発支援装置およびそのプログラム - Google Patents

プログラム開発支援装置およびそのプログラム Download PDF

Info

Publication number
JP5703968B2
JP5703968B2 JP2011121898A JP2011121898A JP5703968B2 JP 5703968 B2 JP5703968 B2 JP 5703968B2 JP 2011121898 A JP2011121898 A JP 2011121898A JP 2011121898 A JP2011121898 A JP 2011121898A JP 5703968 B2 JP5703968 B2 JP 5703968B2
Authority
JP
Japan
Prior art keywords
program
access
recording
determination
execution
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
JP2011121898A
Other languages
English (en)
Other versions
JP2012248166A (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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
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 Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2011121898A priority Critical patent/JP5703968B2/ja
Publication of JP2012248166A publication Critical patent/JP2012248166A/ja
Application granted granted Critical
Publication of JP5703968B2 publication Critical patent/JP5703968B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理装置のメモリのアクセスを監視し、その監視結果を出力するプログラム開発支援装置、そしてそのプログラムに関する。
近年、情報処理装置に搭載されるソフトウェアの大規模化・多様化に伴い、情報処理装置の利便性が向上される一方、その性能や品質を高水準に保つことが要求されている。例えば、特許文献1には、ソフトウェアの問題箇所の検出精度を向上させるためのソースコード問題予測プログラムが開示されている。このソースコード問題予測プログラムは、プログラムのソースコードに含まれる関数の呼出し関係、繰返し構造、条件分岐構造に関する制御構造情報を抽出し、この制御構造情報からプログラムの実行時に高頻度で繰返し実行される特定領域を予測し、この特定領域を呼び出す関数が存在するか調べ、存在した特定の関数を特定領域への実行頻度に基づいてランク付けするように構成されている。
特開2007−179488号公報
一般的に、情報処理装置は各種データを記録するための外部メモリおよびプログラムを実行するプロセッサを具備している。プロセッサが外部メモリをアクセスするアクセス時間はプロセッサに搭載されるキャッシュメモリなどの内部メモリ、もしくは作業メモリとして搭載されるSDRAMなどへのアクセス時間に比べて時間がかかる。
プロセッサが高頻度で外部メモリをアクセスした場合、外部メモリへのアクセス時間の増加に伴い、プロセッサの主機能である演算処理に影響が出て、情報処理装置の性能に支障がでるという問題が起こり得る。また、外部メモリがフラッシュメモリなどのデータの書き換えが可能な不揮発性メモリの場合には、その高頻度なアクセスによりその寿命を著しく短くすることも考えられる。
このような問題はプログラム設計上では論理的に正しいことから、そのプログラムを運用して初めて不具合が明らかになることもある。
本発明は上記問題を鑑みて考案されたものであり、その課題はコンピュータの性能の低下を引き起こすようなバグやアクセス資源の劣化を故意に導くようなバグの修正箇所を明確にしてその修正を促し、プログラムの開発効率を向上させることが可能なプログラム開発支援装置やプログラムを提供することにある。
上記のような課題を解決する方法として、本発明は以下のように構成される。
請求項1に係る発明は、プログラムを実行するプログラム実行手段と、このプログラム実行手段がアクセスする記憶手段と、プログラム実行手段が記憶手段をアクセスする際に呼び出され、該呼び出された時刻を記録テーブルに順次記録するアクセス時刻記録手段と、このアクセス時刻記録手段によって順次記録された時刻の前後の時間間隔に基づき記憶手段へのアクセスの頻度が異常であるかを判定する第1の判定手段と、この第1の判定手段による判定結果を記録テーブルに記録する記録手段と、この記録手段によって記録された記録テーブルを出力する判定結果出力手段と、を含むアクセス監視手段と、を備えるように構成する。
請求項2に係る発明は、請求項1に記載されたプログラム開発支援装置において、プログラム実行手段は、1の機能のプログラム実行処理においてアクセス監視手段を複数回呼び出し、この呼び出し毎に1の機能のプログラム実行処理の実行箇所を示す実行ポインタをアクセス監視手段に与え、アクセス監視手段は、さらに、プログラム実行手段から与えられた実行ポインタを記録テーブルに順次記録するポインタ記録手段と、このポインタ記録手段によって記録されたそれぞれの実行ポインタの値の差分値に基づき記憶手段へのアクセスの頻度が異常であるかを判定する第2の判定手段と、を備え、記録手段は第1の判定手段および第2の判定手段による判定結果を記録テーブルに記録するように構成する。
請求項3に係る発明は、請求項1に記載されたプログラム開発支援装置において、アクセス監視手段は、さらに、記憶手段をアクセスするアクセス実行手段を備え、該アクセス実行手段は第1の判定手段による判定結果が正常のとき記憶手段をアクセスし、第1の判定手段による判定結果が異常のとき記憶手段のアクセスを未実行とするように構成する。
請求項4に係る発明は、請求項2に記載されたプログラム開発支援装置において、アクセス監視手段は、さらに、記憶手段をアクセスするアクセス実行手段を備え、該アクセス実行手段は第1の判定手段および第2の判定手段の両方の判定結果が正常のときのみ記憶手段をアクセスし、第1の判定手段もしくは第2の判定手段のいずれか一方の判定結果が異常のとき記憶手段のアクセスを未実行とするように構成する。
請求項5に係る発明は、請求項2又は請求項4に記載されたプログラム開発支援装置において、実行ポインタ値をプログラム実行手段が備えるCPUのプログラムカウンタで構成する。
請求項6に係る発明は、請求項1〜請求項5のいずれか1項に記載されたプログラム開発支援装置において、記憶手段をデータの書き換えが可能な不揮発性メモリで構成する。
請求項7に係る発明は、請求項1〜請求項5のいずれか1項に記載されたプログラム開発支援装置において、記録テーブルは該プログラム開発支援装置に着脱可能な外部記憶手段に保存されるように構成する。
請求項8に係る発明は、プログラムを実行するプログラム実行手段と、このプログラム実行手段がアクセスする記憶手段と、を備えたコンピュータに実行させるプログラム開発支援プログラムであって、プログラム実行手段が記憶手段をアクセスする際に呼び出され、該呼び出された時刻を記録テーブルに順次記録するアクセス時刻記録機能と、このアクセス時刻記録機能によって順次記録された時刻の前後の時間間隔に基づき記憶手段へのアクセスの頻度が異常であるかを判定する第1の判定機能と、この第1の判定機能による判定結果を記録テーブルに記録する記録機能と、この記録機能によって記録された記録テーブルを出力する判定結果出力機能と、を含むアクセス監視機能をコンピュータに実行させるように構成する。
請求項9に係る発明は、請求項8に記載されたプログラム開発支援装置プログラムにおいて、プログラム実行手段は、1の機能のプログラム実行処理においてアクセス監視機能を複数回呼び出し、この呼び出し毎に1の機能のプログラム実行処理の実行箇所を示す実行ポインタをアクセス監視機能に与え、アクセス監視機能は、さらに、プログラム実行手段から与えられた実行ポインタを記録テーブルに順次記録するポインタ記録機能と、このポインタ記録機能によって記録されたそれぞれの実行ポインタの値の差分値に基づき記憶手段へのアクセスの頻度が異常であるかを判定する第2の判定手段と、を備え、記録機能は第1の判定機能および第2の判定機能による判定結果を記録テーブルに記録するように構成する。
本発明によれば、プログラム実行手段は記憶手段をアクセスする際、アクセス監視手段を呼び出す。該アクセス監視手段はプログラム実行手段に呼び出される度に、記憶手段へのアクセス要求時刻を記録テーブルに順次記録し、この記録された時刻情報の前後の時間間隔に基づき記憶手段へのアクセスの頻度が異常であるかを判定する。また、アクセス監視手段は、プログラム実行手段がアクセス監視手段を呼び出す際のプログラム実行ポインタを記録テーブルに記録し、この記録された実行ポインタの差分値に基づき記憶手段へのアクセスの頻度が異常であるかを判定する。さらに、アクセス監視手段はこれら判定結果を記録テーブルに記録し、出力する。
このように構成することにより、本発明は所定のアドレス領域に配置される記憶部(フラッシュメモリ等)への高頻度なアクセスを監視し、該監視結果(プログラムカウンタなど)を記録し出力するので、プログラムの適正な修正を促すことができる。よって、プログラム開発者などのユーザは、プログラムカウンタなどを基にバグとなり得るプログラムの異常個所を容易に特定できるためプログラムの開発効率が飛躍的に向上する。
また、本発明のアクセス監視手段は第1の判定手段および第2の判定手段よる判定結果が共に正常判定のときのみ記憶手段をアクセスし、第1の判定手段又は第2の判定手段のいずれか一方の判定結果が異常判定のときは記憶手段のアクセスを未実行とする。
このように構成することにより、フラッシュメモリなどへの高頻度なアクセスを抑制し短命化を阻止することができる。
本発明の一例を示すプログラム開発支援装置の構成図 図1のプログラム開発支援装置の動作説明用の機能相関図 図1のメモリアクセス監視プログラムの処理を示すフローチャート メモリアクセス監視プログラムが保存した監視結果の一例 図3のフローチャートに従って監視結果が更新されることを説明する図
以下、本発明の好適な実施形態について図1〜図5を基に説明する。なお、これらの図面は本発明の一実施形態を説明するための図面であって、これらの図面によって本発明が限定されるものではない。
図1は、本発明の一例を示すプログラム開発支援装置の構成図である。プログラム開発支援装置100は、アプリケーションプログラム103、アプリケーションプログラムを実行するCPU101を備える。また、プログラム開発支援装置100はアプリケーションプログラム103によるアクセス対象メモリ106へのアクセス頻度を監視するメモリアクセス監視プログラム104を備える。さらに、プログラム開発支援装置100はメモリアクセス監視プログラム104の監視結果を保存する監視結果保存用メモリ105を備える。なお、本発明においてはCPU101およびアプリケーションプログラム103を総じてプログラム実行手段と定義し、アクセス対象メモリ106を記憶手段と定義している。また、メモリアクセス監視プログラム104をアクセス監視手段と定義しており、メモリアクセス監視プログラム104の監視結果である監視結果105aを記録テーブルとして定義している。
メモリアクセス監視プログラム104には、アクセス時刻記録手段、第1の判定手段、そして、記録手段および判定結果出力手段が含まれる。アクセス時刻記録手段は、アプリケーションプログラム103による呼び出された時刻を、監視結果105aに順次記録するプログラムである。第1の判定手段判は、アクセス時刻記録手段よって記録された時刻情報の前後の時間間隔に基づき、メモリへのアクセス頻度が異常であるかを判定するプログラムである。また、記録手段は、第1の判定手段による判定結果を監視結果105aに記録するプログラムである。判定結果出力手段は不図示の表示装置などに監視結果105aを出力するプログラムである。
また、メモリアクセス監視プログラム104には、さらにポインタ記録手段、そして第2の判定手段が備えられている。ポインタ記録手段はアプリケーションプログラム103がメモリアクセス監視プログラムを呼び出した(すなわちメモリアクセスを要求したとき)のプログラム実行ポインタを監視結果105aに記録するプログラムである。このプログラムはその実行の都度、前述プログラム実行ポインタを監視結果105aに順次記録する。また、第2の判定手段はポインタ記録手段によって記録されたそれぞれの実行ポインタ値の差分値に基づいて、アプリケーションプログラム103によるメモリへのアクセス頻度が異常であるかを判定するプログラムである。
また、前述記録手段は第1の判定手段による判定結果のみならず、第2の判定手段による判定結果も監視結果105aに記録することができる。
なお、アプリケーションプログラム103およびメモリアクセス監視プログラム104はプログラム保存用メモリ102に保持されているが、それぞれのプログラムは別媒体のメモリに保持されていても構わない。
また、アクセス監視対象メモリ106は、CPU101によってアクセスされる書き換えが可能な記憶手段であり、プログラム開発支援装置100に備え付け、もしくは着脱可能なフラッシュメモリや外部記憶装置などである。なお、アクセス監視対象メモリ106はCPU101の内部に搭載されるキャッシュメモリ(不図示)やプログラム保存用メモリ102などのローカルメモリに比べて、そのアクセスに時間を要するものである。
図2は図1に示すアプリケーションプログラム103とメモリアクセス監視プログラム104の動作を説明するための相関図である。
アプリケーションプログラム103は処理103aを実行するプログラムである。アプリケーションプログラム103は処理103aの実行の過程でメモリアクセス監視プログラム104を呼び出す(コールする)ことにより、所定アドレスに配置されたメモリをアクセスするように構成されている。すなわち、アプリケーションプログラム103はメモリアクセス監視プログラム104をコールことによって、メモリへのアクセスを要求する。
この例の場合、アプリケーションプログラム103は時点P0と時点P1、そして時点P2の3箇所でメモリアクセス監視プログラム104をコールしている。このコールの際、アプリケーションプログラム103はアクセス先のアドレス、データサイズ、そしてリード/ライトなどを含めたコマンドを引数としてメモリアクセス監視処理104に与えている。
このようにしてコールされたメモリアクセス監視プログラム104は引数として与えられたアドレス先のメモリをアクセスする。このアクセスの際、メモリアクセス監視プログラム104は保存用メモリ105にその監視結果(図4の監視結果105a)を記録する。そして、メモリアクセス監視プログラム104は、記録された監視結果を不図示の表示装置などに出力することによってプログラム開発者にプログラムの修正を促す。
なお、メモリアクセス監視プログラム104は、引数として与えられたアドレスがアクセス監視対象メモリ106の配置アドレスであったならば、そのアクセスを監視し監視結果を記録する。一方、引数として与えられたアドレスがアクセス監視対象メモリ以外であったならば、メモリアクセス監視プログラム104はそのアクセスを監視せずアクセス対象のメモリをアクセスして処理を終了する。
このように構成する理由は、プログラム開発支援装置には複数の記憶媒体が搭載されていることもあり、全ての記憶媒体に対するアクセスの頻度を監視して保存するよりも、複数の記憶媒体の内の所定の記憶媒体のみのアクセスの頻度を監視した方がCPU101の負荷が軽減されるからである。従って、メモリアクセス監視プログラム104にはアクセス監視対象メモリ106が配置されるアドレスの割付情報(アドレス範囲)が予め登録されている。そしてコールされる度にメモリアクセス監視プログラム104は、そのアクセス先がアクセス監視対象メモリ106であるか否かをチェックしている。
なお、このような構成以外として、メモリアクセス監視プログラム104はアクセス監視対象メモリ106をアクセスするための専用プログラムとして構成されても良い。この場合にメモリアクセス監視プログラム104は、アプリケーションプログラム103からコールされる度に、アクセス先がアクセス監視対象メモリ106であるかのチェックを行わず、監視結果を保存用メモリ105に記録する。
また、監視結果保存用メモリ105には図4のような監視結果105aが記録されている。この監視結果105aの「呼出元PC」は、アプリケーションプログラム103がメモリアクセス監視プログラム104を呼び出したときのCPU101のプログラムカウンタである。
例えばインデックス0の「呼出元PC」欄は0x12345678である。これは、プログラムカウンタが0x12345678のときにアプリケーションプログラム103がメモリアクセス監視プログラム104を呼び出したことを意味する。
一方、インデックス1の「呼出元PC」欄は0x1234ABCDなので、プログラムカウンタが0x1234ABCDのときにアプリケーションプログラム103がメモリアクセス監視プログラム104を呼び出したことを意味する。
従って、監視結果105aの「呼出元PC」欄には、アプリケーションプログラム103がメモリアクセス監視プログラム104をコールした都度のプログラムカウンタが縦方向に順次記録されている。
また、「呼出異常」はアクセスの要求が高頻度に実行されたか否かを示すステータス情報である。TRUEは高頻度にアクセス要求が実行されたため異常であることを示し、FALSEは正常であることを意味する。この例の場合、インデックス0の「呼出異常」欄は「TRUE」なので、従前にこのインデックに該当するメモリアクセスが高頻度に行われた(要求された)ため異常であることが示されている。
また、「呼出時刻」は、アプリケーションプログラム103によるメモリ監視プログラム104のコール時刻が順次記録されたものである。この例の場合、インデックス0の「呼出時刻」欄には100,102,104,・・・,200のように最新の時刻が一番右に、その左に向けて過去のアクセス時刻が順次記録されている。この記録された時刻値は1の位が0.1msを表しており、100と102との差を時間で表現すると0.2msである。
図3はメモリアクセス監視プログラム104の動きを示すフローチャートである。
メモリアクセス監視プログラム104はアプリケーションプログラム103によって呼び出されることは前述説明した通りである。さらに、アプリケーションプログラム103はメモリアクセス監視プログラム104の呼出の際のCPU101のプログラムカウンタと時刻情報とを不図示の記憶手段に退避している。メモリアクセス監視プログラム104は、これら退避されたプログラムカウンタおよび時刻情報を参照することができることを付け加えておく。
ステップS1において、メモリアクセス監視プログラム104はアプリケーションプログラム103によって退避されたプログラムカウンタを参照し、該プログラムカウンタと図4に示される「呼出元PC」欄に記録された値との一致を、インデックス0から順番にチェックする。一致が確認されると、メモリアクセス監視プログラム104はステップS1を抜け、ステップS2に移行する。一方、全てのインデックスにおいて一致が確認されなかったならば、メモリアクセス監視プログラム104は新たなインデックスを追加し、上述アプリケーションプログラム103によって退避されたプログラムカウンタを該追加したインデックスの「呼出元PC」欄に登録し、ステップS2に移行する。
すなわち、アプリケーションプログラム103がメモリアクセス監視プログラム104をコールする毎に、そのプログラムカウンタと「呼出元PC」欄に記録済みの値がチェックされる。一方、未だそのプログラムカウンタが監視結果105aの「呼出元PC」欄に記録されてない場合には、新たなインデックスが追加され、追加されたインデックスの「呼出元PC」欄にプログラムカウンタ値が新たに記録される。このようにしてアプリケーションプログラム103の実行過程における所定のプログラムカウンタ値に対応したインデックスが都度記録されていく。
ステップS2に移行したメモリアクセス監視プログラム104は、前述アプリケーションプログラム103によって退避された時刻情報を参照し、この時刻情報を該当するインデックス(前述ステップS1にてプログラムカウンタの一致が確認されたインデックス、もしくは、新たに追加されたインデックス)の「呼出時刻」欄に追加して更新し、ステップS3に移行する。
ステップS3に移行したメモリアクセス監視プログラム104は、更新された監視結果105aに基づき、アクセス監視対象メモリ106へのアクセス要求が異常であるか判定する。この判定が異常ならば、メモリアクセス監視プログラム104は処理をステップS4に移行し、正常ならば処理をステップS5に移行する。
ここで、このステップS3における正常/異常判定について説明する。メモリアクセス監視プログラム104は監視結果105aを参照し、以下の判定1、もしくは判定2を条件としてアクセス監視対象メモリ106へのアクセスを判定する。
(判定1)「呼出時刻」欄に記録された時刻情報の今回値(一番右の値)と前回値(今回値の左の値)を差し引いて、その値が10ミリ秒以内であれば異常、10ミリ秒を超過(10ミリ秒は含まれない)していれば正常と判定する。
(判定2)各インデックスそれぞれの「呼出元PC」欄に登録されたプログラムカウンタの値が16以下である場合に異常、17以上であれば正常と判定する。
すなわち、メモリアクセス監視プログラム104はアクセス時刻の差分を算出してその間隔時間をチェックすること、もしくはプログラムカウンタの接近をチェックすることで、アクセス監視対象メモリ106へのアクセス頻度を検出し、正常/異常の判定を行っている。
ステップS3の判定で正常判定したメモリアクセス監視プログラム104はステップS5に移行し、アクセス監視対象メモリ106へのアクセスを実行してそのアクセス結果を戻り値としてアプリケーションプログラム106に与え、処理を終了する。
例えば、アプリケーションプログラム106がアクセス監視対象メモリ106の100番地から16バイト分のデータ読み出しを要求した場合、メモリアクセス監視プログラム104はアクセス監視対象メモリ106の100番地から16バイト分の値を読み取り、その値を戻り値としてアプリケーションプログラム106に与え、処理を終了する。
また、アプリケーションプログラム106がアクセス監視対象メモリ106の200番地を先頭に32バイト分のデータ書き込みを要求した場合、メモリアクセス監視プログラム104はアプリケーションプログラム106から与えられた32バイトのデータを、アクセス監視対象メモリ106の200番地を先頭アドレスとして32バイト書き込み、その書き込みが成功したか否かを戻り値としてアプリケーションプログラム106に与え、処理を終了する。
一方、ステップS3の判定で異常判定したメモリアクセス監視プログラム104は、ステップS4に移行し、監視結果105aの該当インデックスの「呼出異常」欄を「TRUE」に更新する。この更新により、アプリケーションプログラム103によるアクセス監視対象メモリ106へのアクセスが異常である旨を記録する。そして、メモリアクセス監視プログラム104は、このアクセスが異常であり、アクセス不可であるという結果を戻り値としてアプリケーションプログラム103に与え、処理を終了する。このとき、メモリアクセス監視プログラム104はアクセス監視対象メモリ106に対して実際のアクセスを行わない。
図5は、監視結果105aが図3のフローチャートの実行に従って更新されることを説明する図である。図5に示す監視結果105aのインデックス0は、図2の処理103aの時点P0でのアクセス監視対象メモリ106へのアクセスである。また、時点P1でのアクセスがインデックス1であり、時点P2でのアクセスがインデックス2である。すなわち、時点P0でのCPU101のプログラムカウンタは「0x12345678」であり、時点P1でのCPU101のプログラムカウンタは「0x1234ABCD」である。また、時点P2でのCPU101のプログラムカウンタは「0x1234AAAF」ということになる。
この例では、アプリケーションプログラム102がアクセス監視対象メモリ106を時点P2おいて高頻度にアクセスするような不具合(バグ)があったとしている。このとき監視結果105aの「呼出異常」が更新される動きを説明している。
(図5中段の監視結果105a)
インデックス1の「呼出時刻」欄に最新アクセス時刻値201が追加されている。これは図3のステップS2が実行された結果である。「呼出異常」欄はFALSEであり、この段階では正常を意味している。
(図5下段の監視結果105a)
インデックス1の「呼出異常」欄のステータスがTRUEに更新されている。これは図3のステップS4が実行された結果であり、この過程においてアクセスが異常と判定されたものである。図3のステップS3では、追加された時刻値201とその前のアクセス時刻値139とを基に、そのアクセスの頻度がメモリアクセス監視プログラム104によって求められ、正常/異常が判定される。この場合、最新アクセス時刻値が201であり、前のアクセス時刻値が139である。従って、差は201−139=62であり、時間に換算すると6.2msである。よって、当該アクセス監視対象メモリ106へのアクセス要求は10ms以内で複数回あったため、アクセス頻度が高く異常と判定されている。そして、監視結果105aの「呼出時刻」欄がステップS4の処理で異常ステータスに更新されている。なお、この際、実際のメモリアクセスは行われない。
すなわち、図3のステップS3の判定は「呼出時刻」欄にトレンド的に記録されたそれぞれの時刻値の前後関係において、その間隔が100以下(時間換算10ms以下)の値が存在すれば異常であり、101(時間換算10.1ms)以上であれば正常である。
このように、アプリケーションプログラム103はアクセス監視対象メモリ106をアクセスする際、メモリアクセス監視プログラム104を呼び出す。呼び出されたメモリアクセス監視プログラム104は、その呼び出された時間間隔および/またはプログラムカウンタによる実行ポインタの差によってアクセスの頻度を求め、正常か異常かを判定している。判定の結果が正常であればそのままアクセス監視対象メモリ106をアクセスし、判定の結果が異常ならばアクセス監視対象メモリ106をアクセスしない(このようなアクセス制御は不図示であるがアクセス実行手段によって行われる)。
また、本発明において、上述判定1が第1の判定手段に相当し、上述判定2が第2の判定手段に相当する。また、本発明は判定1もしくは判定2のいずれか一方を図3のステップS3に適用させることができる。もしくは、本発明のステップS3に判定1と判定2の両方を適用しても良い。この場合、判定1と判定2の両方が正常と判定されることによりステップS3が「正常」判定され、いずれか一方の判定が異常ならば「異常」判定される。すなわち、判定1と判定2の両方の判定をステップS3に適用した本発明は、メモリへのアクセス要求が行われる時間間隔およびメモリへのアクセス要求が行われるプログラムカウンタの間隔値を基に高頻度なメモリアクセスを検出し、異常の判定を行っている。
また、図3のステップS3の判定処理としては、その都度、正常/異常を判定するようにしてもよいが、複数回分のアクセスをロギングし、複数回に1回の割合で正常/異常を判定するようにすればCPU101の判定処理の負荷を軽減することができる。
また、図3のステップS1がポインタ記録手段に相当し、図3のステップS2がアクセス時刻記録手段に相当している。
また、図3のステップS4が記録手段に相当しており、該記憶手段は、上述判定1のみがステップS3に適用されれば、判定1のみの判定結果を判定結果105aに記録する。一方、上述判定2のみがステップS3に適用されれば、記憶手段は判定2のみの判定結果を判定結果105aに記録することになる。また、判定1と判定2の両方の判定がステップS3に適用された場合、記録手段は判定1と判定2の両方の判定が「正常」という条件にて、判定結果105aに正常という判定結果を記録することになる。
また、図3のステップS3が異常判定された場合、そのときの実際のメモリアクセスは拒否されるが、次のアプリケーション起動時のメモリアクセス時刻が、異常と判定された時刻から10msを超過していれば、そのときのアクセスにおける判定は正常判定される。すなわち一旦異常判定されても、所定の時間経過後のアクセスでは、異常ステータスが解除され、アクセスが再開される。このようにして、本発明はアプリケーションプログラム103によるメモリのアクセス機能を維持するとともに、高頻度なメモリのアクセスを抑制している。
また、本発明の実施例にて説明した各種プログラムは、コンピュータで読み取り可能なフレキシブルディスク、光磁気ディスク、ROM、EPROM、EEPROM、フラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、BD(Blu-ray Disc)等の記憶媒体に記憶され、パソコンなどにインストールされてその機能が提供されることもある。
以上のように構成することにより、本発明は所定のアドレス領域に配置される記憶部(メモリ)への高頻度なアクセスを監視し、該監視結果(プログラムカウンタなど)を記録し出力するので、プログラムの適正な修正を促すことができる。よって、プログラムカウンタなどを基にプログラムの異常個所が容易に特定できるためプログラムの開発効率が飛躍的に向上する。
100 プログラム開発支援装置
101 CPU
102 プログラム保存用メモリ
103 アプリケーションプログラム
104 メモリアクセス監視プログラム
105 監視結果保存用メモリ
105a 監視結果
106 アクセス監視対象メモリ
107 バス

Claims (9)

  1. プログラムを実行するプログラム実行手段と、
    このプログラム実行手段がアクセスする記憶手段と、
    前記プログラム実行手段が前記記憶手段をアクセスする際に呼び出され、
    該呼び出された時刻を記録テーブルに順次記録するアクセス時刻記録手段と、
    このアクセス時刻記録手段によって記録された前記時刻の前後の時間間隔に基づき前記記憶手段へのアクセスの頻度が異常であるかを判定する第1の判定手段と、
    この第1の判定手段による判定結果を記録テーブルに記録する記録手段と、
    この記録手段によって記録された前記記録テーブルを出力する判定結果出力手段と、を含むアクセス監視手段を備えることを特徴とするプログラム開発支援装置。
  2. 請求項1に記載されたプログラム開発支援装置において、
    前記プログラム実行手段は、1の機能のプログラム実行処理において前記アクセス監視手段を複数回呼び出し、この呼び出し毎に前記1の機能のプログラム実行処理の実行箇所を示す実行ポインタを前記アクセス監視手段に与え、
    前記アクセス監視手段は、さらに、
    前記プログラム実行手段から与えられた前記実行ポインタを前記記録テーブルに順次記録するポインタ記録手段と、
    このポインタ記録手段によって記録されたそれぞれの前記実行ポインタの値の差分値に基づき前記記憶手段へのアクセスの頻度が異常であるかを判定する第2の判定手段と、を備え、
    前記記録手段は前記第1の判定手段および前記第2の判定手段による判定結果を前記記録テーブルに記録することを特徴とするプログラム開発支援装置。
  3. 請求項1に記載されたプログラム開発支援装置において、
    前記アクセス監視手段は、さらに、前記記憶手段をアクセスするアクセス実行手段を備え、
    該アクセス実行手段は前記第1の判定手段による判定結果が正常のとき前記記憶手段をアクセスし、
    前記第1の判定手段による判定結果が異常のとき前記記憶手段のアクセスを未実行とすることを特徴とするプログラム開発支援装置。
  4. 請求項2に記載されたプログラム開発支援装置において、
    前記アクセス監視手段は、さらに、前記記憶手段をアクセスするアクセス実行手段を備え、
    該アクセス実行手段は前記第1の判定手段および前記第2の判定手段の両方の判定結果が正常のときのみ前記記憶手段をアクセスし、
    前記第1の判定手段もしくは前記第2の判定手段のいずれか一方の判定結果が異常のとき前記記憶手段のアクセスを未実行とすることを特徴とするプログラム開発支援装置。
  5. 請求項2又は請求項4に記載されたプログラム開発支援装置において、
    前記実行ポインタ値は前記プログラム実行手段が備えるCPUのプログラムカウンタであることを特徴とするプログラム開発支援装置。
  6. 請求項1〜請求項5のいずれか1項に記載されたプログラム開発支援装置において、
    前記記憶手段はデータの書き換えが可能な不揮発性メモリであることを特徴とするプログラム開発支援装置。
  7. 請求項1〜請求項5のいずれか1項に記載されたプログラム開発支援装置において、
    前記記録テーブルは該プログラム開発支援装置に着脱可能な外部記憶手段に保存されることを特徴とするプログラム開発支援装置。
  8. プログラムを実行するプログラム実行手段と、このプログラム実行手段がアクセスする記憶手段と、を備えたコンピュータに実行させるプログラム開発支援プログラムであって、
    前記プログラム実行手段が前記記憶手段をアクセスする際に呼び出され、
    該呼び出された時刻を記録テーブルに順次記録するアクセス時刻記録機能と、
    このアクセス時刻記録機能によって記録された前記時刻の前後の時間間隔に基づき前記記憶手段へのアクセスの頻度が異常であるかを判定する第1の判定機能と、
    この第1の判定機能による判定結果を記録テーブルに記録する記録機能と、
    この記録機能によって記録された前記記録テーブルを出力する判定結果出力機能と、を含むアクセス監視機能を前記コンピュータに実行させるプログラム開発支援プログラム。
  9. 請求項8に記載されたプログラム開発支援装置プログラムにおいて、
    前記プログラム実行手段は、1の機能のプログラム実行処理において前記アクセス監視機能を複数回呼び出し、この呼び出し毎に前記1の機能のプログラム実行処理の実行箇所を示す実行ポインタを前記アクセス監視機能に与え、
    前記アクセス監視機能は、さらに、
    前記プログラム実行手段から与えられた前記実行ポインタを前記記録テーブルに順次記録するポインタ記録機能と、
    このポインタ記録機能によって記録されたそれぞれの前記実行ポインタの値の差分値に基づき前記記憶手段へのアクセスの頻度が異常であるかを判定する第2の判定手段と、を備え、
    前記記録機能は前記第1の判定機能および前記第2の判定機能による判定結果を前記記録テーブルに記録することを特徴とするプログラム開発支援プログラム。

JP2011121898A 2011-05-31 2011-05-31 プログラム開発支援装置およびそのプログラム Expired - Fee Related JP5703968B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011121898A JP5703968B2 (ja) 2011-05-31 2011-05-31 プログラム開発支援装置およびそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011121898A JP5703968B2 (ja) 2011-05-31 2011-05-31 プログラム開発支援装置およびそのプログラム

Publications (2)

Publication Number Publication Date
JP2012248166A JP2012248166A (ja) 2012-12-13
JP5703968B2 true JP5703968B2 (ja) 2015-04-22

Family

ID=47468515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011121898A Expired - Fee Related JP5703968B2 (ja) 2011-05-31 2011-05-31 プログラム開発支援装置およびそのプログラム

Country Status (1)

Country Link
JP (1) JP5703968B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022108135A1 (ko) * 2020-11-20 2022-05-27 삼성전자 주식회사 전자 장치 및 접근 이벤트 시청각화 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108415840A (zh) * 2018-03-14 2018-08-17 百度在线网络技术(北京)有限公司 修复函数缺陷的方法、装置及服务器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01288938A (ja) * 1988-05-16 1989-11-21 Nec Corp 事象発生頻度判定方法
JPH10269105A (ja) * 1997-01-27 1998-10-09 N T T Data Tsushin Kk トレースシステム、リソース解放漏れ検出システム及び記録媒体
JP4940996B2 (ja) * 2007-02-23 2012-05-30 富士通セミコンダクター株式会社 プロファイリング装置およびプロファイリングプログラム
JP2009064112A (ja) * 2007-09-04 2009-03-26 Fujitsu Microelectronics Ltd メモリへのコード転送方法
US7949903B2 (en) * 2008-09-26 2011-05-24 Microsoft Corporation Memory management techniques selectively using mitigations to reduce errors
JP2011090401A (ja) * 2009-10-20 2011-05-06 Daikin Industries Ltd データ記憶装置及びこれを備えたデータ記憶システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022108135A1 (ko) * 2020-11-20 2022-05-27 삼성전자 주식회사 전자 장치 및 접근 이벤트 시청각화 방법

Also Published As

Publication number Publication date
JP2012248166A (ja) 2012-12-13

Similar Documents

Publication Publication Date Title
JP4837456B2 (ja) 情報処理装置
JP4496265B2 (ja) 情報処理装置及び故障予兆判定方法
JP2011070346A (ja) メモリシステム
EP3835944B1 (en) Apparatus and method for source code optimisation
KR20230110649A (ko) 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적수행
JPWO2008093399A1 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
US8359291B2 (en) Architecture-aware field affinity estimation
KR20210018415A (ko) 예측 실패 복구에 대한 레이턴시를 줄이기 위한 이차적 분기 예측 저장
JP5703968B2 (ja) プログラム開発支援装置およびそのプログラム
US20090259835A1 (en) System and method for tracking and recording system configurations of electronic devices
WO2014155228A1 (en) A primary memory module with a record of usage history and applications of the primary memory module to a computer system
KR100706471B1 (ko) 전자기기의 펌웨어 업데이트 방법
JP5418687B2 (ja) 記憶媒体診断装置、記憶媒体診断方法及び記憶媒体診断プログラム
JP2013149112A (ja) 記憶媒体の管理方法
EP1962184A1 (en) Processor and method of performing speculative load operations of the processor
JP6818962B2 (ja) メモリ履歴管理システム
JP2004326773A (ja) プロセッサタイプの決定
JP6079868B2 (ja) エラー分析方法、情報処理装置およびエラー分析プログラム
KR101265530B1 (ko) 악성 프로그램 차단 장치 및 방법
JP6241164B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
WO2021048890A1 (ja) データ記憶制御装置およびデータ記憶制御方法
JP2015121953A (ja) マイクロコンピュータ及び電子制御装置
KR20140144794A (ko) 리코드/리플레이를 위한 퍼포먼스 성능 기록 방법 및 시스템
JP2013186619A (ja) 情報処理装置、情報処理方法、及びプログラム
JP2013125296A (ja) 半導体装置及び半導体装置のメモリ書き換え検知方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150120

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: 20150127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150209

R150 Certificate of patent or registration of utility model

Ref document number: 5703968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees