JPH10124350A - マイクロコンピュータ用プログラムのデバッグ方法及びデバッグ装置 - Google Patents
マイクロコンピュータ用プログラムのデバッグ方法及びデバッグ装置Info
- Publication number
- JPH10124350A JPH10124350A JP8279639A JP27963996A JPH10124350A JP H10124350 A JPH10124350 A JP H10124350A JP 8279639 A JP8279639 A JP 8279639A JP 27963996 A JP27963996 A JP 27963996A JP H10124350 A JPH10124350 A JP H10124350A
- Authority
- JP
- Japan
- Prior art keywords
- function
- argument
- parameter
- debug
- program
- 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.)
- Withdrawn
Links
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
(57)【要約】
【課題】 この発明は、高級言語のプログラムにおい
て、プログラムの実行をブレークさせることなく、関数
へ渡される引数の値、又は許容範囲を越える引数を渡し
たモジュール又は引数に関するエラー処理を評価できる
マイクロコンピュータ用プログラムのデバッグ方法及び
デバッグ装置を提供することにある。 【解決手段】 高級言語コンパイラで生成されてプログ
ラムメモリ2に記憶されたプログラムにデバッグモジュ
ールを埋め込み、このデバッグモジュールを評価用CP
U1で実行することにより、関数に渡された引数の値、
又は特定の引数の値が許容範囲を越えている場合にトレ
ースメモリ装置5に記録し、あるいは関数の引数にダミ
ー値を渡すように構成される。
て、プログラムの実行をブレークさせることなく、関数
へ渡される引数の値、又は許容範囲を越える引数を渡し
たモジュール又は引数に関するエラー処理を評価できる
マイクロコンピュータ用プログラムのデバッグ方法及び
デバッグ装置を提供することにある。 【解決手段】 高級言語コンパイラで生成されてプログ
ラムメモリ2に記憶されたプログラムにデバッグモジュ
ールを埋め込み、このデバッグモジュールを評価用CP
U1で実行することにより、関数に渡された引数の値、
又は特定の引数の値が許容範囲を越えている場合にトレ
ースメモリ装置5に記録し、あるいは関数の引数にダミ
ー値を渡すように構成される。
Description
【0001】
【発明の属する技術分野】本発明は、マイクロコンピュ
ータ用プログラムを開発する際に用いられるデバッグ方
法及びデバッグ装置に関し、特にマイクロコンピュータ
用のICE(インサーキットエミュレータ)に使用する
と有効になる技術に関する。
ータ用プログラムを開発する際に用いられるデバッグ方
法及びデバッグ装置に関し、特にマイクロコンピュータ
用のICE(インサーキットエミュレータ)に使用する
と有効になる技術に関する。
【0002】
【従来の技術】マイクロコンピュータ用のプログラムを
デバッグする場合に、ICEがよく使用される。プログ
ラムがC言語のような高級言語でコーディングされてい
る場合は、プログラムの動作を検査する過程で、メイン
モジュールが関数の引数へ正しい値を渡しているかを検
査することがある。
デバッグする場合に、ICEがよく使用される。プログ
ラムがC言語のような高級言語でコーディングされてい
る場合は、プログラムの動作を検査する過程で、メイン
モジュールが関数の引数へ正しい値を渡しているかを検
査することがある。
【0003】また、プログラムによってはハードウェア
にエラーが発生した場合に復旧処理を行うためのエラー
処理関数を実行するものがある。エラー処理関数はメイ
ンモジュールから引数にエラーコードを渡すようになっ
ている場合がよくある。このような場合に、エラー処理
関数のデバッグでは、プログラムがハードエラー発生時
に復旧処理を正しく行うか否かを検査するために、意図
的に引数にエラーコードを渡したい場合がある。
にエラーが発生した場合に復旧処理を行うためのエラー
処理関数を実行するものがある。エラー処理関数はメイ
ンモジュールから引数にエラーコードを渡すようになっ
ている場合がよくある。このような場合に、エラー処理
関数のデバッグでは、プログラムがハードエラー発生時
に復旧処理を正しく行うか否かを検査するために、意図
的に引数にエラーコードを渡したい場合がある。
【0004】これらの一連のデバッグ作業において、従
来のICEでは、関数のエントリアドレスでプログラム
の実行を一時中断(ブレーク)させ、ICEのコマンド
で引数の値を表示させたり変更してから再びプログラム
の実行を再開させていた。
来のICEでは、関数のエントリアドレスでプログラム
の実行を一時中断(ブレーク)させ、ICEのコマンド
で引数の値を表示させたり変更してから再びプログラム
の実行を再開させていた。
【0005】しかし、例えば3相モータ制御のような機
械制御プログラムにおいてプログラムの実行をブレーク
させると、ブレーク中はモータの出力制御が中断される
ため、モータが焼け付きを起こす等の危険があった。従
って従来のICEでは、このようなプログラムのデバッ
グでは、プログラムの実行を停止させられない部分のデ
バッグは困難であった。
械制御プログラムにおいてプログラムの実行をブレーク
させると、ブレーク中はモータの出力制御が中断される
ため、モータが焼け付きを起こす等の危険があった。従
って従来のICEでは、このようなプログラムのデバッ
グでは、プログラムの実行を停止させられない部分のデ
バッグは困難であった。
【0006】
【発明が解決しようとする課題】以上説明したように、
タイミングが重要となるものやバスをモニターしている
だけではデバッグ作業が不可能な、例えば高級言語プロ
グラムにおける関数の引数やエラー処理関数をデバッグ
する従来のデバッグ方法においては、デバッグ対象とな
るマイクロコンピュータのプログラムを一時中断させて
デバッグを行っていた。このため、このプログラムによ
り制御されている制御対象に不具合が生じる場合があっ
た。
タイミングが重要となるものやバスをモニターしている
だけではデバッグ作業が不可能な、例えば高級言語プロ
グラムにおける関数の引数やエラー処理関数をデバッグ
する従来のデバッグ方法においては、デバッグ対象とな
るマイクロコンピュータのプログラムを一時中断させて
デバッグを行っていた。このため、このプログラムによ
り制御されている制御対象に不具合が生じる場合があっ
た。
【0007】そこで、この発明は、上記に鑑みてなされ
たものであり、その目的とするところは、高級言語のプ
ログラムにおいて、プログラムの実行をブレークさせる
ことなく、関数へ渡される引数の値、又は許容範囲を越
える引数を渡したモジュール、又は引数に関するエラー
処理を評価できるマイクロコンピュータ用プログラムの
デバッグ方法及びデバッグ装置を提供することにある。
たものであり、その目的とするところは、高級言語のプ
ログラムにおいて、プログラムの実行をブレークさせる
ことなく、関数へ渡される引数の値、又は許容範囲を越
える引数を渡したモジュール、又は引数に関するエラー
処理を評価できるマイクロコンピュータ用プログラムの
デバッグ方法及びデバッグ装置を提供することにある。
【0008】
【課題を解決するための手段】上記目的を達成するため
に、請求項1記載の発明は、デバッグ対象となるプログ
ラムを実行処理する評価用CPUが実行するデバッグプ
ログラムに含まれるメインモジュールが評価対象となる
関数を呼び出して実行する際に、前記メインモジュール
が前記関数に渡す引数を前記評価用CPU内の第1の記
憶装置に記憶する第1のステップと、前記メインモジュ
ールが前記関数を呼び出す第2のステップと、前記第2
のステップで前記関数が呼び出されると、前記関数を実
行する前に前記引数の総サイズを前記第1の記憶装置に
記憶する第3のステップと、前記関数のエントリアドレ
スと、前記関数を呼び出したメインモジュールの呼び出
しアドレスと、前記第1の記憶装置に記憶された前記関
数の引数を前記評価用CPU外の第2の記憶装置に収集
記憶するデバッグモジュールを、前記関数を実行する前
に前記第3のステップに続いて前記デバッグプログラム
から呼び出し実行する第4のステップを有し、前記デバ
ッグモジュールの実行は、前記関数のエントリアドレス
を求める第1のステップと、前記第1のステップで得ら
れた前記関数のエントリアドレスを前記評価用CPU外
に出力する第2のステップと、前記関数のエントリアド
レスの出力を検出して、前記関数のエントリアドレスを
前記第2の記憶装置に記憶する第3のステップと、前記
関数を呼び出したメインモジュールの呼び出しアドレス
を求める第4のステップと、前記第4のステップで得ら
れた前記関数の呼び出しアドレスを前記評価用CPU外
に出力する第5のステップと、前記関数の呼び出しアド
レスの出力を検出して、前記関数の呼び出しアドレスを
前記第2の記憶装置に記憶する第6のステップと、前記
第1の記憶装置に記憶された前記引数の総サイズに基づ
いて前記第1の記憶装置に記憶された引数を前記評価用
CPU外に出力する第7のステップと、前記引数の出力
を検出して、前記引数を前記第2の記憶装置に記憶する
第8のステップとを有し、前記関数に渡される引数を評
価することを特徴とする。
に、請求項1記載の発明は、デバッグ対象となるプログ
ラムを実行処理する評価用CPUが実行するデバッグプ
ログラムに含まれるメインモジュールが評価対象となる
関数を呼び出して実行する際に、前記メインモジュール
が前記関数に渡す引数を前記評価用CPU内の第1の記
憶装置に記憶する第1のステップと、前記メインモジュ
ールが前記関数を呼び出す第2のステップと、前記第2
のステップで前記関数が呼び出されると、前記関数を実
行する前に前記引数の総サイズを前記第1の記憶装置に
記憶する第3のステップと、前記関数のエントリアドレ
スと、前記関数を呼び出したメインモジュールの呼び出
しアドレスと、前記第1の記憶装置に記憶された前記関
数の引数を前記評価用CPU外の第2の記憶装置に収集
記憶するデバッグモジュールを、前記関数を実行する前
に前記第3のステップに続いて前記デバッグプログラム
から呼び出し実行する第4のステップを有し、前記デバ
ッグモジュールの実行は、前記関数のエントリアドレス
を求める第1のステップと、前記第1のステップで得ら
れた前記関数のエントリアドレスを前記評価用CPU外
に出力する第2のステップと、前記関数のエントリアド
レスの出力を検出して、前記関数のエントリアドレスを
前記第2の記憶装置に記憶する第3のステップと、前記
関数を呼び出したメインモジュールの呼び出しアドレス
を求める第4のステップと、前記第4のステップで得ら
れた前記関数の呼び出しアドレスを前記評価用CPU外
に出力する第5のステップと、前記関数の呼び出しアド
レスの出力を検出して、前記関数の呼び出しアドレスを
前記第2の記憶装置に記憶する第6のステップと、前記
第1の記憶装置に記憶された前記引数の総サイズに基づ
いて前記第1の記憶装置に記憶された引数を前記評価用
CPU外に出力する第7のステップと、前記引数の出力
を検出して、前記引数を前記第2の記憶装置に記憶する
第8のステップとを有し、前記関数に渡される引数を評
価することを特徴とする。
【0009】請求項2記載の発明は、デバッグ対象とな
るプログラムを実行処理する評価用CPUが実行するデ
バッグプログラムに、評価対象となる関数を指定するパ
ラメータと、前記関数に渡されて評価対象となる引数を
指定するパラメータと、前記引数が所定値内であるか否
かを示すパラメータを、前記デバッグプログラムを実行
する前に前記デバッグプログラムに設定する第1のステ
ップと、前記評価用CPUが実行するデバッグプログラ
ムに含まれるメインモジュールが評価対象となる関数を
呼び出して実行する際に、前記メインモジュールが前記
関数に渡す引数を前記評価用CPU内の第1の記憶装置
に記憶する第2のステップと、前記メインモジュールが
前記関数を呼び出す第3のステップと、前記第3のステ
ップで呼び出された関数が前記パラメータで指定された
関数で、かつ該関数の前記パラメータで指定された引数
が前記パラメータで設定された所定値外である場合に
は、前記引数と前記引数の関数を呼び出したメインモジ
ュールの呼び出しアドレスを前記評価用CPU外の第2
の記憶装置に収集記憶するデバッグモジュールを、前記
関数を実行する前に前記第3のステップに続いて前記デ
バッグプログラムから呼び出し実行する第4のステップ
を有し、前記デバッグモジュールの実行は、前記メイン
モジュールによって呼び出された関数が前記パラメータ
で指定された関数であるか否かを判定する第1のステッ
プと、前記メインモジュールによって呼び出された関数
が前記パラメータで指定された評価対象となる関数であ
る場合は、該関数の前記パラメータで指定された引数が
前記パラメータで指定された所定値内であるか否かを判
定する第2のステップと、前記第2のステップで前記引
数が所定値外である場合には、前記引数を前記第1の記
憶装置から前記評価用CPU外に出力する第3のステッ
プと、前記引数の出力を検出して、前記引数を前記第2
の記憶装置に記憶する第4のステップと、前記関数を呼
び出したメインモジュールの呼び出しアドレスを求める
第5のステップと、前記第4のステップで得られた前記
関数の呼び出しアドレスを前記評価用CPU外に出力す
る第6のステップと、前記関数の呼び出しアドレスの出
力を検出して、前記関数の呼び出しアドレスを前記第2
の記憶装置に記憶する第7のステップとを有し、前記パ
ラメータで指定された関数に渡される引数を評価するこ
とを特徴とする。
るプログラムを実行処理する評価用CPUが実行するデ
バッグプログラムに、評価対象となる関数を指定するパ
ラメータと、前記関数に渡されて評価対象となる引数を
指定するパラメータと、前記引数が所定値内であるか否
かを示すパラメータを、前記デバッグプログラムを実行
する前に前記デバッグプログラムに設定する第1のステ
ップと、前記評価用CPUが実行するデバッグプログラ
ムに含まれるメインモジュールが評価対象となる関数を
呼び出して実行する際に、前記メインモジュールが前記
関数に渡す引数を前記評価用CPU内の第1の記憶装置
に記憶する第2のステップと、前記メインモジュールが
前記関数を呼び出す第3のステップと、前記第3のステ
ップで呼び出された関数が前記パラメータで指定された
関数で、かつ該関数の前記パラメータで指定された引数
が前記パラメータで設定された所定値外である場合に
は、前記引数と前記引数の関数を呼び出したメインモジ
ュールの呼び出しアドレスを前記評価用CPU外の第2
の記憶装置に収集記憶するデバッグモジュールを、前記
関数を実行する前に前記第3のステップに続いて前記デ
バッグプログラムから呼び出し実行する第4のステップ
を有し、前記デバッグモジュールの実行は、前記メイン
モジュールによって呼び出された関数が前記パラメータ
で指定された関数であるか否かを判定する第1のステッ
プと、前記メインモジュールによって呼び出された関数
が前記パラメータで指定された評価対象となる関数であ
る場合は、該関数の前記パラメータで指定された引数が
前記パラメータで指定された所定値内であるか否かを判
定する第2のステップと、前記第2のステップで前記引
数が所定値外である場合には、前記引数を前記第1の記
憶装置から前記評価用CPU外に出力する第3のステッ
プと、前記引数の出力を検出して、前記引数を前記第2
の記憶装置に記憶する第4のステップと、前記関数を呼
び出したメインモジュールの呼び出しアドレスを求める
第5のステップと、前記第4のステップで得られた前記
関数の呼び出しアドレスを前記評価用CPU外に出力す
る第6のステップと、前記関数の呼び出しアドレスの出
力を検出して、前記関数の呼び出しアドレスを前記第2
の記憶装置に記憶する第7のステップとを有し、前記パ
ラメータで指定された関数に渡される引数を評価するこ
とを特徴とする。
【0010】請求項3記載の発明は、デバッグ対象とな
るプログラムを実行処理する評価用CPUが実行するデ
バッグプログラムに、引数を置き換える関数を指定する
パラメータと、前記関数の置き換えられる引数を指定す
るパラメータと、引数の置き換え値を示すパラメータ
を、前記デバッグプログラムを実行する前に前記デバッ
グプログラムに設定する第1のステップと、前記評価用
CPUが実行するデバッグプログラムに含まれるメイン
モジュールが評価対象となる関数を呼び出して実行する
際に、前記メインモジュールが前記関数に渡す引数を前
記評価用CPU内の第1の記憶装置に記憶する第2のス
テップと、前記評価用CPUが実行するデバッグプログ
ラムに含まれるメインモジュールが前記関数を呼び出す
第3のステップと、前記パラメータで設定された関数の
引数を置き換え値に置き換え、前記デバッグプログラム
に含まれるデバッグモジュールを、前記関数を実行する
前に前記第3のステップに続いて前記デバッグプログラ
ムから呼び出し実行する第4のステップを有し、前記デ
バッグモジュールの実行は、前記メインモジュールによ
って呼び出された関数が前記パラメータで指定された関
数であるか否かを判定する第1のステップと、前記メイ
ンモジュールによって呼び出された関数が前記パラメー
タで指定された関数である場合は、該関数の前記パラメ
ータで指定された引数を前記パラメータで指定された置
き換え値に置き換える第2のステップを有することを特
徴とする。
るプログラムを実行処理する評価用CPUが実行するデ
バッグプログラムに、引数を置き換える関数を指定する
パラメータと、前記関数の置き換えられる引数を指定す
るパラメータと、引数の置き換え値を示すパラメータ
を、前記デバッグプログラムを実行する前に前記デバッ
グプログラムに設定する第1のステップと、前記評価用
CPUが実行するデバッグプログラムに含まれるメイン
モジュールが評価対象となる関数を呼び出して実行する
際に、前記メインモジュールが前記関数に渡す引数を前
記評価用CPU内の第1の記憶装置に記憶する第2のス
テップと、前記評価用CPUが実行するデバッグプログ
ラムに含まれるメインモジュールが前記関数を呼び出す
第3のステップと、前記パラメータで設定された関数の
引数を置き換え値に置き換え、前記デバッグプログラム
に含まれるデバッグモジュールを、前記関数を実行する
前に前記第3のステップに続いて前記デバッグプログラ
ムから呼び出し実行する第4のステップを有し、前記デ
バッグモジュールの実行は、前記メインモジュールによ
って呼び出された関数が前記パラメータで指定された関
数であるか否かを判定する第1のステップと、前記メイ
ンモジュールによって呼び出された関数が前記パラメー
タで指定された関数である場合は、該関数の前記パラメ
ータで指定された引数を前記パラメータで指定された置
き換え値に置き換える第2のステップを有することを特
徴とする。
【0011】請求項4記載の発明は、メインモジュール
と、評価対象となる関数の引数を評価するデバッグモジ
ュールと、前記デバッグモジュールがデータを出力する
ためのアドレス領域を含むデバッグプログラムを格納す
るプログラムメモリと、前記プログラムメモリに格納さ
れた前記メインモジュールによって関数を呼び出して実
行する際に、前記関数の引数を内部の第1の記憶装置に
記憶し、前記プログラムメモリに格納されたデバッグモ
ジュールの実行によって前記関数のエントリアドレスと
前記関数を呼び出したメインモジュールの呼び出しアド
レスを求め、求めた関数のエントリアドレスと関数の呼
び出しアドレス及び前記第1の記憶装置に記憶された引
数を前記デバッグプログラムのアドレス領域に出力する
評価用CPUと、前記関数のエントリアドレスと前記関
数の呼び出しアドレス及び前記第1の記憶装置に記憶さ
れた引数が前記評価用CPUから出力されたことを検出
する検出回路と、前記評価用CPUから出力されて、前
記検出回路によって検出された前記関数のエントリアド
レスと前記関数の呼び出しアドレス及び前記第1の記憶
装置に記憶された引数を収集記憶する第2の記憶装置
と、前記第2の記憶装置の書き込みを制御する書き込み
制御回路を有して構成される。
と、評価対象となる関数の引数を評価するデバッグモジ
ュールと、前記デバッグモジュールがデータを出力する
ためのアドレス領域を含むデバッグプログラムを格納す
るプログラムメモリと、前記プログラムメモリに格納さ
れた前記メインモジュールによって関数を呼び出して実
行する際に、前記関数の引数を内部の第1の記憶装置に
記憶し、前記プログラムメモリに格納されたデバッグモ
ジュールの実行によって前記関数のエントリアドレスと
前記関数を呼び出したメインモジュールの呼び出しアド
レスを求め、求めた関数のエントリアドレスと関数の呼
び出しアドレス及び前記第1の記憶装置に記憶された引
数を前記デバッグプログラムのアドレス領域に出力する
評価用CPUと、前記関数のエントリアドレスと前記関
数の呼び出しアドレス及び前記第1の記憶装置に記憶さ
れた引数が前記評価用CPUから出力されたことを検出
する検出回路と、前記評価用CPUから出力されて、前
記検出回路によって検出された前記関数のエントリアド
レスと前記関数の呼び出しアドレス及び前記第1の記憶
装置に記憶された引数を収集記憶する第2の記憶装置
と、前記第2の記憶装置の書き込みを制御する書き込み
制御回路を有して構成される。
【0012】請求項5記載の発明は、メインモジュール
と、評価対象となる関数の引数を評価するデバッグモジ
ュールと、評価対象となる関数を指定するパラメータと
前記関数に渡されて評価対象となる引数を指定するパラ
メータと前記引数が所定値内であるか否かを示すパラメ
ータが格納されるパラメータ格納領域と、前記デバッグ
モジュールがデータを出力するためのアドレス領域を含
むデバッグプログラムを格納するプログラムメモリと、
前記プログラムメモリに格納された前記メインモジュー
ルによって関数を呼び出して実行する際に、前記関数の
引数を内部の第1の記憶装置に記憶し、前記プログラム
メモリに格納されたデバッグモジュールの実行によって
前記メインモジュールによって呼び出された関数が前記
パラメータによって指定された関数か否かを判定し、指
定された関数である場合には、該関数の前記パラメータ
で指定された引数が前記パラメータで設定された所定値
内であるか否かを判定し、所定値外である場合には、該
引数を前記第1の記憶装置から前記デバッグプログラム
のアドレス領域に出力し、前記引数の関数を呼び出した
メインモジュールの呼び出しアドレスを求め、求めた関
数の呼び出しアドレスを前記デバッグプログラムのアド
レス領域に出力する評価用CPUと、前記引数及び前記
関数の呼び出しアドレスが前記評価用CPUから出力さ
れたことを検出する検出回路と、前記評価用CPUから
出力されて、前記検出回路によって検出された前記引数
及び前記関数の呼び出しアドレスを収集記憶する第2の
記憶装置と、前記第2の記憶装置の書き込みを制御する
書き込み制御回路を有して構成される。
と、評価対象となる関数の引数を評価するデバッグモジ
ュールと、評価対象となる関数を指定するパラメータと
前記関数に渡されて評価対象となる引数を指定するパラ
メータと前記引数が所定値内であるか否かを示すパラメ
ータが格納されるパラメータ格納領域と、前記デバッグ
モジュールがデータを出力するためのアドレス領域を含
むデバッグプログラムを格納するプログラムメモリと、
前記プログラムメモリに格納された前記メインモジュー
ルによって関数を呼び出して実行する際に、前記関数の
引数を内部の第1の記憶装置に記憶し、前記プログラム
メモリに格納されたデバッグモジュールの実行によって
前記メインモジュールによって呼び出された関数が前記
パラメータによって指定された関数か否かを判定し、指
定された関数である場合には、該関数の前記パラメータ
で指定された引数が前記パラメータで設定された所定値
内であるか否かを判定し、所定値外である場合には、該
引数を前記第1の記憶装置から前記デバッグプログラム
のアドレス領域に出力し、前記引数の関数を呼び出した
メインモジュールの呼び出しアドレスを求め、求めた関
数の呼び出しアドレスを前記デバッグプログラムのアド
レス領域に出力する評価用CPUと、前記引数及び前記
関数の呼び出しアドレスが前記評価用CPUから出力さ
れたことを検出する検出回路と、前記評価用CPUから
出力されて、前記検出回路によって検出された前記引数
及び前記関数の呼び出しアドレスを収集記憶する第2の
記憶装置と、前記第2の記憶装置の書き込みを制御する
書き込み制御回路を有して構成される。
【0013】請求項6記載の発明は、メインモジュール
と、評価対象となる関数の引数を評価するデバッグモジ
ュールと、引数を置き換える関数を指定するパラメータ
と前記関数の置き換えられる引数を指定するパラメータ
と前記引数の置き換え値を示すパラメータが格納される
パラメータ格納領域を含むデバッグプログラムを格納す
るプログラムメモリと、前記プログラムメモリに格納さ
れた前記メインモジュールによって関数を呼び出して実
行する際に、前記関数の引数を内部の第1の記憶装置に
記憶し、前記プログラムメモリに格納されたデバッグモ
ジュールの実行によって前記メインモジュールによって
呼び出された関数が前記パラメータによって指定された
関数か否かを判定し、指定された関数である場合には、
該関数の前記パラメータで指定された引数を前記パラメ
ータで設定された置き換え値に置き換える評価用CPU
を有して構成される。
と、評価対象となる関数の引数を評価するデバッグモジ
ュールと、引数を置き換える関数を指定するパラメータ
と前記関数の置き換えられる引数を指定するパラメータ
と前記引数の置き換え値を示すパラメータが格納される
パラメータ格納領域を含むデバッグプログラムを格納す
るプログラムメモリと、前記プログラムメモリに格納さ
れた前記メインモジュールによって関数を呼び出して実
行する際に、前記関数の引数を内部の第1の記憶装置に
記憶し、前記プログラムメモリに格納されたデバッグモ
ジュールの実行によって前記メインモジュールによって
呼び出された関数が前記パラメータによって指定された
関数か否かを判定し、指定された関数である場合には、
該関数の前記パラメータで指定された引数を前記パラメ
ータで設定された置き換え値に置き換える評価用CPU
を有して構成される。
【0014】
【発明の実施の形態】以下、図面を用いて本発明の実施
形態を説明する。
形態を説明する。
【0015】図1は請求項1〜3記載の発明の一実施形
態に係るデバッグ方法を実現するICE(インサーキッ
トエミュレータ)、又は請求項4〜6記載の発明の一実
施形態に係るデバッグ装置となるICEの構成を示す図
であり、図2は図1に示すトレースメモリ装置のデータ
イメージを示す図であり、図3は本発明によるコンパイ
ラが生成するデバッグプログラムの基本構成とメモリ配
置を示す図である。なお、図1〜図3に示すものは、請
求項1〜6の発明のそれぞれの実施形態に共通するもの
である。
態に係るデバッグ方法を実現するICE(インサーキッ
トエミュレータ)、又は請求項4〜6記載の発明の一実
施形態に係るデバッグ装置となるICEの構成を示す図
であり、図2は図1に示すトレースメモリ装置のデータ
イメージを示す図であり、図3は本発明によるコンパイ
ラが生成するデバッグプログラムの基本構成とメモリ配
置を示す図である。なお、図1〜図3に示すものは、請
求項1〜6の発明のそれぞれの実施形態に共通するもの
である。
【0016】図1において、ICEは、デバッグプログ
ラムを実行処理する評価用CPU1と、図3に示すデバ
ッグプログラムを格納するプログラムメモリ2と、評価
用CPU1とプログラムメモリ2とをアドレスバス、デ
ータバス、ステータスバスを介して接続するバス回路3
と、アドレスバスのアドレスと予め設定されたアドレス
値を比較して両者が一致した場合にトリガ信号を出力す
るバス比較回路4と、評価用CPU1のメモリアクセス
の様子がフレーム単位で書き込まれ、1フレームには評
価用CPU1がアクセスしたアドレスバスの値、データ
バスの値及びステータスバスの値がまとめて書き込まれ
るトレースメモリ装置5と、入力がステータスバスに接
続されてトレースメモリ装置5のライトストローブ信号
を生成出力するライトストローブ信号生成回路6と、バ
ス比較回路4のトリガ信号を受けて、トリガ信号が1回
出力される度にカウンタが+1されてフレームアドレス
をトレースメモリ装置5のデータ書き込みアドレスとし
てトレースメモリ装置5に出力するフレームアドレス生
成用カウンタ7と、シリアルポートやパラレルポート又
はLAN等の通信インタフェースを介してホストシステ
ム9と接続され、トレースメモリ装置5の内容をホスト
システム9に読み出し制御する制御用CPU8を備えて
構成される。
ラムを実行処理する評価用CPU1と、図3に示すデバ
ッグプログラムを格納するプログラムメモリ2と、評価
用CPU1とプログラムメモリ2とをアドレスバス、デ
ータバス、ステータスバスを介して接続するバス回路3
と、アドレスバスのアドレスと予め設定されたアドレス
値を比較して両者が一致した場合にトリガ信号を出力す
るバス比較回路4と、評価用CPU1のメモリアクセス
の様子がフレーム単位で書き込まれ、1フレームには評
価用CPU1がアクセスしたアドレスバスの値、データ
バスの値及びステータスバスの値がまとめて書き込まれ
るトレースメモリ装置5と、入力がステータスバスに接
続されてトレースメモリ装置5のライトストローブ信号
を生成出力するライトストローブ信号生成回路6と、バ
ス比較回路4のトリガ信号を受けて、トリガ信号が1回
出力される度にカウンタが+1されてフレームアドレス
をトレースメモリ装置5のデータ書き込みアドレスとし
てトレースメモリ装置5に出力するフレームアドレス生
成用カウンタ7と、シリアルポートやパラレルポート又
はLAN等の通信インタフェースを介してホストシステ
ム9と接続され、トレースメモリ装置5の内容をホスト
システム9に読み出し制御する制御用CPU8を備えて
構成される。
【0017】トレースメモリ装置5に格納されるトレー
スメモリデータは、図2に示すように、1フレーム毎に
アドレスバスのアドレス情報、データバスのデータ、ス
テータスバスのステータス情報がセットで格納される。
スメモリデータは、図2に示すように、1フレーム毎に
アドレスバスのアドレス情報、データバスのデータ、ス
テータスバスのステータス情報がセットで格納される。
【0018】評価用CPU1で実行処理されるデバッグ
プログラムは、図3に示すように構成されている。デバ
ッグプログラムは、大別してメインモジュールと、メイ
ンモジュールによって読み出される関数 (function)
と、デバッグモジュールを埋め込むための予約領域(Deb
ug_address)と、デバッグモジュールが引数等のデータ
を出力するためのアドレス領域(Interface_port) と、
デバッグモジュールに渡すパラメータを格納するパラメ
ータ格納領域(Debug_parameter)を有して構成されてい
る。
プログラムは、図3に示すように構成されている。デバ
ッグプログラムは、大別してメインモジュールと、メイ
ンモジュールによって読み出される関数 (function)
と、デバッグモジュールを埋め込むための予約領域(Deb
ug_address)と、デバッグモジュールが引数等のデータ
を出力するためのアドレス領域(Interface_port) と、
デバッグモジュールに渡すパラメータを格納するパラメ
ータ格納領域(Debug_parameter)を有して構成されてい
る。
【0019】本発明によるコンパイラが出力するプログ
ラムでは、各関数のエントリアドレスに引数の総サイズ
(Total)をスタックへ積むための命令(“SP=
SP−2”、“(SP+1)←Total[0]”およ
び“(SP+2)←Total[1]”)と、デバッグ
モジュールを呼び出すためのCALL命令(“CALL
Debug_address”)があらかじめ埋め込
まれる。CALL命令の直後に埋め込まれる“SP=S
P+2”は、引数の総サイズ(Total)を積むのに
使用したスタックをデバッグモジュールの処理が終了し
た後に解放するためのものである。CALL命令の飛び
先アドレス(Debug_address)は、デバッ
グモジュールを埋め込むための予約領域の先頭アドレス
を指す。Debug_address以降のメモリ空間
には後述のデバッグモジュール1から3のいずれか一つ
を埋め込むのに十分な空き領域が予め確保されるように
なっている。コンパイラがオブジェクトを生成した時点
では、Debug_address以降にはRETUR
N命令だけが書き込まれる。これは、デバッグモジュー
ルが埋め込まれなくても単体でプログラムを実行できる
ようにするための命令である。
ラムでは、各関数のエントリアドレスに引数の総サイズ
(Total)をスタックへ積むための命令(“SP=
SP−2”、“(SP+1)←Total[0]”およ
び“(SP+2)←Total[1]”)と、デバッグ
モジュールを呼び出すためのCALL命令(“CALL
Debug_address”)があらかじめ埋め込
まれる。CALL命令の直後に埋め込まれる“SP=S
P+2”は、引数の総サイズ(Total)を積むのに
使用したスタックをデバッグモジュールの処理が終了し
た後に解放するためのものである。CALL命令の飛び
先アドレス(Debug_address)は、デバッ
グモジュールを埋め込むための予約領域の先頭アドレス
を指す。Debug_address以降のメモリ空間
には後述のデバッグモジュール1から3のいずれか一つ
を埋め込むのに十分な空き領域が予め確保されるように
なっている。コンパイラがオブジェクトを生成した時点
では、Debug_address以降にはRETUR
N命令だけが書き込まれる。これは、デバッグモジュー
ルが埋め込まれなくても単体でプログラムを実行できる
ようにするための命令である。
【0020】次に、請求項1又は4記載の発明の一実施
形態について説明する。
形態について説明する。
【0021】この実施形態は、メインモジュールから関
数へ渡される引数の値を記録する方法であり、図4はこ
の実施形態のデバッグモジュール1の処理の流れ(ステ
ップ10〜ステップ19)を示す図である。
数へ渡される引数の値を記録する方法であり、図4はこ
の実施形態のデバッグモジュール1の処理の流れ(ステ
ップ10〜ステップ19)を示す図である。
【0022】デバッグモジュール1は前記コンパイラが
生成したプログラムをICEにダウンロードする時に、
ICEがDebug_address以降の予約領域に
書き込む。プログラムの実行を開始する前にバス比較回
路4に次の設定を行う。バス比較回路4のアドレス比較
器(ADDRESS BUS COMPARATOR)
にはアドレス比較要因としてIneterface_p
ortを設定する。
生成したプログラムをICEにダウンロードする時に、
ICEがDebug_address以降の予約領域に
書き込む。プログラムの実行を開始する前にバス比較回
路4に次の設定を行う。バス比較回路4のアドレス比較
器(ADDRESS BUS COMPARATOR)
にはアドレス比較要因としてIneterface_p
ortを設定する。
【0023】そして、プログラムの実行を開始すると、
関数が実行された時に、まず関数の入り口に埋め込まれ
た“CALL Debug_address”命令が実
行されデバッグモジュール1が呼び出される。デバッグ
モジュール1は、次の手順で関数(function)
のエントリアドレスをInterface_portへ
出力する。
関数が実行された時に、まず関数の入り口に埋め込まれ
た“CALL Debug_address”命令が実
行されデバッグモジュール1が呼び出される。デバッグ
モジュール1は、次の手順で関数(function)
のエントリアドレスをInterface_portへ
出力する。
【0024】デバッグモジュール1が呼び出された段階
では、図5のスタックメモリの状態に示すように、現在
のスタックポインタ(SP)の直前に、functio
nへの戻りアドレスが格納されている。functio
nへの戻りアドレスを取得して(ステップS10)、デ
バッグモジュール1を呼び出すための命令“SP=SP
−2”、“(SP+1)←Total[0],(SP+
2)←Total[1]”および“call Debu
g_address”の埋め込みコードの合計サイズを
差し引いてfunctionのエントリアドレスを求め
る(ステップS11)。続いて、ステップ11で求めた
functionのエントリアドレスを下位アドレス、
上位アドレスの順にInterface_portへ出
力する(ステップS12)。
では、図5のスタックメモリの状態に示すように、現在
のスタックポインタ(SP)の直前に、functio
nへの戻りアドレスが格納されている。functio
nへの戻りアドレスを取得して(ステップS10)、デ
バッグモジュール1を呼び出すための命令“SP=SP
−2”、“(SP+1)←Total[0],(SP+
2)←Total[1]”および“call Debu
g_address”の埋め込みコードの合計サイズを
差し引いてfunctionのエントリアドレスを求め
る(ステップS11)。続いて、ステップ11で求めた
functionのエントリアドレスを下位アドレス、
上位アドレスの順にInterface_portへ出
力する(ステップS12)。
【0025】次に、デバッグモジュール1は次の手順で
functionを呼び出したメインモジュール(ma
in_module)のアドレスをInterface
_portへ出力する。メインモジュールのアドレス
は、図5に示すスタックメモリ上では(SP+5+To
tal)以降に格納されている。この戻りアドレスを取
得して(ステップS13)、functionを呼び出
すためのCALL命令のコードサイズを引いてメインモ
ジュールの呼び出しアドレスを求める(ステップS1
4)。ステップ14で求めたメインモジュールの呼び出
しアドレスをInterface_portへ出力する
(ステップS15)。
functionを呼び出したメインモジュール(ma
in_module)のアドレスをInterface
_portへ出力する。メインモジュールのアドレス
は、図5に示すスタックメモリ上では(SP+5+To
tal)以降に格納されている。この戻りアドレスを取
得して(ステップS13)、functionを呼び出
すためのCALL命令のコードサイズを引いてメインモ
ジュールの呼び出しアドレスを求める(ステップS1
4)。ステップ14で求めたメインモジュールの呼び出
しアドレスをInterface_portへ出力する
(ステップS15)。
【0026】最後に、次の手順でスタック上に積まれて
いる全ての引数の値を出力する。
いる全ての引数の値を出力する。
【0027】カウンタを「1」にセットした後(ステッ
プS16)、スタックメモリ上の(SP+3)と(SP
+4)の位置から引数の合計サイズ(Total)を読
み出し、スタック上の最初の引数(arg_1)の格納
開始場所(SP+5+Total−1)から最後の引数
(arg_n)の格納開始場所(SP+5)の値を、カ
ウンタを増加されてカウンタの値(Count)<(T
otal)となるまで順次Interface_por
tへ出力する(ステップS17,S18,S19)。全
ての引数の値を出力した後、RETURN命令を実行し
てfunctionへ処理を戻す。
プS16)、スタックメモリ上の(SP+3)と(SP
+4)の位置から引数の合計サイズ(Total)を読
み出し、スタック上の最初の引数(arg_1)の格納
開始場所(SP+5+Total−1)から最後の引数
(arg_n)の格納開始場所(SP+5)の値を、カ
ウンタを増加されてカウンタの値(Count)<(T
otal)となるまで順次Interface_por
tへ出力する(ステップS17,S18,S19)。全
ての引数の値を出力した後、RETURN命令を実行し
てfunctionへ処理を戻す。
【0028】これまでの一連の処理においてデバッグモ
ジュール1がInterface_portへ出力した
データは、以下に説明するICEの動作によってトレー
スメモリ装置5に記録される。
ジュール1がInterface_portへ出力した
データは、以下に説明するICEの動作によってトレー
スメモリ装置5に記録される。
【0029】まず、デバッグモジュール1がInter
face_portへ値を1バイト書き込むと、バス回
路3のアドレスバスにはInterface_port
が、データバスにはデバッグモジュール1が出力した値
が出力される。ライトストローブ信号生成回路6はライ
ト信号をトレースメモリ装置5へ出力する。これによ
り、トレースメモリ装置5へバス回路3のデータが1フ
レーム分書き込まれる。バス比較回路4はアドレスバス
にInterface_portが出現するとトリガ信
号を出力する。フレームアドレス生成用カウンタ7はト
リガ信号を受けてトレースメモリ装置5のフレームアド
レスを+1する。
face_portへ値を1バイト書き込むと、バス回
路3のアドレスバスにはInterface_port
が、データバスにはデバッグモジュール1が出力した値
が出力される。ライトストローブ信号生成回路6はライ
ト信号をトレースメモリ装置5へ出力する。これによ
り、トレースメモリ装置5へバス回路3のデータが1フ
レーム分書き込まれる。バス比較回路4はアドレスバス
にInterface_portが出現するとトリガ信
号を出力する。フレームアドレス生成用カウンタ7はト
リガ信号を受けてトレースメモリ装置5のフレームアド
レスを+1する。
【0030】この一連の動作が繰り返され、トレースメ
モリ装置5へデバッグモジュール1がInterfac
e_portへ出力したデータが順次記録される。図6
にこの実施形態により記録されたトレースメモリ装置5
内のデータのイメージを示す。トレースメモリ装置5の
データバス記録部には、デバッグモジュール1が出力し
たデータが、functionエントリアドレス、fu
ncitonを呼び出したメインモジュールのアドレ
ス、全引数の値の順に書き込まれている。
モリ装置5へデバッグモジュール1がInterfac
e_portへ出力したデータが順次記録される。図6
にこの実施形態により記録されたトレースメモリ装置5
内のデータのイメージを示す。トレースメモリ装置5の
データバス記録部には、デバッグモジュール1が出力し
たデータが、functionエントリアドレス、fu
ncitonを呼び出したメインモジュールのアドレ
ス、全引数の値の順に書き込まれている。
【0031】プログラムの実行終了後に、制御用CPU
8がトレースメモリ装置5に記録された全データを読み
出し、ホストシステム9へ転送する。ホストシステム9
は転送されたデータを解析してレポートをコンソール画
面、ファイルあるいはプリンタへ出力する。例えば、図
7のサンプルプログラムに示すようなC言語のプログラ
ムを実行した場合には、図8のレポート1に示すような
レポートが出力される。このレポートでは、最初に実行
された関数名、例えばOutput_PortとOut
put_Portを呼び出したメインモジュールの名
前、例えばmainとその呼び出し行、例えば2行目、
3行目、そしてmainからOutput_portの
引数、例えばOutput_Address,Outp
ut_Dataに渡された値が出力されている。
8がトレースメモリ装置5に記録された全データを読み
出し、ホストシステム9へ転送する。ホストシステム9
は転送されたデータを解析してレポートをコンソール画
面、ファイルあるいはプリンタへ出力する。例えば、図
7のサンプルプログラムに示すようなC言語のプログラ
ムを実行した場合には、図8のレポート1に示すような
レポートが出力される。このレポートでは、最初に実行
された関数名、例えばOutput_PortとOut
put_Portを呼び出したメインモジュールの名
前、例えばmainとその呼び出し行、例えば2行目、
3行目、そしてmainからOutput_portの
引数、例えばOutput_Address,Outp
ut_Dataに渡された値が出力されている。
【0032】この実施形態においては、プログラムの実
行をブレークさせることなく関数へ渡された引数の値を
全て記録することができる。また、プログラムの実行終
了後に出力されるレポートを見ることにより、引数の値
を検査できる。レポートには関数を呼び出したメインモ
ジュールのアドレスも出力されるので、もし引数に不正
な値が渡されているようなら、呼び出し元のメインモジ
ュールを調べれば、プログラムの不具合原因の発見が容
易になる。
行をブレークさせることなく関数へ渡された引数の値を
全て記録することができる。また、プログラムの実行終
了後に出力されるレポートを見ることにより、引数の値
を検査できる。レポートには関数を呼び出したメインモ
ジュールのアドレスも出力されるので、もし引数に不正
な値が渡されているようなら、呼び出し元のメインモジ
ュールを調べれば、プログラムの不具合原因の発見が容
易になる。
【0033】次に、請求項2又は5記載の発明の一実施
形態を説明する。
形態を説明する。
【0034】この実施形態は、メインモジュールから関
数へ渡される引数の値が許容範囲外の場合に、トレース
メモリ装置5に記録する方法である。
数へ渡される引数の値が許容範囲外の場合に、トレース
メモリ装置5に記録する方法である。
【0035】図9はこの実施形態で使用するデバッグモ
ジュール2の処理の流れ(ステップ20〜ステップ2
9)を示す図である。
ジュール2の処理の流れ(ステップ20〜ステップ2
9)を示す図である。
【0036】デバッグモジュール2は前記コンパイラが
生成したプログラムをICEにダウンロードする時に、
ICEがDebug_address以降の予約領域に
書き込む。プログラムの実行を開始する前にバス比較回
路4に次の設定を行う。バス比較回路4のアドレス比較
器(ADDRESS BUS COMPARATOR)
にはアドレス比較要因としてInterface_po
rtを設定する。また、Debug_paramete
r以降の予約領域にある次のパラメータにデバッグモジ
ュール2へ渡すパラメータを設定する。
生成したプログラムをICEにダウンロードする時に、
ICEがDebug_address以降の予約領域に
書き込む。プログラムの実行を開始する前にバス比較回
路4に次の設定を行う。バス比較回路4のアドレス比較
器(ADDRESS BUS COMPARATOR)
にはアドレス比較要因としてInterface_po
rtを設定する。また、Debug_paramete
r以降の予約領域にある次のパラメータにデバッグモジ
ュール2へ渡すパラメータを設定する。
【0037】Function_address:値を
検査する関数のエントリアドレスを設定する。
検査する関数のエントリアドレスを設定する。
【0038】Arg_pos:値を検査する引数のスタ
ック上の位置を設定する。
ック上の位置を設定する。
【0039】Minimam:引数の値の最小値を設定
する。
する。
【0040】Maximum:引数の値の最大値を設定
する。
する。
【0041】プログラムの実行を開始すると、関数が実
行された時に、まず関数の入り口に埋め込まれた“CA
LL Debug_address”命令が実行されデ
バッグモジュール2が呼び出される。デバッグモジュー
ル2はまず次の手順で、デバッグモジュール2を呼び出
した関数がパラメータFunction_addres
sに設定された関数かどうかを調べる。
行された時に、まず関数の入り口に埋め込まれた“CA
LL Debug_address”命令が実行されデ
バッグモジュール2が呼び出される。デバッグモジュー
ル2はまず次の手順で、デバッグモジュール2を呼び出
した関数がパラメータFunction_addres
sに設定された関数かどうかを調べる。
【0042】デバッグモジュール2が呼び出された段階
では、図5のスタックメモリの状態に示すように、現在
のスタックポインタ(SP)の直前に、functio
nへの戻りアドレスが格納されている。functio
nへの戻りアドレスを取得し(Sステップ20)、デバ
ッグモジュール2を呼び出すための命令“SP=SP−
2”、“(SP+1)←Total[0],(SP+
2)←Total[1]”および“call Debu
g_address”の埋め込みコードの合計サイズを
差し引いてfunctionのエントリアドレスを求め
る(ステップS21)。
では、図5のスタックメモリの状態に示すように、現在
のスタックポインタ(SP)の直前に、functio
nへの戻りアドレスが格納されている。functio
nへの戻りアドレスを取得し(Sステップ20)、デバ
ッグモジュール2を呼び出すための命令“SP=SP−
2”、“(SP+1)←Total[0],(SP+
2)←Total[1]”および“call Debu
g_address”の埋め込みコードの合計サイズを
差し引いてfunctionのエントリアドレスを求め
る(ステップS21)。
【0043】ステップ21で求めたfunctionの
エントリアドレスをパラメータ(Function_a
ddress)に設定されたアドレスと一致するかを調
べる(ステップS22)。この処理で、functio
nのエントリアドレスとFunction_addre
ssの値が一致しなかったら対象関数ではないので、デ
バッグモジュール2はRETURN命令を実行して処理
をfunctionへ戻す。一方、一致したらデバッグ
モジュール2は更に次の処理を行う。
エントリアドレスをパラメータ(Function_a
ddress)に設定されたアドレスと一致するかを調
べる(ステップS22)。この処理で、functio
nのエントリアドレスとFunction_addre
ssの値が一致しなかったら対象関数ではないので、デ
バッグモジュール2はRETURN命令を実行して処理
をfunctionへ戻す。一方、一致したらデバッグ
モジュール2は更に次の処理を行う。
【0044】スタック上のArg_posで示される位
置に積まれた引数の値を読み出す(ステップS23)。
読み出した引数をパラメータMinimumの値と比較
する(ステップS24)。引数の値の大きさがMini
mumの値より大きい場合は、更にパラメータMaxi
mumの値と比較する(ステップS25)。引数の値が
(Minimum≦引数≦Maximum)ならば引数
の値は許容範囲に収まっているので、RETURN命令
を実行してfunctionへ処理を戻す。一方、引数
の値が(引数<Minimum)又は(引数>Maxi
mum)であるならば、エラーとなり次の処理が実行さ
れる。
置に積まれた引数の値を読み出す(ステップS23)。
読み出した引数をパラメータMinimumの値と比較
する(ステップS24)。引数の値の大きさがMini
mumの値より大きい場合は、更にパラメータMaxi
mumの値と比較する(ステップS25)。引数の値が
(Minimum≦引数≦Maximum)ならば引数
の値は許容範囲に収まっているので、RETURN命令
を実行してfunctionへ処理を戻す。一方、引数
の値が(引数<Minimum)又は(引数>Maxi
mum)であるならば、エラーとなり次の処理が実行さ
れる。
【0045】エラーとなった引数の値をInterfa
ce_portへ出力する(ステップS26)。fun
ctionを呼び出したメインモジュール(main_
module)の戻りアドレスを求める(ステップS2
7)。スタックメモリ上では(SP+5+Total)
以降にメインモジュールへの戻りアドレスが格納されて
いる。このメインモジュールへの戻りアドレスからfu
nctionを呼び出すためのCALL命令のコードサ
イズを差し引いてfunctionを呼び出したアドレ
スを求める(ステップS28)。ステップS28で求め
たメインモジュールの呼び出しアドレスをInterf
ace_portへ出力する(ステップS29)。この
デバッグモジュール2はRETURN命令を実行してf
unctionへ処理を戻す。
ce_portへ出力する(ステップS26)。fun
ctionを呼び出したメインモジュール(main_
module)の戻りアドレスを求める(ステップS2
7)。スタックメモリ上では(SP+5+Total)
以降にメインモジュールへの戻りアドレスが格納されて
いる。このメインモジュールへの戻りアドレスからfu
nctionを呼び出すためのCALL命令のコードサ
イズを差し引いてfunctionを呼び出したアドレ
スを求める(ステップS28)。ステップS28で求め
たメインモジュールの呼び出しアドレスをInterf
ace_portへ出力する(ステップS29)。この
デバッグモジュール2はRETURN命令を実行してf
unctionへ処理を戻す。
【0046】これまでの一連の処理においてデバッグモ
ジュール2がInterface_portへ出力した
データは、以下に説明するICEの動作によってトレー
スメモリ装置5へ記録される。
ジュール2がInterface_portへ出力した
データは、以下に説明するICEの動作によってトレー
スメモリ装置5へ記録される。
【0047】デバッグモジュール2はInterfac
e_portへ値を1バイト書き込むと、バス回路3の
アドレスバスにはInterface_portが、デ
ータバスにはデバッグモジュール2が出力した値が出力
される。ライトストローブ信号生成回路4はライト信号
をトレースメモリ装置5へ出力する。これにより、トレ
ースメモリ装置5へバス回路3のデータが1フレーム分
書き込まれる。バス比較回路4はアドレスバスにInt
erface_portが出現するとトリガ信号を出力
する。このトリガ信号を受けてカウンタの値、すなわち
トレースメモリ装置5のフレームアドレスが+1され次
のフレームアドレスを指す。
e_portへ値を1バイト書き込むと、バス回路3の
アドレスバスにはInterface_portが、デ
ータバスにはデバッグモジュール2が出力した値が出力
される。ライトストローブ信号生成回路4はライト信号
をトレースメモリ装置5へ出力する。これにより、トレ
ースメモリ装置5へバス回路3のデータが1フレーム分
書き込まれる。バス比較回路4はアドレスバスにInt
erface_portが出現するとトリガ信号を出力
する。このトリガ信号を受けてカウンタの値、すなわち
トレースメモリ装置5のフレームアドレスが+1され次
のフレームアドレスを指す。
【0048】このような一連の動作が繰り返されて、ト
レースメモリ装置5へデバッグモジュール2がInte
rface_portへ出力したデータが順次記録され
る。図10にこの実施形態により記録されたトレースメ
モリ装置5内のトレースデータのイメージを示す。トレ
ースメモリ装置5のデータバス記録部にデバッグモジュ
ール2が出力したデータが、許容範囲を越えた引数の
値、functionを呼び出したメインモジュールの
アドレスの順に書き込まれている。
レースメモリ装置5へデバッグモジュール2がInte
rface_portへ出力したデータが順次記録され
る。図10にこの実施形態により記録されたトレースメ
モリ装置5内のトレースデータのイメージを示す。トレ
ースメモリ装置5のデータバス記録部にデバッグモジュ
ール2が出力したデータが、許容範囲を越えた引数の
値、functionを呼び出したメインモジュールの
アドレスの順に書き込まれている。
【0049】プログラムの実行終了後に、制御用CPU
8がトレースメモリ装置5に記録された全データを読み
出し、ホストシステム9へ転送する。ホストシステム9
は転送されたデータを解析してレポートをコンソール画
面、ファイルあるいはプリンタへ出力する。例えば、図
7のサンプルプログラムのようなC言語のプログラムで
関数Output_Portの引数Output_Ad
dressを検査する場合に、Output_Addr
essの許容範囲を、例えば0×00以上、0×10以
下に設定しプログラムを実行させると、図11に示すよ
うなレポートが出力される。この出力例では、検査対象
となっている関数名Output_Portが最初に表
示され、続いて検査対象となっている引数の名前とその
値0×100、引数を渡したメインモジュールの名前m
ainとその呼び出し行(3行目)が順に出力されてい
る。
8がトレースメモリ装置5に記録された全データを読み
出し、ホストシステム9へ転送する。ホストシステム9
は転送されたデータを解析してレポートをコンソール画
面、ファイルあるいはプリンタへ出力する。例えば、図
7のサンプルプログラムのようなC言語のプログラムで
関数Output_Portの引数Output_Ad
dressを検査する場合に、Output_Addr
essの許容範囲を、例えば0×00以上、0×10以
下に設定しプログラムを実行させると、図11に示すよ
うなレポートが出力される。この出力例では、検査対象
となっている関数名Output_Portが最初に表
示され、続いて検査対象となっている引数の名前とその
値0×100、引数を渡したメインモジュールの名前m
ainとその呼び出し行(3行目)が順に出力されてい
る。
【0050】この実施形態においては、プログラムの実
行をブレークさせることなく引数に許容範囲を越える値
が渡された時に記録をとることができる。また、プログ
ラムの実行終了後に出力されるレポートを見ることによ
り、引数に許容範囲を越える値が渡されたかどうか、許
容範囲を越える引数を渡したメインモジュールが一目で
分かり、プログラムの不具合原因の発見が容易になる。
行をブレークさせることなく引数に許容範囲を越える値
が渡された時に記録をとることができる。また、プログ
ラムの実行終了後に出力されるレポートを見ることによ
り、引数に許容範囲を越える値が渡されたかどうか、許
容範囲を越える引数を渡したメインモジュールが一目で
分かり、プログラムの不具合原因の発見が容易になる。
【0051】次に、請求項3又は6記載の発明の一実施
形態を説明する。
形態を説明する。
【0052】この実施形態は、メインモジュールから関
数へ渡される引数の値をダミーの値に置き換えるもので
ある。図12はこの実施形態で使用するデバッグモジュ
ール3の処理の流れ(ステップS31〜ステップS3
4)を示す図である。
数へ渡される引数の値をダミーの値に置き換えるもので
ある。図12はこの実施形態で使用するデバッグモジュ
ール3の処理の流れ(ステップS31〜ステップS3
4)を示す図である。
【0053】デバッグモジュール3は前記コンパイラが
生成したプログラムをICEにダウンロードする時に、
ICEがDebug_address以降の予約領域に
書き込む。Debug_parameter以降の予約
領域にある次のパラメータにはデバッグモジュール3へ
渡すパラメータを設定する。
生成したプログラムをICEにダウンロードする時に、
ICEがDebug_address以降の予約領域に
書き込む。Debug_parameter以降の予約
領域にある次のパラメータにはデバッグモジュール3へ
渡すパラメータを設定する。
【0054】Function_address:値を
置き換える関数のエントリアドレスを設定する。
置き換える関数のエントリアドレスを設定する。
【0055】Arg_pos:値を置き換える引数のス
タック上の位置を設定する。
タック上の位置を設定する。
【0056】Dummy_val:ダミー値を設定す
る。
る。
【0057】プログラムの実行を開始すると、関数が実
行された時に、まず関数の入り口に埋め込まれた“CA
LL Debug_address”命令が実行されデ
バッグモジュール3が呼び出される。デバッグモジュー
ル3は次の手順で、デバッグモジュール3を呼び出した
関数がパラメータFunction_addressに
設定された関数かどうかを調べる。
行された時に、まず関数の入り口に埋め込まれた“CA
LL Debug_address”命令が実行されデ
バッグモジュール3が呼び出される。デバッグモジュー
ル3は次の手順で、デバッグモジュール3を呼び出した
関数がパラメータFunction_addressに
設定された関数かどうかを調べる。
【0058】デバッグモジュール3が呼び出された段階
では、図5のスタックの状態に示すように、現在のスタ
ックポインタSPの直前に、functionへの戻り
アドレスが格納されている。functionへの戻り
アドレスを取得し(ステップS31)、デバッグモジュ
ール3を呼び出すための命令“SP=SP−2”、
“(SP+1)←Total[0],(SP+2)←T
otal[1]1”および“call Debug_a
ddress”の埋め込みコードの合計サイズを差し引
いてfunctionのエントリアドレスを求める(ス
テップS32)。ステップ32で求めたfunctio
nのエントリアドレスをパラメータFunction_
addressに設定されたアドレスと一致するかを調
べる(ステップ33)。
では、図5のスタックの状態に示すように、現在のスタ
ックポインタSPの直前に、functionへの戻り
アドレスが格納されている。functionへの戻り
アドレスを取得し(ステップS31)、デバッグモジュ
ール3を呼び出すための命令“SP=SP−2”、
“(SP+1)←Total[0],(SP+2)←T
otal[1]1”および“call Debug_a
ddress”の埋め込みコードの合計サイズを差し引
いてfunctionのエントリアドレスを求める(ス
テップS32)。ステップ32で求めたfunctio
nのエントリアドレスをパラメータFunction_
addressに設定されたアドレスと一致するかを調
べる(ステップ33)。
【0059】この処理で、functionのエントリ
アドレスとFunction_addressの値が一
致しなかったならば置き換えの対象関数ではないので、
デバッグモジュール3はRETURN命令を実行して処
理をfunctionへ戻す。一方、一致したらデバッ
グモジュール3は更に次の処理を行う。スタック上に積
めれた引数の中からArg_posで示される位置に積
まれている引数の値を、置き換え用のダミー値Dumm
y_valの値に置き換える(ステップS34)。RE
TURN命令を実行しfunctionへ処理を戻す。
デバッグモジュール3の処理により、Arg_posで
示される引数の値がDummy_valに設定されたダ
ミー値に置き換えられて、その後functionの処
理が実行される。
アドレスとFunction_addressの値が一
致しなかったならば置き換えの対象関数ではないので、
デバッグモジュール3はRETURN命令を実行して処
理をfunctionへ戻す。一方、一致したらデバッ
グモジュール3は更に次の処理を行う。スタック上に積
めれた引数の中からArg_posで示される位置に積
まれている引数の値を、置き換え用のダミー値Dumm
y_valの値に置き換える(ステップS34)。RE
TURN命令を実行しfunctionへ処理を戻す。
デバッグモジュール3の処理により、Arg_posで
示される引数の値がDummy_valに設定されたダ
ミー値に置き換えられて、その後functionの処
理が実行される。
【0060】この実施形態においては、プログラムの実
行をブレークさせることなくエラー処理関数などのデバ
ッグで、実際にはエラーがなくても、ダミー値にエラー
コードを設定しておけば、関数のエラー処理の確認を行
うことができる。
行をブレークさせることなくエラー処理関数などのデバ
ッグで、実際にはエラーがなくても、ダミー値にエラー
コードを設定しておけば、関数のエラー処理の確認を行
うことができる。
【0061】
【発明の効果】以上説明したように、請求項1又は4記
載の発明によれば、デバッグ対象のプログラムに埋め込
まれたデバッグモジュールが関数のエントリーアドレス
と、関数の全ての引き数の値と、その関数を呼び出した
メインモジュールのアドレスを読み出して記憶するよう
にしたので、プログラムの実行をブレークさせることな
く関数へ渡された引数の値を全て記録することができ
る。これにより、関数に渡される引数を評価でき、引数
に不正な値が渡されている場合には、呼び出し元のメイ
ンモジュールを調べ、プログラムの不具合の原因を容易
に発見することができる。
載の発明によれば、デバッグ対象のプログラムに埋め込
まれたデバッグモジュールが関数のエントリーアドレス
と、関数の全ての引き数の値と、その関数を呼び出した
メインモジュールのアドレスを読み出して記憶するよう
にしたので、プログラムの実行をブレークさせることな
く関数へ渡された引数の値を全て記録することができ
る。これにより、関数に渡される引数を評価でき、引数
に不正な値が渡されている場合には、呼び出し元のメイ
ンモジュールを調べ、プログラムの不具合の原因を容易
に発見することができる。
【0062】請求項2又は5記載の発明によれば、デバ
ッグ対象のプログラムに埋め込まれたデバッグモジュー
ルが関数の特定の引数の値を読み出し、その値が所定の
範囲を越えているか否かを検査し、越えている場合に
は、その引数と引数を渡したモジュールのアドレスを記
憶するようにしたので、プログラムの実行をブレークさ
せることなく引数に所定の範囲を越える値が渡された時
に記録をとることができる。これにより、引数に所定の
範囲を越えた値が渡されたか否か、ならびに所定の範囲
を越える引数を渡したメインモジュールが容易に判明
し、プログラムの不具合の原因を容易に発見することが
できる。
ッグ対象のプログラムに埋め込まれたデバッグモジュー
ルが関数の特定の引数の値を読み出し、その値が所定の
範囲を越えているか否かを検査し、越えている場合に
は、その引数と引数を渡したモジュールのアドレスを記
憶するようにしたので、プログラムの実行をブレークさ
せることなく引数に所定の範囲を越える値が渡された時
に記録をとることができる。これにより、引数に所定の
範囲を越えた値が渡されたか否か、ならびに所定の範囲
を越える引数を渡したメインモジュールが容易に判明
し、プログラムの不具合の原因を容易に発見することが
できる。
【0063】請求項3又は6記載の発明によれば、デバ
ッグ対象のプログラムに埋め込まれたデバッグモジュー
ルが関数本体の実行前に特定の引数の値をダミー値と置
き換えるようにしたので、プログラムの実行をブレーク
させることなくエラー処理関数などのデバッグにおい
て、プログラムの実行が正常な状態では発生しないエラ
ーコードをダミー値に設定してエラー処理の検査を行う
ことができる。
ッグ対象のプログラムに埋め込まれたデバッグモジュー
ルが関数本体の実行前に特定の引数の値をダミー値と置
き換えるようにしたので、プログラムの実行をブレーク
させることなくエラー処理関数などのデバッグにおい
て、プログラムの実行が正常な状態では発生しないエラ
ーコードをダミー値に設定してエラー処理の検査を行う
ことができる。
【図1】請求項1〜3記載の発明の一実施形態に係るデ
バッグ方法を実現するICE、又は請求項4〜6記載の
発明の一実施形態に係るデバッグ装置となるICEの構
成を示す図である。
バッグ方法を実現するICE、又は請求項4〜6記載の
発明の一実施形態に係るデバッグ装置となるICEの構
成を示す図である。
【図2】トレースメモリ装置内のデータイメージを示す
図である。
図である。
【図3】デバッグプログラムの構成を示す図である。
【図4】請求項1又は4記載の発明の一実施形態に係る
デバッグモジュール1の処理の流れを示す図である。
デバッグモジュール1の処理の流れを示す図である。
【図5】デバッグモジュールが呼び出された時のスタッ
クメモリの状態を示す図である。
クメモリの状態を示す図である。
【図6】デバッグモジュール1が実行された後のトレー
スメモリ装置内のトレースデータのデータイメージを示
す図である。
スメモリ装置内のトレースデータのデータイメージを示
す図である。
【図7】C言語で記述されたサンプルプログラムの一例
を示す図である。
を示す図である。
【図8】デバッグモジュール1が実行された後のレポー
トの出力例を示す図である。
トの出力例を示す図である。
【図9】請求項2又は5記載の発明の一実施形態に係る
デバッグモジュール2の処理の流れを示す図である。
デバッグモジュール2の処理の流れを示す図である。
【図10】デバッグモジュール2が実行された後のトレ
ースメモリ装置内のトレースデータのデータイメージを
示す図である。
ースメモリ装置内のトレースデータのデータイメージを
示す図である。
【図11】デバッグモジュール2が実行された後のレポ
ートの出力例を示す図である。
ートの出力例を示す図である。
【図12】請求項3又は6記載の発明の一実施形態に係
るデバッグモジュール3の処理の流れを示す図である。
るデバッグモジュール3の処理の流れを示す図である。
1 評価用CPU 2 プログラムメモリ 3 バス回路 4 バス比較回路 5 トレースメモリ装置 6 ライトストローブ信号生成回路 7 フレームアドレス生成用カウンタ 8 制御用CPU 9 ホストシステム
Claims (6)
- 【請求項1】 デバッグ対象となるプログラムを実行処
理する評価用CPUが実行するデバッグプログラムに含
まれるメインモジュールが評価対象となる関数を呼び出
して実行する際に、前記メインモジュールが前記関数に
渡す引数を前記評価用CPU内の第1の記憶装置に記憶
する第1のステップと、 前記メインモジュールが前記関数を呼び出す第2のステ
ップと、 前記第2のステップで前記関数が呼び出されると、前記
関数を実行する前に前記引数の総サイズを前記第1の記
憶装置に記憶する第3のステップと、 前記関数のエントリアドレスと、前記関数を呼び出した
メインモジュールの呼び出しアドレスと、前記第1の記
憶装置に記憶された前記関数の引数を前記評価用CPU
外の第2の記憶装置に収集記憶するデバッグモジュール
を、前記関数を実行する前に前記第3のステップに続い
て前記デバッグプログラムから呼び出し実行する第4の
ステップを有し、前記デバッグモジュールの実行は、 前記関数のエントリアドレスを求める第1のステップ
と、 前記第1のステップで得られた前記関数のエントリアド
レスを前記評価用CPU外に出力する第2のステップ
と、 前記関数のエントリアドレスの出力を検出して、前記関
数のエントリアドレスを前記第2の記憶装置に記憶する
第3のステップと、 前記関数を呼び出したメインモジュールの呼び出しアド
レスを求める第4のステップと、 前記第4のステップで得られた前記関数の呼び出しアド
レスを前記評価用CPU外に出力する第5のステップ
と、 前記関数の呼び出しアドレスの出力を検出して、前記関
数の呼び出しアドレスを前記第2の記憶装置に記憶する
第6のステップと、 前記第1の記憶装置に記憶された前記引数の総サイズに
基づいて前記第1の記憶装置に記憶された引数を前記評
価用CPU外に出力する第7のステップと、 前記引数の出力を検出して、前記引数を前記第2の記憶
装置に記憶する第8のステップとを有し、 前記関数に渡される引数を評価することを特徴とするマ
イクロコンピュータ用プログラムのデバッグ方法。 - 【請求項2】 デバッグ対象となるプログラムを実行処
理する評価用CPUが実行するデバッグプログラムに、
評価対象となる関数を指定するパラメータと、前記関数
に渡されて評価対象となる引数を指定するパラメータ
と、前記引数が所定値内であるか否かを示すパラメータ
を、前記デバッグプログラムを実行する前に前記デバッ
グプログラムに設定する第1のステップと、 前記評価用CPUが実行するデバッグプログラムに含ま
れるメインモジュールが評価対象となる関数を呼び出し
て実行する際に、前記メインモジュールが前記関数に渡
す引数を前記評価用CPU内の第1の記憶装置に記憶す
る第2のステップと、 前記メインモジュールが前記関数を呼び出す第3のステ
ップと、 前記第3のステップで呼び出された関数が前記パラメー
タで指定された関数で、かつ該関数の前記パラメータで
指定された引数が前記パラメータで設定された所定値外
である場合には、前記引数と前記引数の関数を呼び出し
たメインモジュールの呼び出しアドレスを前記評価用C
PU外の第2の記憶装置に収集記憶するデバッグモジュ
ールを、前記関数を実行する前に前記第3のステップに
続いて前記デバッグプログラムから呼び出し実行する第
4のステップを有し、前記デバッグモジュールの実行
は、 前記メインモジュールによって呼び出された関数が前記
パラメータで指定された関数であるか否かを判定する第
1のステップと、 前記メインモジュールによって呼び出された関数が前記
パラメータで指定された評価対象となる関数である場合
は、該関数の前記パラメータで指定された引数が前記パ
ラメータで指定された所定値内であるか否かを判定する
第2のステップと、 前記第2のステップで前記引数が所定値外である場合に
は、前記引数を前記第1の記憶装置から前記評価用CP
U外に出力する第3のステップと、 前記引数の出力を検出して、前記引数を前記第2の記憶
装置に記憶する第4のステップと、 前記関数を呼び出したメインモジュールの呼び出しアド
レスを求める第5のステップと、 前記第4のステップで得られた前記関数の呼び出しアド
レスを前記評価用CPU外に出力する第6のステップ
と、 前記関数の呼び出しアドレスの出力を検出して、前記関
数の呼び出しアドレスを前記第2の記憶装置に記憶する
第7のステップとを有し、 前記パラメータで指定された関数に渡される引数を評価
することを特徴とするマイクロコンピュータ用プログラ
ムのデバッグ方法。 - 【請求項3】 デバッグ対象となるプログラムを実行処
理する評価用CPUが実行するデバッグプログラムに、
引数を置き換える関数を指定するパラメータと、前記関
数の置き換えられる引数を指定するパラメータと、引数
の置き換え値を示すパラメータを、前記デバッグプログ
ラムを実行する前に前記デバッグプログラムに設定する
第1のステップと、 前記評価用CPUが実行するデバッグプログラムに含ま
れるメインモジュールが評価対象となる関数を呼び出し
て実行する際に、前記メインモジュールが前記関数に渡
す引数を前記評価用CPU内の第1の記憶装置に記憶す
る第2のステップと、 前記評価用CPUが実行するデバッグプログラムに含ま
れるメインモジュールが前記関数を呼び出す第3のステ
ップと、 前記パラメータで設定された関数の引数を置き換え値に
置き換え、前記デバッグプログラムに含まれるデバッグ
モジュールを、前記関数を実行する前に前記第3のステ
ップに続いて前記デバッグプログラムから呼び出し実行
する第4のステップを有し、前記デバッグモジュールの
実行は、 前記メインモジュールによって呼び出された関数が前記
パラメータで指定された関数であるか否かを判定する第
1のステップと、 前記メインモジュールによって呼び出された関数が前記
パラメータで指定された関数である場合は、該関数の前
記パラメータで指定された引数を前記パラメータで指定
された置き換え値に置き換える第2のステップを有する
ことを特徴とするマイクロコンピュータ用プログラムの
デバッグ方法。 - 【請求項4】 メインモジュールと、評価対象となる関
数の引数を評価するデバッグモジュールと、前記デバッ
グモジュールがデータを出力するためのアドレス領域を
含むデバッグプログラムを格納するプログラムメモリ
と、 前記プログラムメモリに格納された前記メインモジュー
ルによって関数を呼び出して実行する際に、前記関数の
引数を内部の第1の記憶装置に記憶し、前記プログラム
メモリに格納されたデバッグモジュールの実行によって
前記関数のエントリアドレスと前記関数を呼び出したメ
インモジュールの呼び出しアドレスを求め、求めた関数
のエントリアドレスと関数の呼び出しアドレス及び前記
第1の記憶装置に記憶された引数を前記デバッグプログ
ラムのアドレス領域に出力する評価用CPUと、 前記関数のエントリアドレスと前記関数の呼び出しアド
レス及び前記第1の記憶装置に記憶された引数が前記評
価用CPUから出力されたことを検出する検出回路と、 前記評価用CPUから出力されて、前記検出回路によっ
て検出された前記関数のエントリアドレスと前記関数の
呼び出しアドレス及び前記第1の記憶装置に記憶された
引数を収集記憶する第2の記憶装置と、 前記第2の記憶装置の書き込みを制御する書き込み制御
回路を有することを特徴とするマイクロコンピュータ用
プログラムのデバッグ装置。 - 【請求項5】 メインモジュールと、評価対象となる関
数の引数を評価するデバッグモジュールと、評価対象と
なる関数を指定するパラメータと前記関数に渡されて評
価対象となる引数を指定するパラメータと前記引数が所
定値内であるか否かを示すパラメータが格納されるパラ
メータ格納領域と、前記デバッグモジュールがデータを
出力するためのアドレス領域を含むデバッグプログラム
を格納するプログラムメモリと、 前記プログラムメモリに格納された前記メインモジュー
ルによって関数を呼び出して実行する際に、前記関数の
引数を内部の第1の記憶装置に記憶し、前記プログラム
メモリに格納されたデバッグモジュールの実行によって
前記メインモジュールによって呼び出された関数が前記
パラメータによって指定された関数か否かを判定し、指
定された関数である場合には、該関数の前記パラメータ
で指定された引数が前記パラメータで設定された所定値
内であるか否かを判定し、所定値外である場合には、該
引数を前記第1の記憶装置から前記デバッグプログラム
のアドレス領域に出力し、前記引数の関数を呼び出した
メインモジュールの呼び出しアドレスを求め、求めた関
数の呼び出しアドレスを前記デバッグプログラムのアド
レス領域に出力する評価用CPUと、 前記引数及び前記関数の呼び出しアドレスが前記評価用
CPUから出力されたことを検出する検出回路と、 前記評価用CPUから出力されて、前記検出回路によっ
て検出された前記引数及び前記関数の呼び出しアドレス
を収集記憶する第2の記憶装置と、 前記第2の記憶装置の書き込みを制御する書き込み制御
回路を有することを特徴とするマイクロコンピュータ用
プログラムのデバッグ装置。 - 【請求項6】 メインモジュールと、評価対象となる関
数の引数を評価するデバッグモジュールと、引数を置き
換える関数を指定するパラメータと前記関数の置き換え
られる引数を指定するパラメータと前記引数の置き換え
値を示すパラメータが格納されるパラメータ格納領域を
含むデバッグプログラムを格納するプログラムメモリ
と、 前記プログラムメモリに格納された前記メインモジュー
ルによって関数を呼び出して実行する際に、前記関数の
引数を内部の第1の記憶装置に記憶し、前記プログラム
メモリに格納されたデバッグモジュールの実行によって
前記メインモジュールによって呼び出された関数が前記
パラメータによって指定された関数か否かを判定し、指
定された関数である場合には、該関数の前記パラメータ
で指定された引数を前記パラメータで設定された置き換
え値に置き換える評価用CPUを有することを特徴とす
るマイクロコンピュータ用プログラムのデバッグ装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8279639A JPH10124350A (ja) | 1996-10-22 | 1996-10-22 | マイクロコンピュータ用プログラムのデバッグ方法及びデバッグ装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8279639A JPH10124350A (ja) | 1996-10-22 | 1996-10-22 | マイクロコンピュータ用プログラムのデバッグ方法及びデバッグ装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10124350A true JPH10124350A (ja) | 1998-05-15 |
Family
ID=17613792
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8279639A Withdrawn JPH10124350A (ja) | 1996-10-22 | 1996-10-22 | マイクロコンピュータ用プログラムのデバッグ方法及びデバッグ装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH10124350A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004295533A (ja) * | 2003-03-27 | 2004-10-21 | Nec Corp | アプリケーション障害回避システム、監視用コンピュータ、サーバコンピュータ及びプログラム |
| WO2006004082A1 (ja) * | 2004-07-05 | 2006-01-12 | Infocom Corporation | ソフトウエアの一時的な修正方法およびプログラム |
| JP2015075964A (ja) * | 2013-10-09 | 2015-04-20 | 富士通株式会社 | ログ出力条件設定プログラム、装置、および方法 |
-
1996
- 1996-10-22 JP JP8279639A patent/JPH10124350A/ja not_active Withdrawn
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004295533A (ja) * | 2003-03-27 | 2004-10-21 | Nec Corp | アプリケーション障害回避システム、監視用コンピュータ、サーバコンピュータ及びプログラム |
| WO2006004082A1 (ja) * | 2004-07-05 | 2006-01-12 | Infocom Corporation | ソフトウエアの一時的な修正方法およびプログラム |
| JP2015075964A (ja) * | 2013-10-09 | 2015-04-20 | 富士通株式会社 | ログ出力条件設定プログラム、装置、および方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0283196B1 (en) | In-place diagnosable electronic circuit board | |
| US20080016415A1 (en) | Evaluation system and method | |
| EP0111952A2 (en) | Verification of a processor architecture having a partial instruction set | |
| JP3206641B2 (ja) | マイコンシステムのデバッグ方法、デバッグ装置及びデバッグプログラムを記録した記録媒体 | |
| CN118860739A (zh) | 车载应用的启动方法、装置、电子设备及计算机程序产品 | |
| JP2001202262A (ja) | データ格納方法 | |
| JP3705848B2 (ja) | バス制御モジュール | |
| JPH07334385A (ja) | 保守診断機能の検証方法 | |
| JP3314719B2 (ja) | フラッシュeepromとその試験方法 | |
| JP2967741B2 (ja) | Cpu互換性テスト装置 | |
| JP2001265619A (ja) | データトレース方式 | |
| JP3309792B2 (ja) | スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体 | |
| JPH028911A (ja) | プログラマブルコントローラ | |
| JPH06314190A (ja) | 電子装置 | |
| JPS628831B2 (ja) | ||
| CN116662189A (zh) | 一种程序测试方法、装置、设备和存储介质 | |
| CN119557886A (zh) | 高可靠的mcu启动方法、硬件结构及电子设备 | |
| JP2001005689A (ja) | トレース採取回路 | |
| JPH0887426A (ja) | 自己診断状況表示方式 | |
| JPH11312096A (ja) | 電気回路カード試験装置及び試験方法並びにその試験方法の制御プログラムを記録した記録媒体 | |
| JPH04326440A (ja) | エラー発生履歴記憶装置および情報処理装置 | |
| JPH02178862A (ja) | 情報処理装置 | |
| JPH03211619A (ja) | データ処理装置 | |
| JPH03127131A (ja) | シーケンサ診断制御方式 | |
| JPH1049403A (ja) | マイクロプロセッサの異常診断装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20040106 |