JP2002116926A - プログラム処理装置およびプログラム処理方法 - Google Patents

プログラム処理装置およびプログラム処理方法

Info

Publication number
JP2002116926A
JP2002116926A JP2000310199A JP2000310199A JP2002116926A JP 2002116926 A JP2002116926 A JP 2002116926A JP 2000310199 A JP2000310199 A JP 2000310199A JP 2000310199 A JP2000310199 A JP 2000310199A JP 2002116926 A JP2002116926 A JP 2002116926A
Authority
JP
Japan
Prior art keywords
processing
program
condition
address
predetermined
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.)
Pending
Application number
JP2000310199A
Other languages
English (en)
Inventor
Kenichi Kamiya
憲一 神谷
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2000310199A priority Critical patent/JP2002116926A/ja
Publication of JP2002116926A publication Critical patent/JP2002116926A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 プログラムを停止させるための条件をハード
ウェアに頼ることなく設定することができ、プログラム
の走行に極力負担をかけずにデバッグ処理等の処理を実
現できるプログラム処理装置および方法を得ること。 【解決手段】 メモリ上に展開されたユーザプログラム
35には、プログラムを停止させてデバッグを行うため
のトリガとなるブレーク命令36が所定の箇所に埋め込
まれている。このアドレスの命令を実行しようとする
と、CPUボード31はブレーク命令でその処理を中断
し、組み込みOS34はブレーク処理関数部37にデバ
ッグ処理が行われるかどうかを問い合わせる。ブレーク
処理関数部37は走行履歴格納部38を参照してデバッ
グ処理の条件の成立の有無を判断し、成立していないと
判断したときにはそのときのアドレスを走行履歴に加え
てユーザプログラム35の処理を再開する。成立してい
ると判断された場合には、デバッグ処理が実行される。
条件が成立している場合のみデバッグ処理が行われるの
で、ユーザプログラム35の走行に極力負担をかけずに
シーケンシャルトリガを実現できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はプログラムの実行に
よって各種の処理を行うプログラム処理装置およびプロ
グラム処理方法に係わり、特に、プログラムの処理速度
を可能な限り低下させずにたとえば温度データの取り込
みやデバッグ等の特定の処理を行うことのできるプログ
ラム処理装置およびプログラム処理方法に関する。
【0002】
【従来の技術】プログラムの誤りあるいはバグを見つけ
て修正するためのプログラムはデバッガと呼ばれてい
る。従来ではデバッガを動かした状態で装置の制御を行
うようなプログラムを動作させると、特許第29746
01号にも記載されているように、デバッガで設定した
所定のアドレスの命令が実行されたり、データがアクセ
スされると、プロセッサがデバッガによるデバッグのた
めのモニタプログラムに移行するようになっていた。し
かしながらこのようなデバッガを使用したプログラム処
理装置では、設定した所定のアドレスにユーザプログラ
ムが到達するたびに、本来の処理が中止されて、モニタ
プログラムに移行してしまう。このため、そのアドレス
が頻繁に出現するようなユーザプログラムでは、全体的
な処理の遅延を招くといった問題がある。
【0003】そこで、特開平7−13799号公報で
は、シーケンシャルブレーク機能を有するプログラム処
理装置を提案している。この提案では、条件Aの成立を
示す信号をラッチするラッチ回路を設けている。そし
て、マスタマイクロコンピュータが条件Aの成立を示す
信号を随時読み込むことができるようにして、条件Aが
成立した後に条件Bが成立した時に限ってユーザプログ
ラムの進行を停止させるようにしている。
【0004】図8は、この特開平7−13799号公報
に開示されたプログラム処理装置の要部を示したもので
ある。この装置は条件A検出回路11と条件B検出回路
12を備えており、条件A検出回路11の出力側には条
件Aが検出されたときその結果を保持するラッチ回路1
4が配置されている。ラッチ回路14の出力と条件B検
出回路12の出力が2入力アンドゲート15に入力され
てアンド(論理積)をとられるようになっている。した
がって、条件Aが成立した状態で条件Bが成立すると、
2入力アンドゲート15の出力がハイレベルとなり、そ
の後段に配置されたブレーク制御部16からブレーク信
号17がマイクロコンピュータ18に供給される。これ
により、ユーザプログラムによるマイクロコンピュータ
応用機器19に対する制御が一時的に中断されることに
なる。条件Aが成立していない状態で条件Bが成立した
ような場合には、2入力アンドゲート15の出力はロー
レベルのままであり、ブレーク信号17はマイクロコン
ピュータ18に供給されることはない。これにより、ユ
ーザプログラムの処理の遅延を軽減することができる。
【0005】
【発明が解決しようとする課題】しかしながら、この提
案のプログラム処理装置では、ラッチ回路14や論理積
をとるアンドゲート15等を使用して複数の条件の成立
に合わせた回路を構成する必要がある。したがって、た
とえば条件Aと条件Bが成立した状態で条件Cが成立し
たときに限ってブレーク信号を発生させるような更に複
雑な装置は、特開平7−13799号公報に開示された
技術だけでは実現することができない。またこのような
条件でデバッグを行おうとすると、ラッチ回路を更に増
設したり、アンドゲートを3入力にしたり、入力アンド
ゲートを多段に接続する必要があり、回路規模が大きく
なるといった問題があった。
【0006】更に、条件Aが1回成立した場合でなく、
たとえばこれが100回成立した後で条件Bが成立した
場合にデバッグあるいはテバッグ以外の所定の処理(た
とえば環境温度の測定)を行うプログラム処理装置を考
えてみる。このようなプログラム処理装置を実現するた
めには、図8に示した条件A検出回路11の後に100
回を計数するカウンタ回路が更に必要となり、回路が複
雑化するだけでなく、バグを処理したり、ユーザプログ
ラムで動作させるある装置に特別の処理を実行させるた
めの条件設定の変更を容易に実現することができないと
いう問題があった。後者については、条件が変更される
たびにハードウェアを組み替えることが必要とされるか
らである。
【0007】したがって、従来のプログラム処理装置で
は簡単な条件設定でユーザプログラムを停止してデバッ
グを行ったり他の処理に移行するというステップを踏ま
ざるを得なかった。このため、結果的にユーザプログラ
ムを不必要に停止させてしまい、ユーザプログラムの処
理速度を実質的に低下させてしまうという問題があっ
た。
【0008】そこで本発明の目的は、プログラムを停止
させるための条件をハードウェアに頼ることなく設定す
ることができ、プログラムの走行に極力負担をかけずに
デバッグ処理等の処理を実現できるプログラム処理装置
および方法を得ることにある。
【0009】
【課題を解決するための手段】請求項1記載の発明で
は、(イ)所定のプログラム上の1または複数の特定の
アドレスの処理を実行しようとするたびにこれを検出し
て処理を一時的に停止させる処理一時停止手段と、
(ロ)前記した所定のプログラムについての走行履歴を
格納する走行履歴格納手段と、(ハ)処理一時停止手段
によって処理が一時的に停止したときに走行履歴格納手
段を参照して走行履歴が特定の処理を実行させるための
予め定めた条件を成立させているかどうかを判別する条
件成立有無判別手段と、(ニ)この条件成立有無判別手
段が条件を成立させていると判別したとき前記した特定
の処理を実行する特定処理実行手段と、(ホ)条件成立
有無判別手段が条件を成立させていないと判別したとき
参照した走行履歴格納手段に新たな走行履歴を追加して
処理を再開させる処理再開手段とをプログラム処理装置
に具備させる。
【0010】すなわち請求項1記載の発明では、デバッ
グ等のある特定の処理を行うに際してその前に実行され
るはずの特定のアドレスの命令、ロード、ストア等の処
理の出現を監視して、これらが所定の順序で出現したと
か、所定の回数出現したという予め定めた条件に合致す
るかどうかをプログラムの走行履歴を基にして条件成立
有無判別手段で判別するようにしている。このために
は、該当する特定のアドレスの処理が実行されようとす
るたびに処理一時停止手段がプログラムの処理を一時的
に停止させる必要があるが、条件が不成立の場合には走
行履歴格納手段に新たな走行履歴を追加してプログラム
の処理を再開させるので、処理が特に遅延することはな
い。しかも、特定の処理を実行するのは条件が合致した
場合のみなので、プログラムが不必要に長時間停止する
といったこともなく、プログラムの処理速度が実質的に
低下することはない。
【0011】請求項2記載の発明では、(イ)所定のプ
ログラム上の1または複数の特定のアドレスの処理を実
行しようとするたびにこれを検出して処理を一時的に停
止させる処理一時停止手段と、(ロ)前記した所定のプ
ログラムについての走行履歴を格納する走行履歴格納手
段と、(ハ)処理一時停止手段によって処理が一時的に
停止したときに走行履歴格納手段を参照して走行履歴が
プログラムのデバッグを実行させるための予め定めた条
件を成立させているかどうかを判別する条件成立有無判
別手段と、(ニ)この条件成立有無判別手段が条件を成
立させていると判別したときプログラムのデバッグを実
行するデバッグ実行手段と、(ホ)条件成立有無判別手
段が条件を成立させていないと判別したとき参照した走
行履歴格納手段に新たな走行履歴を追加して前記した特
定のアドレスから処理を再開させる処理再開手段とをプ
ログラム処理装置に具備させる。
【0012】すなわち請求項2記載の発明では、請求項
1記載の発明における特定の処理をデバッグ処理に特定
したものである。これにより、デバッグを実行するため
の前提となる特定のアドレスの命令の実行、メモリ上の
特定のアドレスへのロード、ストアについて条件を設定
することができるので、条件をうまく設定することで確
度の高いデバッグ処理を行うことができる。また走行履
歴を参照することでデバッグ処理時の解析を助けること
ができる。
【0013】請求項3記載の発明では、請求項1記載の
プログラム処理装置で、条件成立有無判別手段は予め定
められた複数のアドレスを特定の順序で経由して処理が
進行したとき条件を成立させることを特徴としている。
【0014】すなわち請求項3記載の発明では、予め定
められた複数のアドレスを特定の順序で経由して処理が
進行することをデバッグ処理あるいは特定の処理の条件
としている。予め定められた複数のアドレスを特定の順
序で経由して処理が進行する必要があるので、このよう
な条件を詳しく設定することで、処理対象を十分絞り込
むことができる。しかも走行履歴格納手段に格納した走
行履歴を基にして条件の成立の有無を判別するので、各
種の条件を自由に設定することができる。
【0015】請求項4記載の発明では、請求項1記載の
プログラム処理装置で、条件成立有無判別手段は前記し
た特定のアドレスの命令が所定回数実行されるとき条件
を成立させることを特徴としている。
【0016】すなわち請求項4記載の発明では、特定の
アドレスの命令が所定回数実行されることをデバッグ処
理あるいは特定の処理の条件としている。これにより、
環境温度の測定のようにある程度の間隔を置いて処理を
行えばよい項目についてその頻度を適切な値に設定する
ことができ、プログラムの処理もこれにより不必要に遅
延することがない。
【0017】請求項5記載の発明では、請求項1または
請求項2記載のプログラム処理装置で、処理一時停止手
段は、ブレーク命令を用いてCPUの処理をハード的に
停止させることを特徴としている。
【0018】すなわち請求項5記載の発明では、ブレー
ク命令を用いてCPUの処理をハード的に停止させるこ
とにしているが、他の同様の命令で処理を一時的に停止
させてもよい。
【0019】請求項6記載の発明では、(イ)所定のプ
ログラムについてデバッグ処理を行う前に必ず実行され
るべき特定の複数の命令についてそれらに対応するプロ
グラム上のアドレスにブレーク命令を発生させるための
ブレークポイントをそれぞれ設定するブレークポイント
設定ステップと、(ロ)このブレークポイント設定ステ
ップでブレークポイントを設定したプログラムを実行さ
せ、それぞれのブレークポイントでこれらのブレークポ
イントに対応する各アドレスが予め定めた特定の順序で
出現したかをそれらのアドレスの出現を記録する走行履
歴データを基にして判別する判別ステップと、(ハ)こ
の判別ステップで各アドレスが予め定めた特定の順序で
出現したと判別されたときプログラムを停止させて所定
のデバッグ処理に移行するデバッグ処理移行ステップ
と、(ニ)判別ステップで各アドレスが予め定めた特定
の順序で出現していないと判別された場合には前記した
所定のデバッグ処理に移行することなく走行履歴を追加
して前記した所定のプログラムの処理を再開する処理再
開ステップとをプログラム処理方法に具備させる。
【0020】すなわち請求項6記載の発明では、デバッ
グ処理を行う前に必ず実行されるべき特定の複数の命令
についてそれらに対応するプログラム上のアドレスにブ
レーク命令を発生させるためのブレークポイントをそれ
ぞれ設定し、プログラムを実行させたときにそれぞれの
ブレークポイントでこれらのブレークポイントに対応す
る各アドレスが予め定めた特定の順序で出現したかをそ
れらのアドレスの出現を記録する走行履歴データを基に
して判別するようにしている。そして、アドレスが予め
定めた特定の順序で出現したと判別されたときプログラ
ムを停止させて所定のデバッグ処理に移行する一方、こ
れ以外の場合には走行履歴を追加して所定のプログラム
の処理を再開するようにしている。これにより、デバッ
グ処理を効率的に行うことができると共に、プログラム
の走行に極力負担をかけないようにすることができる。
【0021】
【発明の実施の形態】
【0022】
【実施例】以下実施例につき本発明を詳細に説明する。
【0023】図1は本発明の一実施例におけるプログラ
ム処理装置の原理的な構成を表わしたものである。この
プログラム処理装置は、CPU(中央処理装置)や図示
しないROM(リード・オンリ・メモリ)およびRAM
(ランダム・アクセス・メモリ)を組み込んだCPUボ
ード31をハードウェア32として備えている。このC
PUボード31上で動作する組み込みソフトウェア33
は、リアルタイムOS(オペレーションシステム)とし
ての組み込みOS34と、この組み込みOS34で制御
されるユーザプログラム35で構成されている。ただ
し、図示しないメモリに展開された後のユーザプログラ
ム35には、適所にブレーク(break)命令36が埋め
込まれている。組み込みソフトウェア33には、ブレー
ク処理関数部37が配置されており、ブレーク命令36
を実行しようとしたときに、組み込みOS34から処理
を移行されるようになっている。ブレーク処理関数部3
7はプログラムのデバッグを行うかどうかの条件検索を
行う部分であり、プログラムの走行の履歴をとる走行履
歴格納部38を備えている。この走行履歴格納部38は
CPUボード31内のRAMあるいはその他のメモリに
よって実現されている。
【0024】図2は、このプログラム処理装置がデバッ
グを行う場合の処理動作の原理を表わしたものである。
本実施例のプログラム処理装置では、ユーザプログラム
35のアドレスA、アドレスB、アドレスCの順番にそ
れぞれのアドレスの命令が実行されていくときに、アド
レスCが発生した時点でデバッグ処理を行うようになっ
ている。アドレスAやアドレスBを経由しないでアドレ
スCが発生した場合、デバッグ処理は行われない。また
アドレスBが先に発生してアドレスAが次に発生したよ
うな場合にも、デバッグ処理は行われない。
【0025】まず、ユーザプログラム35のアドレスA
が発生すると、ブレーク命令36として図1に示すCP
Uボード31内の図示しないCPUはユーザプログラム
35の動作をすべて停止させて、ブレーク処理に移行す
る(ステップS51)。このブレーク処理の開始によ
り、組み込みOS34はブレーク処理関数部37に処理
を移行する。ブレーク処理関数部37は走行履歴格納部
38の走行履歴を見て、デバッグの条件を満たしている
かどうかを判別する(ステップS52)。アドレスA、
アドレスB、アドレスCの順番にアドレスが発生した場
合には(Y)、デバッグ処理が実行される(ステップS
53)が、この場合にはアドレスAが発生した場合であ
り、これとは異なる(ステップS52:N)。したがっ
て、アドレスAが発生したという履歴を図1の走行履歴
格納部38に格納して(ステップS54)、ユーザプロ
グラムの次の処理に復帰する(ステップS55)。
【0026】これ以後のある時点でアドレスBが発生
し、同様にCPUがユーザプログラム35の動作をすべ
て停止させて、ブレーク処理に移行したとする(ステッ
プS56)。この場合にも先のステップS52と同様に
ブレーク処理関数部37は走行履歴格納部38の走行履
歴を見て、デバッグの条件を満たしているかどうかを判
別する(ステップS57)。アドレスA、アドレスB、
アドレスCの順番にアドレスが発生した場合には
(Y)、デバッグ処理が実行される(ステップS58)
が、この場合にはアドレスBが発生した場合であり、こ
れとは異なる(ステップS57:N)。したがって、ア
ドレスBが発生したという履歴を図1の走行履歴格納部
38に格納して(ステップS54)、ユーザプログラム
の次の処理に復帰する(ステップS55)。
【0027】これ以後のある時点でアドレスCが発生
し、同様にCPUがユーザプログラム35の動作をすべ
て停止させて、ブレーク処理に移行したとする(ステッ
プS59)。この場合にも先のステップS52ならびに
ステップS57と同様にブレーク処理関数部37は走行
履歴格納部38の走行履歴を見て、デバッグの条件を満
たしているかどうかを判別する(ステップS57)。ア
ドレスA、アドレスB、アドレスCの順番にアドレスが
発生した場合には(ステップS60:Y)、デバッグ処
理が実行される(ステップS61)。アドレスCが発生
した場合であっても、それ以前にアドレスAとアドレス
Bがこの順序で発生していなかった場合には(ステップ
S60:N)、アドレスCが発生したという履歴を図1
の走行履歴格納部38に格納して(ステップS54)、
ユーザプログラムの次の処理に復帰することになる(ス
テップS55)。
【0028】このように本実施例ではアドレスA、アド
レスB、アドレスCの順番にアドレスが発生した場合に
限ってデバッグ処理に移行する(ステップS61)。そ
れ以外の場合には現在発生したアドレスを履歴として格
納して(ステップS54)、直ちに元のユーザプログラ
ム35の動作が再開される(ステップS55)。このよ
うにブレーク処理が発生しても、必要な場合のみデバッ
グが行われ、それ以外の場合にはユーザプログラム35
の動作が直ちに再開されるので、ユーザプログラムに過
重な負担を掛けることなく、シーケンシャルトリガが実
現する。
【0029】本実施例ではブレーク動作を発生させるた
めに、機械語の命令部や番地部を、記号(表意コード,
ニーモニックコード)で表現したプログラム言語として
のアセンブラ(Assembler)ベースで命令をブレーク命
令に置換するようにしている。このため、プログラムの
対象はアドレスとそこに格納されている命令である。
【0030】図3は、本実施例のユーザプログラムと走
行履歴格納部に格納されている走行履歴の関係を表わし
たものである。走行履歴格納部38には、ユーザプログ
ラム35が実行されるときのアドレスA、アドレスB、
アドレスCの各アドレスが発生し、デバッグの条件を満
たさなかったとき各命令A、B、Cの実行順にアドレス
A、アドレスB、アドレスCの走行履歴が格納されるよ
うになっている。したがって、図1に示したブレーク処
理関数部37では走行履歴格納部38に格納された走行
履歴を現時点から過去の方向に各アドレスを見ていくこ
とで、デバッグ処理の開始される条件を満たしているか
どうか容易にチェックすることができる。
【0031】ところで本実施例のプログラム処理装置で
は、ユーザプログラムの所定の命令をブレーク命令とし
て使用するため、プログラム上に存在する所定の命令
を、プログラムを展開したメモリ上でブレーク命令に置
換する必要がある。
【0032】図4はブレーク命令への置換の様子を説明
するためのものである。ユーザプログラム35における
デバッグのトリガ条件の1つとして設定するアドレスと
して、ここでは、アドレスAを考える。このアドレスA
の命令aを、プログラムを読み込んだメモリ62上でブ
レーク命令としての“break”に置き換える。この
ブレーク命令を実行することによってブレーク処理に移
行することができるが、ブレーク処理が発生した後に、
条件が合ってデバッグ処理が行われた場合にも、あるい
はその時点では条件が合わなくてデバッグ処理が行われ
なかったような場合にも、アドレスAの命令aが実行さ
れる必要がある。
【0033】そこで、アドレスAの命令aは前記したR
AMの所定の退避領域63のそれぞれ対応する場所に退
避させられる。これを破線で示した矢印64、65で示
す。この退避処理の後に、ユーザプログラム35のアド
レスAに対応して配置された“命令a”が“brea
k”に置き換えられる。
【0034】このようにアドレスAにトリガ条件を設定
する手段、すなわちブレーク命令に置換する手段として
は、データベースのアクセス手順としてのCLI(Comm
andLine Interface)を使用することが一例として可能
である。このCLIにおける外部とのインターフェース
の1つとしては、外部とのシリアル接続を挙げることが
できる。この例では、シリアル接続によって外部の図示
しない端末と接続して、マンマシンインターフェースを
実現して、コマンドを実行することになる。
【0035】図5は、ユーザプログラムのアドレスA、
アドレスB、アドレスCをブレーク命令として設定しデ
バッグ処理を行うための前処理を示したものである。デ
バッグ処理を行うトリガとなるユーザプログラムのアド
レスA、アドレスB、アドレスCの3つのアドレスに前
記した外部の端末を使用してブレークポイントを設定す
る(ステップS71)。ここでは1組のトリガ条件の設
定について示したが、複数組のデバッグ処理を設定する
場合には、以上の作業をそれぞれの組について行うこと
になる。
【0036】図6は、図5に示した前処理を終了した後
のデバッグ処理の流れを表わしたものである。前記した
メモリ上でアドレスA、アドレスB、アドレスCの各命
令をブレーク命令に置換した後のユーザプログラムの実
行が開始される(ステップS81)。この実行過程で各
種の命令が実行されることになるが、命令A、命令Bあ
るいは命令Cが実行される場合には(ステップS82、
S83、S84)、これらをトリガとして、デバッグ処
理のための設定条件を満たしているかどうかの判別が行
われる(ステップS85)。この判別には走行履歴格納
部38の走行履歴のチェックが行われることはもちろん
である。
【0037】この結果、デバッグ処理のための設定条件
(この例の場合にはアドレスA、アドレスB、アドレス
Cの順に命令が実行されること)を満足していれば
(Y)、デバッグ処理が実行される(ステップS8
6)。そして、デバッグ処理の終了後、該当するアドレ
スの本来の命令に戻ってユーザプログラムの実行が再開
される(リターン)。これに対して、ステップS85で
設定条件を満たしていないとされた場合には(N)、ブ
レーク動作により対応するアドレスA、アドレスBまた
はアドレスCを、図1に示した走行履歴格納部38に走
行履歴として追加する(ステップS87)。そして再び
ステップS81に処理が戻ることになる。
【0038】次に本実施例を、第三者がプログラムを故
意に改変することによってデータ破壊の生じる恐れのあ
る問題に適用する場合を説明する。ユーザプログラム等
のプログラムに対応させて、リードオンリなプログラム
あるいはテキストを格納する配置領域とは別に、プログ
ラムがリードライト(read write)を任意に実施するデ
ータ領域が設けられている場合がある。このようなリー
ドライトが可能なデータ領域に第三者がある特定の条件
の下で不正な値をライト(write)すると、データ破壊
が発生する恐れがある。このような問題に対処するのは
従来非常に困難であるとされていた。
【0039】破壊されるメモリの範囲がある程度大きい
場合には、メモリのコピー等の特定の処理関数を実行す
ることでメモリが破壊される危険がある。したがって、
この危険を察知するためには、破壊を引き起こすおそれ
のある処理関数内あるいはその処理関数の先頭に、特定
の条件をチェックするための走行履歴を格納するための
トリガを1つ設定し、その処理関数をコール(call)す
るアドレスにもう1つのトリガを設定するようにすれば
よい。そして、これらのトリガすなわち特定の2つのア
ドレスがシーケンシャルに実行される状態となったとき
に、デバッグ処理として、そのときの引数(メモリに書
き込む先や書き込むサイズ)を格納しているレジスタの
内容情報を得ることで、破壊の発生の有無を判別するこ
とができる。
【0040】具体的には、次の(1)〜(3)に示すよ
うなシーケンシャルトリガとしてのブレーク命令を設定
する。 (1)まず、リードライトが可能なデータ領域に何らか
のデータを書き込む処理Aが実行されることの可能性を
チェックするために、処理Aが実行されるためのアドレ
スにブレーク命令を設定する。 (2)前記したデータ領域をコールする処理Bを実行す
るアドレスにもう1つのブレーク命令を設定する。 (3)処理Bからコールされたメモリ書込関数を実行す
るアドレスに3番目のブレーク命令を設定する。
【0041】そして、(1)、(2)、(3)の順番で
シーケンシャルにこれらのアドレスが発生する事態が出
現したら、その時点でデバッグ処理を実行する。具体的
には次のような処理を行って、メモリの破壊が生じるよ
うな稀に生じる事態を防止することになる。 (4)その処理における特定のアドレス空間へのアクセ
スの有無。すなわち、CPUの図示しないレジスタ内に
おける当該データ値(メモリに書き込む先やそのサイ
ズ)と予め書き込みを指定した値の比較を行う。 (5)その処理が書き込んだデータ値のチェック。すな
わち、CPUの前記したレジスタ内の当該データ値(実
際に書き込む値)と指定した値の比較を行う。
【0042】これら(4)および(5)に示す処理は、
アセンブラレベルでの解析が必要となる。しかしなが
ら、本実施例ではトリガの順番どおりにそれぞれのアド
レスの命令が実行される場合にのみデバッグ処理として
レジスタ情報を取得したり、プログラムの実行を停止さ
せる等の処理を行う。このように、デバッグ処理に移行
する前に、ある関数を実行するまでの経緯を特定してい
るので、かなり絞り込んだ解析が可能になる。また、ス
タックされたデータが破壊されてそのバックトレースが
行えないような状態に陥っても、本発明による複数のト
リガ設定の情報を用いてバグの解析を行うことができる
ようになる。ただしこの解析自体には、プログラムの動
作を停止させてコンソールから確認したり、コンソール
に所定の情報を表示する等の情報を確認する手段を必要
とする。
【0043】発明の変形例
【0044】先の実施例では、アドレスA、アドレス
B、アドレスCの順に命令が実行されることを条件とし
てデバッグ処理が実行される場合を説明した。トリガの
ための条件はこれ以外の各種のものであってもよい。本
発明の変形例では、アドレスAの命令aがM回(Mは2
以上の整数)実行されるたびにデバッグ処理を実行する
ようにしている。
【0045】図7は、本発明の変形例におけるデバッグ
処理の流れを表わしたものである。まず図1に示した走
行履歴格納部38におけるアドレスAについてのカウン
ト値が“0”に初期化され(ステップS91)、プログ
ラムの実行が開始される(ステップS92)。この後、
アドレスAの命令が実行されるたびに(ステップS9
3:Y)、図1に示したブレーク処理関数部37は走行
履歴格納部38にソフトウェアで実現したアドレスAの
カウンタのカウント値が“M”に到達したかどうかを判
別する(ステップS94)。“M”に到達した場合には
(Y)、デバッグ処理を実行する(ステップS95)。
そして再びステップS91に戻って(リターン)、処理
を再開する。
【0046】これに対して、ステップS94でアドレス
Aについてのカウント値が“M”に到達していない場合
には(N)、そのカウント値を“1”だけカウントアッ
プして(ステップS96)、ステップS92に戻り、プ
ログラムの実行を再開する。なお、ソフトウェア的なカ
ウンタは、前回のカウント値を“1”ずつカウントアッ
プした値を走行履歴格納部38の所定の領域に上書きす
ることで実現するが、このようなカウンタを配置せず
に、アドレスAを走行履歴として格納している回数をス
テップS94の処理で計数して、カウント値が“M”に
到達したかどうかの判別を行うようにしてもよい。
【0047】この変形例のプログラム処理装置は、デバ
ッグの処理だけでなく、その他の一般的な電子機器の処
理にも応用することができる。たとえば、ある処理が1
0回行われたら環境温度を測定する処理を実行するとい
った具合である。もちろん、先の実施例のように複数の
命令がある定められた順番で実行されるとき、デバッグ
以外の処理を適用することで、これをデバッグの処理装
置以外の各種の電子機器に適用することができる。
【0048】以上説明した実施例および変形例では、プ
ログラムの所定のアドレスの命令を実行しようとする際
のブレーク処理を例に挙げて説明した。本発明でブレー
ク処理の対象となるものはこのような命令の実行以外で
あってもよい。たとえばメモリ上の特定のアドレスへプ
ログラムやデータをロード(load)あるいはストア(st
ore)する処理を実行する場合であっても、ブレーク処
理を発生させて、これをトリガにすることによってプロ
グラムの走行に極力負担をかけずにシーケンシャルトリ
ガを実現することが可能である。ただし、この際には特
定のアドレスへのロードあるいはストアのアクセスに対
して監視する手段が必要となる。このような手段は現実
的にはハードウェアで構成することも効果的である。
【0049】また、実施例では外部のシリアル接続の端
末とのコマンド実行について説明したが、たとえばテル
ネット(telnet)等のサーバ機能を使用してイーサネッ
ト(登録商標)(erthanet)を用いたLAN(ローカル
エリアネットワーク)ケーブルによって、デバッグ等の
対象となる装置に接続し、そのユーザプログラム等の検
査あるいは制御対象となるプログラムの所望の位置にブ
レーク処理を発生させるためのトリガ条件を設定するよ
うにしてもよい。
【0050】更に実施例ではユーザプログラムをメモリ
上に展開したものに対してブレーク命令を組み込むこと
にしたが、ブレーク命令をすでに組み込んだプログラム
を電子機器等の装置にロードしてこれを実行するように
してもよい。
【0051】
【発明の効果】以上説明したように請求項1、請求項3
〜請求項6記載の発明によれば、デバッグ等のある特定
の処理を行うに際してその前に実行されるはずの特定の
アドレスの命令、ロード、ストア等の処理の出現を監視
して、これらが所定の順序で出現したとか、所定の回数
出現したという予め定めた条件に合致するかどうかをプ
ログラムの走行履歴を基にして条件成立有無判別手段で
判別するようにしている。したがって、特別のハードウ
ェアを設けることなく、条件を絞った形でデバッグ処理
等の特定の処理を実行させることができる。しかも、特
定の処理を実行するのは条件が合致した場合のみなの
で、プログラムが不必要に長時間停止するといったこと
もなく、プログラムの処理速度が実質的に低下すること
はない。
【0052】また請求項2記載の発明によれば、デバッ
グを実行するための前提となる特定のアドレスの命令の
実行、メモリ上の特定のアドレスへのロード、ストアに
ついて条件を設定することができるので、条件をうまく
設定することで確度の高いデバッグ処理を行うことがで
きる。また走行履歴を参照することでデバッグ処理時の
解析を助けることができる。
【0053】更に請求項4記載の発明によれば、特定の
アドレスの命令が所定回数実行されることをデバッグ処
理あるいは特定の処理の条件としているので、環境温度
の測定のようにある程度の間隔を置いて処理を行えばよ
い項目についてその頻度を適切な値に設定することがで
き、プログラムの処理が不必要に遅延することがない。
【0054】また請求項6記載の発明によれば、デバッ
グ処理を行う前に必ず実行されるべき特定の複数の命令
についてそれらに対応するプログラム上のアドレスにブ
レーク命令を発生させるためのブレークポイントをそれ
ぞれ設定し、プログラムを実行させたときにそれぞれの
ブレークポイントでこれらのブレークポイントに対応す
る各アドレスが予め定めた特定の順序で出現したかをそ
れらのアドレスの出現を記録する走行履歴データを基に
して判別するようにしたので、状況に応じてブレークポ
イントの設定あるいは変更を自在に行うことができ、デ
バッグ処理を効率的に行うことができると共に、プログ
ラムの走行に極力負担をかけないようにすることができ
る。
【図面の簡単な説明】
【図1】本発明の一実施例におけるプログラム処理装置
の原理的な構成を表わしたブロック図である。
【図2】本実施例でプログラム処理装置がデバッグを行
う場合の処理動作の原理を表わした説明図である。
【図3】本実施例のユーザプログラムと走行履歴格納部
に格納されている走行履歴の関係を表わした説明図であ
る。
【図4】本実施例でユーザプログラムの所定の命令をブ
レーク命令に置換する原理を示した説明図である。
【図5】ユーザプログラムのアドレスA、アドレスB、
アドレスCをブレーク命令として設定しデバッグ処理を
行うための前処理を示した流れ図である。
【図6】本実施例で図5に示した前処理を終了した後の
デバッグ処理の流れを表わした流れ図である。
【図7】本発明の変形例におけるデバッグ処理の流れを
表わした流れ図である。
【図8】従来提案されたプログラム処理装置の要部を示
したブロック図である。
【符号の説明】
31 CPUボード 32 ハードウェア 33 ソフトウェア 34 組み込みOS 35 ユーザプログラム 36 ブレーク(break)命令 37 ブレーク処理関数部 38 走行履歴格納部 62 メモリ 63 退避領域

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 所定のプログラム上の1または複数の特
    定のアドレスの処理を実行しようとするたびにこれを検
    出して処理を一時的に停止させる処理一時停止手段と、 前記所定のプログラムについての走行履歴を格納する走
    行履歴格納手段と、 前記処理一時停止手段によって処理が一時的に停止した
    ときに前記走行履歴格納手段を参照して走行履歴が特定
    の処理を実行させるための予め定めた条件を成立させて
    いるかどうかを判別する条件成立有無判別手段と、 この条件成立有無判別手段が前記条件を成立させている
    と判別したとき前記特定の処理を実行する特定処理実行
    手段と、 前記条件成立有無判別手段が前記条件を成立させていな
    いと判別したとき参照した走行履歴格納手段に新たな走
    行履歴を追加して処理を再開させる処理再開手段とを具
    備することを特徴とするプログラム処理装置。
  2. 【請求項2】 所定のプログラム上の1または複数の特
    定のアドレスの処理を実行しようとするたびにこれを検
    出して処理を一時的に停止させる処理一時停止手段と、 前記所定のプログラムについての走行履歴を格納する走
    行履歴格納手段と、 前記処理一時停止手段によって処理が一時的に停止した
    ときに前記走行履歴格納手段を参照して走行履歴がプロ
    グラムのデバッグを実行させるための予め定めた条件を
    成立させているかどうかを判別する条件成立有無判別手
    段と、 この条件成立有無判別手段が前記条件を成立させている
    と判別したとき前記プログラムのデバッグを実行するデ
    バッグ実行手段と、 前記条件成立有無判別手段が前記条件を成立させていな
    いと判別したとき参照した走行履歴格納手段に新たな走
    行履歴を追加して前記特定のアドレスから処理を再開さ
    せる処理再開手段とを具備することを特徴とするプログ
    ラム処理装置。
  3. 【請求項3】 前記条件成立有無判別手段は予め定めら
    れた複数のアドレスを特定の順序で経由して処理が進行
    したとき条件を成立させることを特徴とする請求項1記
    載のプログラム処理装置。
  4. 【請求項4】 前記条件成立有無判別手段は前記特定の
    アドレスの命令が所定回数実行されるとき条件を成立さ
    せることを特徴とする請求項1記載のプログラム処理装
    置。
  5. 【請求項5】 前記処理一時停止手段は、ブレーク命令
    を用いてCPUの処理をハード的に停止させることを特
    徴とする請求項1または請求項2記載のプログラム処理
    装置。
  6. 【請求項6】 所定のプログラムについてデバッグ処理
    を行う前に必ず実行されるべき特定の複数の命令につい
    てそれらに対応する前記プログラム上のアドレスにブレ
    ーク命令を発生させるためのブレークポイントをそれぞ
    れ設定するブレークポイント設定ステップと、 このブレークポイント設定ステップでブレークポイント
    を設定した前記プログラムを実行させ、それぞれのブレ
    ークポイントでこれらのブレークポイントに対応する各
    アドレスが予め定めた特定の順序で出現したかをそれら
    のアドレスの出現を記録する走行履歴データを基にして
    判別する判別ステップと、 この判別ステップで前記各アドレスが予め定めた特定の
    順序で出現したと判別されたとき前記プログラムを停止
    させて所定のデバッグ処理に移行するデバッグ処理移行
    ステップと、 前記判別ステップで前記各アドレスが予め定めた特定の
    順序で出現していないと判別された場合には前記所定の
    デバッグ処理に移行することなく走行履歴を追加して前
    記所定のプログラムの処理を再開する処理再開ステップ
    とを具備することを特徴とするプログラム処理方法。
JP2000310199A 2000-10-11 2000-10-11 プログラム処理装置およびプログラム処理方法 Pending JP2002116926A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000310199A JP2002116926A (ja) 2000-10-11 2000-10-11 プログラム処理装置およびプログラム処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000310199A JP2002116926A (ja) 2000-10-11 2000-10-11 プログラム処理装置およびプログラム処理方法

Publications (1)

Publication Number Publication Date
JP2002116926A true JP2002116926A (ja) 2002-04-19

Family

ID=18790201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000310199A Pending JP2002116926A (ja) 2000-10-11 2000-10-11 プログラム処理装置およびプログラム処理方法

Country Status (1)

Country Link
JP (1) JP2002116926A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004793A (ja) * 2005-06-20 2007-01-11 Seagate Technology Llc 組込型処理装置システム用コードカバレッジ測定方法及び装置
CN100334561C (zh) * 2003-07-30 2007-08-29 松下电器产业株式会社 程序调试装置、程序调试方法
JP2009506407A (ja) * 2005-08-08 2009-02-12 ローベルト ボツシユ ゲゼルシヤフト ミツト ベシユレンクテル ハフツング コンピュータシステムの制御方法および制御装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100334561C (zh) * 2003-07-30 2007-08-29 松下电器产业株式会社 程序调试装置、程序调试方法
JP2007004793A (ja) * 2005-06-20 2007-01-11 Seagate Technology Llc 組込型処理装置システム用コードカバレッジ測定方法及び装置
JP2009506407A (ja) * 2005-08-08 2009-02-12 ローベルト ボツシユ ゲゼルシヤフト ミツト ベシユレンクテル ハフツング コンピュータシステムの制御方法および制御装置
US8219796B2 (en) 2005-08-08 2012-07-10 Robert Bosch Gmbh Method and device for controlling a computer system

Similar Documents

Publication Publication Date Title
JP4094724B2 (ja) ソフトウェアをデバッグする際に例外を識別するための装置および方法
CN107515808B (zh) 日志记录方法、装置、计算机设备和计算机可读存储介质
US20080052677A1 (en) System and method for mitigating repeated crashes of an application resulting from supplemental code
JP5905911B2 (ja) シングルステップ実行を用いる診断コード
US5109381A (en) Apparatus and method for detecting errors in a pipeline data processor
JP2008513900A (ja) コンピュータシステム上でコンピュータプログラムを処理する方法
US20070226418A1 (en) Processor and method for controlling processor
JP2008513899A (ja) コンピュータシステム上でコンピュータプログラムを処理する方法
US7657792B2 (en) Identifying race conditions involving asynchronous memory updates
JP2002116926A (ja) プログラム処理装置およびプログラム処理方法
JPH02294739A (ja) 障害検出方式
JP2013003633A (ja) 故障再現装置、故障再現方法
JPH0922369A (ja) マルチタスキング方式のカーネルにおける不正動作検出方法
JP2003281076A (ja) Dmaコントローラの不正アクセス検出装置、不正アクセス検出方法およびそのプログラム
US6185700B1 (en) Method and device for evaluating a program
JP2870202B2 (ja) プロセッサ間相互監視方法及びその装置
JP2808985B2 (ja) 情報処理装置及びデバッグ装置
EP0525672A2 (en) Microprocessor with program tracing
JP2967741B2 (ja) Cpu互換性テスト装置
JP3068578B2 (ja) インサーキットエミュレータおよび飽和演算処理方法
JP2735523B2 (ja) プロシージャ・ステップ処理方法
JP2701799B2 (ja) マイクロコンピュータ
WO2019136852A1 (zh) 应用程序启动日志保存方法、存储介质、电子设备及系统
JPH10240571A (ja) アドレストレース回路
JPH0215340A (ja) 状態履歴記憶装置の制御方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040622