JPH10289128A - プログラム評価装置、プログラム評価方法、及び、プログラム評価プログラムを記録した機械読み取り可能な記録媒体 - Google Patents

プログラム評価装置、プログラム評価方法、及び、プログラム評価プログラムを記録した機械読み取り可能な記録媒体

Info

Publication number
JPH10289128A
JPH10289128A JP9099284A JP9928497A JPH10289128A JP H10289128 A JPH10289128 A JP H10289128A JP 9099284 A JP9099284 A JP 9099284A JP 9928497 A JP9928497 A JP 9928497A JP H10289128 A JPH10289128 A JP H10289128A
Authority
JP
Japan
Prior art keywords
program
object code
trace
program counter
transition
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
JP9099284A
Other languages
English (en)
Inventor
Hidenao Bitou
英直 尾藤
Koji Oishi
宏治 大石
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 JP9099284A priority Critical patent/JPH10289128A/ja
Publication of JPH10289128A publication Critical patent/JPH10289128A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 プログラムカウンタの遷移という点に注目し
て、プログラムの実行結果の妥当性を自動的に評価し、
プログラムの実行と評価を同時に行うことでより効率的
なプログラム評価を行うことである。 【解決手段】 オブジェクトコード1を入力し、命令の
実行順にプログラムカウンタをトレース情報7として保
存するオブジェクトコードトレース部3と、オブジェク
トコード1を入力し、その各命令を解析して遷移し得る
プログラムカウンタを抽出し、PC遷移情報9として保
存するオブジェクトコード解析部5と、トレース情報7
及び前記PC遷移情報9を用いてプログラムの暴走を検
出する暴走検出部とを備えるようにしてある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラム評価装
置に関し、特に、マイコン組み込みシステム開発におけ
るデバッグおよび評価に使用される技術に関する。
【0002】
【従来の技術】一般に、システム開発において作成した
プログラムが正しく動作するか否かの評価を行う必要が
ある。プログラムの不正常な動作として、プログラムカ
ウンタが不正なアドレスへ遷移すること等によるプログ
ラムの暴走がある。ここで、不正なアドレスとは、プロ
グラムのデータエリア、命令セットの途中アドレスなど
がある。
【0003】このプログラムの暴走を発見して、正しく
プログラムを動作させるようなプログラム評価技術に関
する従来例としては、プログラム開発者が人為的に、プ
ログラムへのブレークポイントの設定、ステップ実行、
連続実行を経て、プログラム停止後のCPUのレジス
タ、メモリ情報、変数データなどあらかじめ想定した数
値に設定されていることを確認する、というような方法
をとっていた。
【0004】このように、プログラムの暴走を発見し
て、正しいプログラムに修正する従来のプログラム評価
技術では、専ら人為的な作業によるものであった。
【0005】
【発明が解決しようとする課題】しかしながら、従来の
一般的なプログラムのデバッグ手法は、プログラム開発
者の経験に基づいて、専ら人為的な作業によって行われ
ており、また、プログラムの実行と評価は別々に行われ
ているため効率が悪く、プログラム評価の作業時間が増
大してしまうという問題点があった。
【0006】本発明は、上記事情に鑑みてなされたもの
であり、その目的とするところは、プログラムカウンタ
の遷移という点に注目して、プログラムの実行結果の妥
当性を自動的に評価し、プログラムの実行と評価を同時
に行うことでより効率的なプログラム評価を行うことが
できるプログラム評価装置、プログラム評価方法、及
び、プログラム評価プログラムを記録した機械読み取り
可能な記録媒体を提供することにある。
【0007】
【課題を解決するための手段】本発明の発明者は、上記
目的を達成するためには、従来技術のような人為的なプ
ログラム評価ではなく、コンピューターにより自動的に
評価を行うようにすることが肝要であると考えた。ここ
で、特に、プログラムの暴走はプログラムの不正なアド
レスへの遷移が原因であることが多く、この不正アドレ
スの遷移を自動的に判定するようにすれば良いことに気
がついた。そこで、本発明者は、慎重な研究を重ねた結
果、不正アドレスへの遷移は、コンパイル、リンクされ
たオブジェクトコードを用いて予め予測できることに気
がついた。そして、以下のような発明をすることが出来
た。
【0008】請求項1の発明は、プログラムの評価装置
において、前記プログラムのオブジェクトコードを入力
し、命令の実行順にプログラムカウンタをトレース情報
として保存するオブジェクトコードトレース部と、前記
オブジェクトコードを入力し、そのオブジェクトコード
の各命令を解析して、その各命令が遷移し得るプログラ
ムカウンタを抽出し、PC遷移情報として保存するオブ
ジェクトコード解析部と、前記トレース情報及び前記P
C遷移情報を用いてプログラムの暴走を検出する暴走検
出部と、を具備することを特徴とする。
【0009】本発明では、あらかじめ、プログラムのオ
ブジェクトコードから解析したプログラムカウンタの遷
移パターンを予測データとし、それらをトレース結果か
ら得られたプログラムカウンタの遷移情報と比較するこ
とで、プログラムの実行結果の妥当性を自動的に評価す
る。これにより、ハードウェアのバグによるメモリのリ
ードエラーやソフトウェアのバグによるスタックエリア
などのアドレス格納領域の破壊などから生じる暴走を容
易に検出することができる。
【0010】請求項2の発明は、前記請求項1における
オブジェクトコードトレース部は、前記プログラムのオ
ブジェクトコードを入力し、そのオブジェクトコードを
実行してトレースデータを保存し、このトレースデータ
から実行された命令のプログラムカウンタの順序を抽出
し、これをトレース情報として保存することを特徴とす
る。
【0011】上記発明の構成では、オブジェクトコード
を実行してトレースデータを保存するようにしてある。
一般に、トレースデータを取る技術は公知の技術である
から、そのトレースデータを利用し、トレースデータか
らプログラムカウンタの情報を抽出するようにしたもの
である。これにより、あえてプログラムカウンタを取り
出す事をしなくともトレースデータを利用することによ
りプログラムカウンタに関する情報を保存するトレース
情報を作成することができるのである。
【0012】請求項3の発明は、前記請求項1における
オブジェクトコード解析部は、前記オブジェクトコード
を入力し、そのオブジェクトコードの各命令を解析し
て、次に実行される命令アドレス、及び、割込処理によ
りプログラムカウンタが遷移し得る場合には、その割込
処理ルーチンの先頭アドレスを抽出し、PC遷移情報と
して保存することを特徴とする。
【0013】上記発明の構成によれば、割込処理を許す
ようなアーキテクテュアを有するコンピューターシステ
ムに用いられるプログラムであっても本発明を適用する
ことができるのである。
【0014】請求項4の発明は、前記請求項1における
暴走検出部は、命令の実行順序で保存された前記トレー
ス情報の所定のプログラムカウンタと、そのプログラム
カウンタに係るPC遷移情報を対応させ、前記トレース
情報に保存されたプログラムカウンタの次のプログラム
カウンタがPC遷移情報に保存された命令が遷移し得る
プログラムカウンタに含まれるか否かを解析することで
自動的にプログラムの暴走を検出することを特徴とす
る。
【0015】上記発明の構成では、トレース情報の所定
のプログラムカウンタと、そのプログラムカウンタに係
るPC遷移情報を対応させて1命令ずつ遷移の妥当性を
検討するようにしてある。このように構成することで、
確実に不正なアドレスへの遷移を検出することができる
のである。
【0016】請求項5の発明は、評価を行うプログラム
を実行し、ブレーク信号の入力によりその実行を停止す
るターゲットCPU、前記ターゲットCPUのトレース
情報を入力して、プログラムカウンタを抽出して出力す
るトレース制御部、前記出力されたプログラムカウンタ
を記憶する第1のメモリ、前記ターゲットCPUのPC
遷移情報を記憶する第2のメモリ、及び、前記第1のメ
モリに記憶されたプログラムカウンタと、前記第2のメ
モリに記憶されたPC遷移情報とを比較し、不一致を検
出した場合には前記ターゲットCPUに対して前記ブレ
ーク信号を出力するコントロールCPU、を備えたエミ
ュレータ部と、前記評価を行うプログラムのオブジェク
トコードを入力し、そのオブジェクトコードの各命令を
解析して、その各命令が遷移し得るプログラムカウンタ
を抽出し、その抽出結果をPC遷移情報として前記第2
のメモリに出力するホストコンピューター部と、を備え
ることを特徴とする。
【0017】上記発明の構成によれば、ハードウェアの
バグによるメモリのリードエラーやソフトウェアのバグ
によるスタックエリアなどのアドレス格納領域の破壊な
どから生じる暴走を容易に検出することができる。特
に、ターゲットプログラムのリアルタイム実行と平行し
て実行結果を評価、暴走を検出した時点でブレーク信号
を発生し、自動的にターゲットCPUを停止すること
で、ブレークポイントの設定など、人為的な操作を必要
としない、より効率的なプログラム評価を行うことがで
きるのである。
【0018】請求項6の発明は、前記請求項5における
エミュレータ部は、評価を行うプログラムを実行してト
レースデータを出力し、ブレーク信号の入力によりその
実行を停止するターゲットCPUと、前記ターゲットC
PUのトレースデータを記憶する第1のトレースメモリ
と、前記第1のトレースメモリに前記ターゲットCPU
のトレースデータを記憶しない場合に前記トレースデー
タを記憶する第2のトレースメモリと、前記第1若しく
は第2のトレースメモリに記憶されたターゲットCPU
のトレースデータを入力して、プログラムカウンタを抽
出して出力するトレース制御回路と、前記ターゲットC
PUからトレースデータを入力し、このトレースデータ
を前記第1若しくは前記第2のトレースメモリに出力
し、前記トレース制御回路から入力したプログラムカウ
ンタを出力するクロスバーと、このクロスバーより出力
されたプログラムカウンタを記憶する第1のメモリと、
前記ターゲットCPUのPC遷移情報を記憶する第2の
メモリと、前記第1のメモリに記憶されたプログラムカ
ウンタ1と前記第2のメモリに記憶されたPC遷移情報
とを比較し、不一致を検出した場合には前記ターゲット
CPUに対して前記ブレーク信号を出力するコントロー
ルCPUと、を具備することを特徴とする。
【0019】上記発明の構成では、上記請求項5の発明
の構成と比較して、第1及び第2のトレースメモリを設
け、ターゲットCPUからのトレースデータをこの2つ
のメモリで保存するようにしたものである。この第1及
び第2のトレースメモリは、ターゲットCPUからのト
レースデータの入力、及び、第1のメモリに記憶される
べきトレース情報を出力する役割を担う。従って、I/
Oトラフィックが相当量になるため、リアルタイム性に
欠けてしまう虞れがある。この問題を解消するために、
2つのトレースメモリを設けるようにしたものである。
なお、この2つのトレースメモリのデータのスイッチ
は、クロスバーに行わせるようにした。
【0020】上記目的を達成するため、請求項7の発明
は、プログラムの暴走を検出するプログラム評価方法に
おいて、前記プログラムのオブジェクトコードの実行か
ら得たプログラムカウンタの遷移順序であるトレース情
報と、前記オブジェクトコードの各命令が遷移し得るプ
ログラムカウンタを抽出したPC遷移情報とを用い、前
記オブジェクトコードの各命令の遷移順序が正しいか否
かを評価することを特徴とする。
【0021】請求項8の発明は、プログラムの評価方法
において、前記プログラムのオブジェクトコードを入力
し、命令の実行順にプログラムカウンタをトレース情報
として保存するオブジェクトコードトレースステップ
と、前記オブジェクトコードを入力し、そのオブジェク
トコードの各命令を解析して、その各命令が遷移し得る
プログラムカウンタを抽出し、PC遷移情報として保存
するオブジェクトコード解析ステップと、前記トレース
情報及び前記PC遷移情報を用いてプログラムの暴走を
検出する暴走検出ステップと、を含むことを特徴とす
る。
【0022】請求項9の発明は、前記請求項8における
オブジェクトコードトレースステップは、前記プログラ
ムのオブジェクトコードを入力し、そのオブジェクトコ
ードを実行してトレースデータを保存し、このトレース
データから実行された命令のプログラムカウンタの順序
を抽出し、これをトレース情報として保存することを特
徴とする。
【0023】請求項10の発明は、前記請求項8におけ
るオブジェクトコード解析ステップは、前記オブジェク
トコードを入力し、そのオブジェクトコードの各命令を
解析して、次に実行される命令アドレス、及び、割込処
理によりプログラムカウンタが遷移し得る場合には、そ
の割込処理ルーチンの先頭アドレスを抽出し、PC遷移
情報として保存することを特徴とする。
【0024】請求項11の発明は、前記請求項8におけ
る前記暴走検出ステップは、命令の実行順序で保存され
た前記トレース情報の所定のプログラムカウンタと、そ
のプログラムカウンタに係るPC遷移情報を対応させ、
前記トレース情報に保存されたプログラムカウンタの次
のプログラムカウンタがPC遷移情報に保存された命令
が遷移し得るプログラムカウンタに含まれるか否かを解
析することで自動的にプログラムの暴走を検出すること
を特徴とする。
【0025】上記目的を達成するため、請求項12の発
明は、プログラムの暴走を検出するプログラム評価プロ
グラムを記録した機械読み取り可能な記録媒体におい
て、前記プログラムのオブジェクトコードから得たプロ
グラムカウンタの遷移順序であるトレース情報と、前記
オブジェクトコードの各命令が遷移し得るプログラムカ
ウンタを抽出したPC遷移情報とを用い、コンピュータ
ーに前記オブジェクトコードの各命令の遷移順序が正し
いか否かを評価させることを特徴とする。
【0026】請求項13の発明は、コンピューターによ
ってプログラムを評価するための評価プログラムを記録
した機械読み取り可能な記録媒体において、前記プログ
ラムのオブジェクトコードを入力させ、命令の実行順に
プログラムカウンタをトレース情報として保存させるオ
ブジェクトコードトレースステップと、前記オブジェク
トコードを入力させ、そのオブジェクトコードの各命令
を解析させて、その各命令が遷移し得るプログラムカウ
ンタを抽出させ、PC遷移情報として保存させるオブジ
ェクトコード解析ステップと、前記トレース情報及び前
記PC遷移情報を用いてプログラムの暴走を検出させる
暴走検出ステップと、を含むことを特徴とする。
【0027】請求項14の発明は、前記請求項13にお
けるオブジェクトコードトレースステップは、コンピュ
ーターに前記プログラムのオブジェクトコードを入力さ
せ、そのオブジェクトコードを実行してトレースデータ
を保存させ、このトレースデータから実行された命令の
プログラムカウンタの順序を抽出させ、これをトレース
情報として保存させることを特徴とする。
【0028】請求項15の発明は、前記請求項13にお
けるオブジェクトコード解析ステップは、コンピュータ
ーに前記オブジェクトコードを入力させ、そのオブジェ
クトコードの各命令を解析させて、次に実行される命令
アドレス、及び、割込処理によりプログラムカウンタが
遷移し得る場合には、その割込処理ルーチンの先頭アド
レスを抽出させ、PC遷移情報として保存させることを
特徴とする。
【0029】請求項16の発明は、前記請求項13にお
ける暴走検出ステップは、コンピューターに命令の実行
順序で保存された前記トレース情報の所定のプログラム
カウンタと、そのプログラムカウンタに係るPC遷移情
報を対応させ、前記トレース情報に保存されたプログラ
ムカウンタの次のプログラムカウンタがPC遷移情報に
保存された命令が遷移し得るプログラムカウンタに含ま
れるか否かを解析させることで自動的にプログラムの暴
走を検出させることを特徴とする。
【0030】
【発明の実施の形態】以下、本発明に係るプログラム評
価装置の実施形態について、図面を参照しながら詳細に
説明する。
【0031】第1の実施の形態 図1は、本実施形態のプログラム評価装置を示すブロッ
ク図である。このプログラム評価装置は、オブジェクト
コード1を入力し、そのオブジェクトコード1を実行
し、その実行した命令のプログラムカウンタ(PC)を
順にトレース情報7として保存するオブジェクトコード
トレース部3と、オブジェクトコード1を入力し、その
オブジェクトコード1の各命令を解析して、その各命令
が遷移し得るプログラムカウンタを抽出し、PC遷移情
報9として保存するオブジェクトコード解析部5と、ト
レース情報7及びPC遷移情報9からプログラムの暴走
を検出する自動暴走検出部11と、前記プログラムの暴
走が検出された場合には、操作者にその内容を表示する
表示部13と、を備えるものである。
【0032】次に、本実施形態のプログラム評価装置の
動作について、具体例を交えて詳細に説明する。
【0033】図2は、本実施形態の具体例で用いるオブ
ジェクトコード1を示したものである。一般に、オブジ
ェクトコードはコンピューター読み取り可能なバイナリ
形式であるため、人間がこれを理解することは不可能で
ある。そのため、同図は、このオブジェクトコードを人
間が理解できるような形式で示した(これをアセンブラ
ソースプログラムと記す)。このアセンブラソースプロ
グラムの左端には、プログラム行の番号(以下、行番号
と記す)が付してある。この行番号の12乃至20行目
は、遷移すべき番地が相対番地記述形式で記述されてい
る。また、21乃至31行目がメインルーチンが記述さ
れ、32行目以降に割込ハンドラがそれぞれ記述されて
いる。このアセンブラソースプログラムについて本実施
形態における処理を説明する。
【0034】オブジェクトコードトレース部3は、オブ
ジェクトコード1を実行し、その実行した命令のプログ
ラムカウンタを順にトレース情報7として保存する。オ
ブジェクトコードの実行により、トレースデータを取る
ことができるのは公知の技術である。一般的なトレース
データを図3に示した。このトレースデータには、実行
した命令のプログラムカウンタの他にも種々のデータが
含まれている。従って、トレースデータから実行した命
令のプログラムカウンタの順序に関する情報を抽出する
ようにする。そして、その抽出した結果をトレース情報
として保存する。
【0035】オブジェクトコード解析部5は、図2に示
したオブジェクトコード1を入力して、そのオブジェク
トコード1の各命令を解析して、その各命令が次に遷移
し得るプログラムカウンタを抽出し、PC遷移情報9と
して保存する。PCが次に遷移し得るプログラムカウン
タは現在実行中の命令セットと割り込み要求に依存し、
通常の命令では、次の命令の先頭アドレス、また、分岐
命令では分岐先アドレスを抽出する。さらに、割り込み
処理によりプログラムカウンタが遷移し得る場合には、
割り込み処理ルーチンの先頭アドレスをも抽出する。
【0036】図4は、このオブジェクトコード解析部5
の処理動作を説明するために用いる図面である。図中の
○印の中に数字が付してあるものをノードと呼ぶ。ノー
ドには現在のPC値、分岐先PC値を格納する記憶領域
へのアドレス情報および割り込み処理ルーチンの先頭ア
ドレスをテーブル化した割込テーブルへの先頭アドレス
情報が含まれる。また、○印の中に数字は、プログラム
カウンタを示す。同図左側の破線四角で囲まれた中に記
載された○印はメインルーチンのプログラムカウンタの
遷移情報である。ラベル「init:」から始まるメイ
ンルーチンの先頭番地が8000であることを示してい
る。この先頭番地は、図2のアセンブラソースプログラ
ムの25行目の命令を意味し、次の8002番地は同図
26行目の命令を意味する。以下、同様に各ノードはそ
れぞれの命令に対応して、メインルーチンには合計5つ
の命令が記述されている。
【0037】また、割込ハンドラは図4の中央部の破線
四角で囲まれた中に記載されており、「intw
d:」、及び「intad:」をそれぞれ示してある。
「intwd:」の800c番地は、図2のアセンブラ
ソースプログラムの34行目の命令を示し、また、「i
ntad:」の800d番地は、図2のアセンブラソー
スプログラムの39行目の命令を示してある。
【0038】一方、図4の右側の3つの破線四角は、割
込テーブルを示す。プログラムの実行状態によってCP
Uに受け付け可能な割り込み処理が異なる可能性がある
ため、複数の割込テーブル用意する。この実施形態で
は、同図右上の割込テーブル1が初期状態であり、割込
のレベルの変化に応じて割込テーブル2若しくは割込テ
ーブル3を用いる。
【0039】続いて、オブジェクトコード解析部5の解
析処理について説明する。まず、PCは8000番地メ
インルーチンから処理を開始する。この8000番地に
おいて、次に遷移する番地は、8002番地の他に割込
により遷移し得る番地として、割込テーブル1に格納さ
れた800c番地、800d番地がある。従って、PC
遷移情報9として8002番地及び割込テーブル1の先
頭アドレスを抽出して保存する。次の8002番地につ
いても同様に、次に遷移する番地は、8005番地の他
に割込により遷移し得る番地として、割込テーブル1に
格納された800c番地、800d番地がある。従っ
て、PC遷移情報9として8005番地及び割込テーブ
ル1の先頭アドレスを抽出して保存する。以下同様し
て、PC遷移情報9に保存していく。また、割込ハンド
ラについても同様な処理を行う。すなわち、「inta
d:」の先頭アドレスである800d番地において、次
に遷移する番地は、8010番地の他に割込により遷移
し得る番地として、割込テーブル2に格納された800
c番地がある。従って、PC遷移情報9として8010
番地及び割込テーブル2の先頭アドレスを抽出して保存
する。また、「intwd:」の先頭アドレスである8
00c番地において、次に遷移する番地はない。従っ
て、PC遷移情報9として割込テーブル3の先頭アドレ
スを抽出して保存する。 以上のように、トレース情報
7及びPC遷移情報9を作成する。図5にPC遷移情報
9を計算機のメモリ上に展開したイメージをメモリA
に、また、トレース情報7をメモリBに示す。図中のn
pc、tpcはそれぞれメモリA,Bの任意のアドレス
を示すものとする。各ノードで該当する情報がない場
合、例えば、割り込み処理ルーチンのリターンアドレス
などの無効アドレスが入る。本実施形態では、メモリB
に格納されたトレース情報7の順序で命令が実行された
ものとする。
【0040】次に、プログラムのトレース情報より得た
メモリBのPC遷移の妥当性を自動暴走検出部11に
て、次の手順で評価する。PCの不一致検出までのフロ
ーチャートを図6に示す。
【0041】(i)tpcはメモリBのアドレスmを示
し、npcはメモリA上にある遷移情報ノードnが格納
される先頭アドレス(ノードnのPC値が格納されるア
ドレス)を示し、tpcとnpcの指し示すアドレスの
内容は一致するものとする(ステップS101)。
【0042】(ii)次に、メモリBのアドレスm+kに
格納される次のPC値の妥当性を評価するため、次の手
順でtpcとnpcを更新し、2つのアドレスに格納さ
れる値を比較する(ステップS102)。ただし、kは
アドレスが格納される領域の大きさを示す。また、任意
のアドレスで割り込みが発生した場合、呼び出される割
り込み処理ルーチンが戻るべきアドレス、すなわち現在
のノードのネクストPCへのアドレス、を最終ノードに
設定する必要があるため、その値をcpcとして保持す
る。
【0043】tpc←tpc+k npc←現在のノードの(ネクストPCへのアドレス)
に格納される値 cpc←npc (iii)tpcとnpcの示すアドレスの内容を比較する
(ステップS103)。一致する場合、次のPC値の妥
当性を評価するために次の手順でtpcとnpc、cp
cを更新し再び値を比較する(ステップS104)。
【0044】tpc←tpc+k npc←現在のノードの(ネクストPCへのアドレス)
に格納される値 cpc←npc 以上(iii)の操作をメモリBの最終アドレスまで繰り返
すことが出来た場合、プログラムは正常に動作したもの
と見なす。不一致の場合の処理を(iv)に示す。
【0045】(iv)次に予測されるPC値はnpcによ
って次のように示される(ステップS105)。
【0046】npc←現在のノードの(分岐先PCへの
アドレス)に格納される値 ここで、tpcとnpcの示すアドレスの内容を比較す
る(ステッS106)。
【0047】tpcとnpcの示すアドレスの内容が一
致する場合、(iii)以降の処理を繰り返し行う。(ステ
ップS107)不一致の場合の処理を(v)に示す。
【0048】(v)上記手順までに一致が見られない場
合、正常なプログラムのPCが取り得る可能性は各割り
込み処理ルーチンの先頭アドレスのみとなる。次に、n
pcは各割り込み処理の先頭アドレスをテーブル化した
割り込みテーブルの先頭アドレスを示す(ステップS1
08)。
【0049】npc←現ノードの(割り込みテーブルの
先頭アドレス)に格納される値 npcはテーブルの先頭アドレスから最終アドレスを順
次指し示し、そのアドレスの内容とtpcの指し示すア
ドレスの内容を順次比較する(ステップS109)。
【0050】一致する場合、cpc値をリターンアドレ
スとして該当する割り込み処理ルーチンの最終ノードへ
格納する。また、tpc、npcは次の処理の後、(ii
i)以降の処理を繰り返し行う(ステップS110)。
【0051】tpc←tpc+k npc←現在のノードの(ネクストPCへのアドレス)
に格納される値 cpc←npc 不一致の場合、次の割り込みテーブルと比較するために
npcを更新する(ステップS111)。
【0052】npc←npc+1 続いて、npcが無効なアドレスを示すか否かを判定す
る(ステップS112)。npcが無効なアドレスを示
すとき、割り込みテーブルの終端を意味する。すなわ
ち、メモリBのアドレスm+kに格納されるPC値はあ
らかじめ予測した遷移情報の何れとも一致しない場合に
は、不正アドレスへの遷移検出と認定する(ステップS
113)。これにより、不正なアドレスへ遷移すること
が検出できる。
【0053】次に、表示部13について説明する。この
表示部13は、自動暴走検出部11にて不正アドレスへ
の遷移を検出した場合には、操作者にその旨を伝えるた
めのものである。この表示部は、コンピューターシステ
ムのCRTに表示するようにしてもよい。なお、この処
理は、自動暴走検出部11が不正アドレスへの遷移を検
知した時点で、操作者にその旨を伝える処理に移行する
ようにしておく。
【0054】以上説明してきたように、本実施形態のプ
ログラム評価装置によれば、あらかじめ予測した遷移情
報と実際のターゲットプログラムのPCの遷移とを比較
することでプログラムの妥当性を評価し、プログラムの
不正アドレスへの遷移に関する暴走を容易に検出するこ
とができる。
【0055】第2の実施の形態 次に、本発明に係るプログラム評価装置の第2の実施形
態について、図面を参照しながら詳細に説明する。本実
施形態では、リアルタイム実行しながらトレース結果の
妥当性を評価するために必要なシステム構成について説
明する。装置の全体構成を図7に示す。
【0056】まず、本実施形態の各構成要素について説
明する。ターゲットCPUは、ターゲットプログラムを
解読・実行するCPU、アドレスバス、データバスを介
してメモリ4へアクセスする。実行と同時にステータス
信号、PC情報を出力する。
【0057】また、ホストCPUは、使用者からの要求
を受け付け、コントロールCPUに対して、各種操作を
行う。コントロールCPUは、従来、ホストコンピュー
ターからのコマンド要求およびターゲットCPUの監視
を行うことを目的とする。ホストコンピューターからの
コマンド要求に従ってターゲットCPU、メモリに対し
て各種操作を行う。本実施形態では、ターゲットプログ
ラムのリアルタイム実行中にあらかじめオブジェクトコ
ードの解析結果から得たプログラムカウンタの遷移情報
とトレース結果とを比較して、不一致を検出した場合、
ターゲットCPUに対してブレーク信号を発行する。
【0058】メモリ1は、予めオブジェクトコードを解
析して得られたPC遷移情報を格納する記憶領域であ
る。メモリ2は、ターゲットプログラムのリアルタイム
実行中に、トレース結果から得られたPC遷移情報とあ
らかじめ予測したPC遷移情報とをコントロールCPU
で比較するために、ホストコンピューター上のメモリ1
にあるPC遷移情報を格納する。メモリ3は、トレース
メモリ1または2に蓄えられた各種トレースデータから
PCの遷移情報のみを取り出し、実行PCの順に格納す
る記憶領域である。格納は、ターゲットCPUの実行中
にクロスバーによってトレースメモリへのバスアクセス
をコントロールして、メモリ3へ高速DMA転送する。
メモリ4は、ターゲットCPUが使用する記憶装置であ
る。このメモリ4にプログラムの実行に必要なコードと
データを格納する。トレースメモリ1,2は、トレース
結果を格納する記憶領域である。従来技術では、トレー
スメモリは単一で、トレース制御回路とコントロールC
PUから同時にアクセスすることはできない。本実施形
態では、トレースメモリを2つ、あるいはそれ以上用意
し、クロスバーによってそれぞれのメモリへのアクセス
をコントロールすることで、異なるメモリながら、トレ
ース制御回路によるトレースメモリへのトレース結果の
書き込みと、コントロールCPUによるトレースメモリ
の読み出しを同時に行うことを可能とすることで、ター
ゲットプログラムのリアルタイム実行と平行にトレース
結果からターゲットプログラムの実行結果を評価するこ
とができる。
【0059】クロスバーは、トレースメモリ1または2
へアクセスするためのバスをコントロールするいわゆる
バススイッチ回路である。ターゲットプログラムの実行
中、トレース制御回路からの制御信号に従ってバスを切
り替える。トレース制御回路は、ターゲットCPUのバ
スアクセスおよびPC情報を監視し、ステータス信号に
基づいて、結果をトレースメモリへ格納する。また、メ
モリの大きさに応じた書き込みカウンタをトレースメモ
リ1,2のそれぞれに持つ。書き込みカウンタはトレー
スメモリへ書き込み位置を示す。片方の書き込みカウン
タがオーバーフローするとき、該当するトレースメモリ
からPC遷移情報をメモリ3へ高速DMA転送するため
に、コントロールCPUに対して割り込み信号を発行す
る。また、2つの書き込みカウンタがオーバーフローす
るとき、トレースメモリへの書き込みがコントロールC
PUのトレース結果評価速度を上回り、トレースメモリ
1,2の全てに書き込みが起きたことを意味する。この
ように構成することで、トレース制御回路からコントロ
ールCPUへターゲットCPUの停止を要求する割り込
み信号を発行することもできる。
【0060】次に、本実施形態の動作について説明す
る。まず、ターゲットプログラムの実行前にホストコン
ピューターのメモリ1にあるPC遷移情報をエミュレー
タ上のメモリ2へコピーする。ターゲットプログラムを
開始するとターゲットCPUはバスを介してメモリ4へ
各種操作を行う。同時に、バスを監視するトレース制御
回路がトレース結果の格納をトレースメモリ1に対して
行う。ただし、クロスバーにより、トレースメモリ1へ
のアクセスはトレース制御回路からのみに、また、トレ
ースメモリ2へのアクセスはコントロールCPUからの
みに制限する。
【0061】ここで、トレースメモリ1の書き込みカウ
ンタがオーバーフローすると、トレース制御回路は、コ
ントロールCPUに対してDMA転送割り込み要求信号
を発行すると同時に、クロスバーに対してバススイッチ
制御信号を発行する。この結果、トレースメモリ1への
アクセスはコントロールCPU、また、トレースメモリ
2へのアクセスはトレース制御回路から、という具合
に、クロスバーが速やかにトレースメモリ1,2に対す
るバスの切り替えを行う。
【0062】引き続き、ターゲットCPUは命令の実行
を行い、トレース制御回路は、トレース結果をトレース
メモリ2へ書き込む一方、トレース制御回路からのDM
A転送割り込み要求信号を受けたコントロールCPU
は、トレース制御回路によるトレースメモリ2の書き込
みが完了するまでの間に、コントロールCPUでトレー
スメモリ1により得られるPC遷移情報から、ターゲッ
トプログラムの実行結果の妥当性を評価する。まず、コ
ントロールCPUは、トレースメモリ1からPC遷移結
果のみを抽出し、その抽出したPC遷移結果をメモリ3
へ高速DMA転送し、評価のための確認を行う。また、
高速DMA転送され、メモリ3に書き込まれたターゲッ
トプログラムのPC実行遷移結果は、オブジェクトコー
ドからあらかじめ予測したメモリ2に記憶されているP
C遷移情報に基づいてコントロールCPUで評価する。
評価の手順は前述の第1の実施形態での処理を行う。不
一致を検出し、プログラムの異常動作を検出した場合、
コントロールCPUからターゲットCPUに対してブレ
ーク信号が発行され、ターゲットCPUは自動停止され
る。または、コントロールCPUからホストコンピュー
ターを通じて使用者に通知する。
【0063】以上により、異常状態での各種トレース結
果は確実にトレースメモリ1に格納される。ただし、ト
レースメモリ1の評価が完了する前にトレースメモリ2
への書き込みが完了する場合、トレース制御回路からの
要求に従ってターゲットCPUを一時停止、トレースメ
モリ1の評価が完了した後、ターゲットCPUを再開す
ることもできる。
【0064】従来、プログラムの実行履歴をトレースメ
モリ上に記録するデバッグシステムでは、有限なトレー
スメモリを使い切った場合、トレースメモリの上書き、
あるいはそれ以上の書き込みかできないことによってト
レース結果が失われる可能性がある。そのため、暴走時
のトレース結果を確実に得るためには、暴走する箇所を
あらかじめ予測し、人為的にプログラムを停止しなけれ
ばならない。以上のように、本実施形態では、ターゲッ
トプログラムのリアルタイム実行と平行して、別CPU
で実行結果を評価、その結果に基づいてターゲットCP
Uを自動制御するため、ブレークポイントの設定などの
人為的な作業を必要とせず、プログラム異常動作時のト
レース結果を確実にトレースメモリに残すことができ
る。
【0065】なお、上述したプログラム評価する方法を
実現するためのプログラムは記録媒体に保存することが
できる。この記録媒体をコンピューターシステムによっ
て読み込ませ、前記プログラムを実行してコンピュータ
ーを制御しながら上述したプログラム評価を実現するこ
とができる。ここで、前記記録媒体とは、メモリ装置、
磁気ディスク装置、光ディスク装置等、プログラムを記
録することができるような装置が含まれる。
【0066】
【発明の効果】以上説明してきたように、本発明に係る
プログラム評価装置、プログラム評価方法、及び、プロ
グラム評価プログラムを記録した機械読み取り可能な記
録媒体によれば、プログラム実行結果の妥当性を評価プ
ログラムの異常動作を自動的に検出するため、人為的な
作業を必要がない。また、トレース結果を確実に取得で
きる。
【図面の簡単な説明】
【図1】本発明に係るプログラム装置を示すブロック図
である。
【図2】第1の実施形態で用いるアセンブラソースプロ
グラムを示す図である。
【図3】トレースデータを示す図である。
【図4】PC遷移情報を説明するための図である。
【図5】PC遷移情報を計算機の記憶領域へ展開した場
合を説明するための図である。
【図6】自動暴走検出部11のアルゴリズムを示すフロ
ーチャートである。
【図7】第2の実施形態の本発明を利用したリアルタイ
ムデバッグシステムを示すブロック図である。
【符号の説明】
1 オブジェクトコード 3 オブジェクトコードトレース部 5 オブジェクトコード解析部 7 トレース情報 9 PC遷移情報 11 自動暴走検出部 13 表示部

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 プログラムの評価装置において、 前記プログラムのオブジェクトコードを入力し、命令の
    実行順にプログラムカウンタをトレース情報として保存
    するオブジェクトコードトレース部と、 前記オブジェクトコードを入力し、そのオブジェクトコ
    ードの各命令を解析して、その各命令が遷移し得るプロ
    グラムカウンタを抽出し、PC遷移情報として保存する
    オブジェクトコード解析部と、 前記トレース情報及び前記PC遷移情報を用いてプログ
    ラムの暴走を検出する暴走検出部と、 を具備することを特徴とするプログラム評価装置。
  2. 【請求項2】 前記オブジェクトコードトレース部は、 前記プログラムのオブジェクトコードを入力し、そのオ
    ブジェクトコードを実行してトレースデータを保存し、
    このトレースデータから実行された命令のプログラムカ
    ウンタの順序を抽出し、これをトレース情報として保存
    することを特徴とする請求項1記載のプログラム評価装
    置。
  3. 【請求項3】 前記オブジェクトコード解析部は、 前記オブジェクトコードを入力し、そのオブジェクトコ
    ードの各命令を解析して、次に実行される命令アドレ
    ス、及び、割込処理によりプログラムカウンタが遷移し
    得る場合には、その割込処理ルーチンの先頭アドレスを
    抽出し、PC遷移情報として保存することを特徴とする
    請求項1記載のプログラム評価装置。
  4. 【請求項4】 前記暴走検出部は、 命令の実行順序で保存された前記トレース情報の所定の
    プログラムカウンタと、そのプログラムカウンタに係る
    PC遷移情報を対応させ、 前記トレース情報に保存されたプログラムカウンタの次
    のプログラムカウンタがPC遷移情報に保存された命令
    が遷移し得るプログラムカウンタに含まれるか否かを解
    析することで自動的にプログラムの暴走を検出すること
    を特徴とする請求項1記載のプログラム評価装置。
  5. 【請求項5】 評価を行うプログラムを実行し、ブレー
    ク信号の入力によりその実行を停止するターゲットCP
    U、 前記ターゲットCPUのトレース情報を入力して、プロ
    グラムカウンタを抽出して出力するトレース制御部、 前記出力されたプログラムカウンタを記憶する第1のメ
    モリ、 前記ターゲットCPUのPC遷移情報を記憶する第2の
    メモリ、及び、 前記第1のメモリに記憶されたプログラムカウンタと、
    前記第2のメモリに記憶されたPC遷移情報とを比較
    し、不一致を検出した場合には前記ターゲットCPUに
    対して前記ブレーク信号を出力するコントロールCP
    U、 を備えたエミュレータ部と、 前記評価を行うプログラムのオブジェクトコードを入力
    し、そのオブジェクトコードの各命令を解析して、その
    各命令が遷移し得るプログラムカウンタを抽出し、その
    抽出結果をPC遷移情報として前記第2のメモリに出力
    するホストコンピューター部と、 を備えることを特徴とするプログラム評価装置。
  6. 【請求項6】 前記エミュレータ部は、 評価を行うプログラムを実行してトレースデータを出力
    し、ブレーク信号の入力によりその実行を停止するター
    ゲットCPUと、 前記ターゲットCPUのトレースデータを記憶する第1
    のトレースメモリと、 前記第1のトレースメモリに前記ターゲットCPUのト
    レースデータを記憶しない場合に前記トレースデータを
    記憶する第2のトレースメモリと、 前記第1若しくは第2のトレースメモリに記憶されたタ
    ーゲットCPUのトレースデータを入力して、プログラ
    ムカウンタを抽出して出力するトレース制御回路と、 前記ターゲットCPUからトレースデータを入力し、こ
    のトレースデータを前記第1若しくは前記第2のトレー
    スメモリに出力し、前記トレース制御回路から入力した
    プログラムカウンタを出力するクロスバーと、 このクロスバーより出力されたプログラムカウンタを記
    憶する第1のメモリと、 前記ターゲットCPUのPC
    遷移情報を記憶する第2のメモリと、 前記第1のメモリに記憶されたプログラムカウンタと1
    前記第2のメモリに記憶されたPC遷移情報とを比較
    し、不一致を検出した場合には前記ターゲットCPUに
    対して前記ブレーク信号を出力するコントロールCPU
    と、 を具備することを特徴とする請求項5記載のプログラム
    評価装置。
  7. 【請求項7】 プログラムの暴走を検出するプログラム
    評価方法において、 前記プログラムのオブジェクトコードの実行から得たプ
    ログラムカウンタの遷移順序であるトレース情報と、前
    記オブジェクトコードの各命令が遷移し得るプログラム
    カウンタを抽出したPC遷移情報とを用い、前記オブジ
    ェクトコードの各命令の遷移順序が正しいか否かを評価
    することを特徴とするプログラム評価方法。
  8. 【請求項8】 プログラムの評価方法において、 前記プログラムのオブジェクトコードを入力し、命令の
    実行順にプログラムカウンタをトレース情報として保存
    するオブジェクトコードトレースステップと、 前記オブジェクトコードを入力し、そのオブジェクトコ
    ードの各命令を解析して、その各命令が遷移し得るプロ
    グラムカウンタを抽出し、PC遷移情報として保存する
    オブジェクトコード解析ステップと、 前記トレース情報及び前記PC遷移情報を用いてプログ
    ラムの暴走を検出する暴走検出ステップと、 を含むことを特徴とするプログラム評価方法。
  9. 【請求項9】 前記オブジェクトコードトレースステッ
    プは、 前記プログラムのオブジェクトコードを入力し、そのオ
    ブジェクトコードを実行してトレースデータを保存し、
    このトレースデータから実行された命令のプログラムカ
    ウンタの順序を抽出し、これをトレース情報として保存
    することを特徴とする請求項8記載のプログラム評価方
    法。
  10. 【請求項10】 前記オブジェクトコード解析ステップ
    は、 前記オブジェクトコードを入力し、そのオブジェクトコ
    ードの各命令を解析して、次に実行される命令アドレ
    ス、及び、割込処理によりプログラムカウンタが遷移し
    得る場合には、その割込処理ルーチンの先頭アドレスを
    抽出し、PC遷移情報として保存することを特徴とする
    請求項8記載のプログラム評価方法。
  11. 【請求項11】 前記暴走検出ステップは、 命令の実行順序で保存された前記トレース情報の所定の
    プログラムカウンタと、そのプログラムカウンタに係る
    PC遷移情報を対応させ、 前記トレース情報に保存されたプログラムカウンタの次
    のプログラムカウンタがPC遷移情報に保存された命令
    が遷移し得るプログラムカウンタに含まれるか否かを解
    析することで自動的にプログラムの暴走を検出すること
    を特徴とする請求項8記載のプログラム評価方法。
  12. 【請求項12】 プログラムの暴走を検出するプログラ
    ム評価プログラムを記録した機械読み取り可能な記録媒
    体において、 前記プログラムのオブジェクトコードから得たプログラ
    ムカウンタの遷移順序であるトレース情報と、前記オブ
    ジェクトコードの各命令が遷移し得るプログラムカウン
    タを抽出したPC遷移情報とを用い、コンピューターに
    前記オブジェクトコードの各命令の遷移順序が正しいか
    否かを評価させることを特徴とするプログラム評価プロ
    グラムを記録した機械読み取り可能な記録媒体。
  13. 【請求項13】 コンピューターによってプログラムを
    評価するための評価プログラムを記録した機械読み取り
    可能な記録媒体において、 前記プログラムのオブジェクトコードを入力させ、命令
    の実行順にプログラムカウンタをトレース情報として保
    存させるオブジェクトコードトレースステップと、 前記オブジェクトコードを入力させ、そのオブジェクト
    コードの各命令を解析させて、その各命令が遷移し得る
    プログラムカウンタを抽出させ、PC遷移情報として保
    存させるオブジェクトコード解析ステップと、 前記トレース情報及び前記PC遷移情報を用いてプログ
    ラムの暴走を検出させる暴走検出ステップと、 をコンピューターに実行させるプログラム評価プログラ
    ムを記録した機械読み取り可能な記録媒体。
  14. 【請求項14】 前記オブジェクトコードトレースステ
    ップは、 コンピューターに前記プログラムのオブジェクトコード
    を入力させ、そのオブジェクトコードを実行してトレー
    スデータを保存させ、このトレースデータから実行され
    た命令のプログラムカウンタの順序を抽出させ、これを
    トレース情報として保存させることを特徴とする請求項
    13記載のプログラム評価プログラムを記録した機械読
    み取り可能な記録媒体。
  15. 【請求項15】 前記オブジェクトコード解析ステップ
    は、 コンピューターに前記オブジェクトコードを入力させ、
    そのオブジェクトコードの各命令を解析させて、次に実
    行される命令アドレス、及び、割込処理によりプログラ
    ムカウンタが遷移し得る場合には、その割込処理ルーチ
    ンの先頭アドレスを抽出させ、PC遷移情報として保存
    させることを特徴とする請求項13記載のプログラム評
    価プログラムを記録した機械読み取り可能な記録媒体。
  16. 【請求項16】 前記暴走検出ステップは、 コンピューターに命令の実行順序で保存された前記トレ
    ース情報の所定のプログラムカウンタと、そのプログラ
    ムカウンタに係るPC遷移情報を対応させ、 前記トレース情報に保存されたプログラムカウンタの次
    のプログラムカウンタがPC遷移情報に保存された命令
    が遷移し得るプログラムカウンタに含まれるか否かを解
    析させることで自動的にプログラムの暴走を検出させる
    ことを特徴とする請求項13記載のプログラム評価プロ
    グラムを記録した機械読み取り可能な記録媒体。
JP9099284A 1997-04-16 1997-04-16 プログラム評価装置、プログラム評価方法、及び、プログラム評価プログラムを記録した機械読み取り可能な記録媒体 Pending JPH10289128A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9099284A JPH10289128A (ja) 1997-04-16 1997-04-16 プログラム評価装置、プログラム評価方法、及び、プログラム評価プログラムを記録した機械読み取り可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9099284A JPH10289128A (ja) 1997-04-16 1997-04-16 プログラム評価装置、プログラム評価方法、及び、プログラム評価プログラムを記録した機械読み取り可能な記録媒体

Publications (1)

Publication Number Publication Date
JPH10289128A true JPH10289128A (ja) 1998-10-27

Family

ID=14243360

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9099284A Pending JPH10289128A (ja) 1997-04-16 1997-04-16 プログラム評価装置、プログラム評価方法、及び、プログラム評価プログラムを記録した機械読み取り可能な記録媒体

Country Status (1)

Country Link
JP (1) JPH10289128A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7359834B2 (en) * 2004-08-13 2008-04-15 Sun Microsystems, Inc. Monitoring system-calls to identify runaway processes within a computer system
JP2010049407A (ja) * 2008-08-20 2010-03-04 Fuji Xerox Co Ltd データ処理装置、情報処理装置、画像形成装置、およびデータ処理プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7359834B2 (en) * 2004-08-13 2008-04-15 Sun Microsystems, Inc. Monitoring system-calls to identify runaway processes within a computer system
JP2010049407A (ja) * 2008-08-20 2010-03-04 Fuji Xerox Co Ltd データ処理装置、情報処理装置、画像形成装置、およびデータ処理プログラム

Similar Documents

Publication Publication Date Title
US6282601B1 (en) Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt
TWI544410B (zh) 利用執行單步驟以進行編碼診斷
US6785883B1 (en) Software system for tracing data
JPH10289128A (ja) プログラム評価装置、プログラム評価方法、及び、プログラム評価プログラムを記録した機械読み取り可能な記録媒体
JPS60159951A (ja) 情報処理装置におけるトレ−ス方式
US5813039A (en) Guest execution control system, method and computer process for a virtual machine system
JP2653412B2 (ja) ブレークポイント設定方法
JPH06348543A (ja) 入出力シミュレータとの接続方法
KR950005523B1 (ko) 프로그램어블 로직 콘트롤러의 스텝 런 처리방법
JPH01205245A (ja) 電子計算機の周辺系及び回線系装置の自動トレース方式
JPH0391055A (ja) ハードウエアロックのセット方法、ハードウエアロック制御装置、ハードウエアロックの検出方法と装置
JP2002055846A (ja) 障害検出システムおよび障害検出方法
JPH06266630A (ja) トレース機能付き入出力制御装置
JPS61213937A (ja) 情報処理システムのトレ−ス方式
JPH0432418B2 (ja)
JPH10320232A (ja) マイクロプログラムデバッグ装置
JPH08328902A (ja) ソフトウェア開発支援装置
JPH05216718A (ja) デバッグ方法
JPH01279330A (ja) エラー処理方式
JPH04107644A (ja) オンライン中の情報収集方式
JPH0333940A (ja) 評価用マイクロプロセッサ
JPH08123734A (ja) データ格納領域のデータの破壊発生チェック方法及びプログラムの暴走チェック方法、並びにデータ格納領域のデータの破壊発生原因探究方法及びプログラムの暴走原因探究方法
JPH01246638A (ja) 書込み命令の領域誤り判定方式
JPS6058491B2 (ja) エラ処理方式
JPH0481939A (ja) マイクロコンピュータの制御方式