JPH1049401A - プログラムのデバッグ方法 - Google Patents

プログラムのデバッグ方法

Info

Publication number
JPH1049401A
JPH1049401A JP8208689A JP20868996A JPH1049401A JP H1049401 A JPH1049401 A JP H1049401A JP 8208689 A JP8208689 A JP 8208689A JP 20868996 A JP20868996 A JP 20868996A JP H1049401 A JPH1049401 A JP H1049401A
Authority
JP
Japan
Prior art keywords
breakpoint
specified
program
debugger
memory
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
JP8208689A
Other languages
English (en)
Inventor
Masato Fujii
正人 藤井
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.)
Meidensha Corp
Meidensha Electric Manufacturing Co Ltd
Original Assignee
Meidensha Corp
Meidensha Electric Manufacturing 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 Meidensha Corp, Meidensha Electric Manufacturing Co Ltd filed Critical Meidensha Corp
Priority to JP8208689A priority Critical patent/JPH1049401A/ja
Publication of JPH1049401A publication Critical patent/JPH1049401A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 マイクロコンピュータのオンライン用デバッ
ガではブレークポイントでのレジスタ、メモリ等の参照
や変更ができない。 【解決手段】 ブレークポイントによるデバッグ機能を
もつマイクロコンピュータを利用し、ブレークポイント
の割込みで使用するベクタをオンラインデバッガの処理
ルーチンに変更し、設定したブレークポイントをプログ
ラムが実行してオンラインデバッガにブレークポイント
割込みが発生した時点での全レジスタと指定メモリ及び
指定I/Oの内容をセーブし(S5〜S7)、指定メモ
リ及び指定I/Oに指定するデータを書込み(S8,S
9)、ブレークポイント機能を解除し(S10)、ブレ
ークポイントのベクタをオフラインデバッガのベクタに
戻し(S11)、セーブした内容をダンプし(S1
2)、プログラムの実行を元の命令から再開する(S1
3、IRET)。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロコンピュ
ータのソフトウェア開発におけるプログラムの誤りを発
見・修正するためのデバッグ方法に関する。
【0002】
【従来の技術】マイクロコンピュータのソフトウェア開
発には、インサーキットエミュレータ(ICE)と呼ば
れるソフトウェアのデバッグツールがある。このICE
は、コンピュータのプロセッサやメモリの動作を模擬
し、プログラムへの割込み、ブレークポイントの設定、
シングルステップ実行などの機能を有し、ソフトウェア
の開発支援を行う。
【0003】また、ターゲットになるコンピュータがな
い段階では、パーソナルコンピュータ上でソフトウェア
の試験ができるようにしたデバッグツールもある。
【0004】ターゲットが存在し、作成したプログラム
をターゲットにロードした後、ICEを使用しないでソ
フトウェアの試験をするためにはデバッガと呼ばれるソ
フトウェアを使用している。
【0005】このデバッガは、マイクロコンピュータメ
ーカやOS(オペレーティングシステム)メーカから提
供される場合があるが、組み込み用ソフトウェアでOS
を使用しないか、又は、専用OSを使用する場合には、
自作のデバッガを作成することになる。
【0006】デバッガの機能として、主に以下のものが
ある。
【0007】(1)ブレークポイントによるプログラム
の起動/中断/継続起動。
【0008】(2)レジスタ、メモリ、I/O空間の参
照と変更。
【0009】これら機能の内、(1)の機能はプログラ
ム単体の試験で使用するものであり、(2)の機能は主
として単体試験及びそれ以降の開発工程で使用する機能
である。
【0010】
【発明が解決しようとする課題】ICEは、組み込み用
ソフトウェアの全開発工程で使用可能であるが、通常、
高価であり、使用時にはターゲットとICE本体とを接
続するためのプローブやケーブル等が必要となる。その
ため、ターゲットを運用状態で試験するような場合には
ICEが使用できないことがある。
【0011】パーソナルコンピュータ上でソフトウェア
試験を行う場合、それは単体試験までであり、ターゲッ
ト上のオンライン状態での試験では使用できない。
【0012】デバッガにはいくつかの種類があるが、通
常はオフラインデバッガと呼ばれる単体試験用のもの
と、オンラインデバッガと呼ばれる結合試験以降で使用
するものがある。
【0013】オフラインデバッガは、プログラム中にブ
レークポイントと呼ばれるプログラム中断機能を設定
し、プログラムがブレークポイントを実行するとデバッ
ガが起動し(通常は割込みによる)、その時点でレジス
タやメモリ、I/Oの参照/変更をするものである。さ
らに、ブレークポイントで中断していたプログラムを継
続起動することができる。したがって、ブレークポイン
トによりデバッガが動作するため、オンライン状態で使
用することができない。
【0014】通常のオンラインデバッガは、ブレークポ
イントによるプログラム中断/継続起動の機能はなく、
キー入力した時点でのメモリ、I/Oの参照/変更を行
うことができるが、オンライン中のレジスタの参照/変
更はできない。
【0015】つまり、レジスタの値はプログラム中で刻
々変化しており、キー入力した時点でのレジスタの内容
を参照しても、全く意味がない。
【0016】しかし、ブレークポイントのようにプログ
ラム内のある点を実行したときのレジスタ、メモリ、I
/Oを参照する機能があれば、有効である。
【0017】本発明の目的は、オンラインデバッガの機
能を持たせながらブレークポイントによるレジスタ、メ
モリ、I/Oの参照や変更ができるデバッグ方法を提供
することにある。
【0018】
【課題を解決するための手段】本発明は、ブレークポイ
ントによるデバッグ機能をもつマイクロコンピュータを
使ったプログラムのデバッグにおいて、前記ブレークポ
イントの割込みで使用するベクタをオンラインデバッガ
の処理ルーチンに変更し、指定したプログラムアドレス
にブレークポイントを設定し、前記設定したブレークポ
イントをプログラムが実行してオンラインデバッガにブ
レークポイント割込みが発生した時点での全レジスタと
指定メモリ及び指定I/Oの内容をセーブし、指定メモ
リ及び指定I/Oに指定するデータを書込み、ブレーク
ポイント機能を解除し、ブレークポイントのベクタをオ
フラインデバッガのベクタに戻し、前記セーブした内容
をダンプし、プログラムの実行を元の命令から再開する
ことを特徴とする。
【0019】また、前記指定メモリ及び指定I/Oに指
定するデータの書込みを複数回変更可能にすることを特
徴とする。
【0020】
【発明の実施の形態】
(第1の実施形態)図1は、デバッガのオンラインブレ
ークポイントのセット処理を示す。通常、マイクロコン
ピュータにはブレークポイント命令が用意されている。
さらに、デバッグ機能があるマイクロコンピュータでは
ハードウェア構成のブレークポイント機能が用意されて
いるものがある。
【0021】これらの機能により、ブレークポイントを
実行すると、ブレークポイント割込みが発生し、デバッ
ガに制御が移る。しかし、通常はこれら機能はオフライ
ンデバッガであり、その動作でマイクロコンピュータは
オフライン状態になってしまう。
【0022】そこで、図1では、オフラインブレークポ
イント割込みで使用するベクタ(割込みルーチンを示す
テーブル)をセーブし(S1)、このベクタをオンライ
ンデバッガの割込みルーチンにセットする(S2)。
【0023】すなわち、通常はオフラインデバッガのブ
レークポイント処理ルーチンに向いているベクタをオン
ラインデバッガのブレークポイント操作があった時点で
オンラインデバッガのブレークポイント処理ルーチンに
変更する。変更前に格納されていた値は、別のメモリに
セーブしておく。
【0024】上記のベクタのセットに次いで、オンライ
ンブレークポイント割込みが発生したときに参照するメ
モリアドレス、I/Oポートアドレスを指定する機能を
用意する。さらに、指定したメモリ、I/Oを変更する
値を指定する機能を用意する。
【0025】次に、図2に示すように、ユーザが指定し
たプログラムアドレスにブレークポイントを設定する。
ブレークポイント命令による場合は、元々格納されてい
た旧命令をセーブした後(S2)、ブレークポイント命
令を格納する(S3)。
【0026】これら機能付加及び処理を行った後、オン
ラインブレークポイントの割込み処理を行う。この処理
は、設定したブレークポイント(図1参照)により、そ
のブレークポイントをプログラムが実行すると、オンラ
インデバッガにブレークポイント割込みが発生した時に
図3に示す処理を行う。
【0027】図3において、ブレークポイントの割込み
発生時点での全レジスタの内容をセーブ(S5)、指定
メモリの内容のセーブ(S6)、指定I/Oの内容のセ
ーブ(S7)を行う。さらに、指定メモリへの指定デー
タの書込み(S8)、指定I/Oへの指定データの書込
み(S9)を行う。
【0028】次いで、ブレークポイント機能の解除を行
う(S10)。この解除は、ブレークポイント命令によ
るブレークポイント割込みならば、元の命令に戻す。
【0029】次いで、ブレークポイントのベクタをオフ
ラインデバッガのベクタに戻し(S11)、セーブして
いたレジスタ値、メモリ値、I/O値をダンプし(S1
2)、割込みアドレスを−1し(S13)、元の命令か
らのプログラム実行を再開する(IRET)。
【0030】(第2の実施形態)前記の実施形態では、
オンラインブレークポイントを1回だけ実行すると処理
を終了するが、ユーザが指定するまでオンラインブレー
クポイント処理を継続することができる。
【0031】つまり、図3の処理S10,S11を行わ
ず、ブレークポイント機能を残しておくことで実現され
る。ブレークポイント機能の解除は、ユーザ指定により
処理S10,S11を実行することになる。この方法に
より、プログラムのある点の継続したレジスタ、メモ
リ、I/Oの参照が可能となる。
【0032】本実施形態において、データやI/Oの変
更を継続的に行うことで、プログラムの修正なしで強制
的にデータを指定値に変更することができる。これは、
プログラムの修正をしないでデータを変更できることか
ら、以下の応用が可能となる。
【0033】(1)命令の無効化…ブレークポイントで
指定したポイント以前に実行していた処理結果がメモリ
に格納されているため、その結果を別の値にすること
で、ブレークポイント以前の命令を無効にできる。例え
ば、サブルーチンの演算をなかったことにすることがで
きる。
【0034】(2)入力データの変更…変更データをい
ろいろ変化させることで、実際には入力していないデー
タであっても、データを変化させてダイナミックな試験
が可能となる。
【0035】(3)パッチプログラムの効果…プログラ
ムにバグがある場合にプログラムを修正するが、プログ
ラムがROMになっている場合や修正に時間がかかる場
合、パッチプログラムを作ることがある。パッチプログ
ラムは、バグの部分を取り消し、本来のプログラムを実
行させるためのものである。したがって、データを強制
的に変更できるため、バグのある後にブレークポイント
をセットすることでパッチプログラムと同じ効果が得ら
れる。
【0036】
【発明の効果】以上のとおり、本発明によれば、マイク
ロコンピュータのブレークポイントの割込みで使用する
ベクタをオンラインデバッガの処理ルーチンに変更し、
オンラインデバッガにブレークポイント割込みが発生し
た時点での全レジスタと指定メモリ及び指定I/Oの内
容をセーブし、指定メモリ及び指定I/Oに指定するデ
ータを書込むようにしたため、オンライン状態でブレー
クポイント指定アドレスでのレジスタ、メモリ、I/O
の参照及びメモリ、I/Oの変更ができる。
【0037】また、ブレークポイントのベクタをオンラ
インデバッガのブレークポイント処理ルーチンにし、ブ
レークポイントの使用を終了したときにオフラインデバ
ッガのブレークポイント処理ルーチンに戻すことによ
り、オンラインデバッガとオフラインデバッガの共存が
できる。
【0038】また、本発明によれば、指定メモリ及び指
定I/Oに指定するデータの書込みを複数回変更可能に
するため、以下の効果がある。
【0039】(1)長時間にわたってオンライン状態で
の指定ブレークポイントのレジスタ、メモリ、I/Oの
参照が可能となる。
【0040】(2)ブレークポイントで演算結果を無効
にすることで、ブレークポイントが発生するまでに行っ
ていた処理を無効にすることができる。
【0041】(3)実入力がなくても、あたかも入力が
あったようにデータを変化させて試験することができ
る。
【0042】(4)データを強制的に変更できることか
らパッチプログラムを作成したのと同等の試験ができ
る。
【図面の簡単な説明】
【図1】本発明の実施形態におけるブレークポイントの
セット処理手順。
【図2】実施形態におけるオンラインブレークポイント
のセット処理手順。
【図3】実施形態におけるオンラインブレークポイント
割込み処理手順。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 ブレークポイントによるデバッグ機能を
    もつマイクロコンピュータを使ったプログラムのデバッ
    グにおいて、 前記ブレークポイントの割込みで使用するベクタをオン
    ラインデバッガの処理ルーチンに変更し、 指定したプログラムアドレスにブレークポイントを設定
    し、 前記設定したブレークポイントをプログラムが実行して
    オンラインデバッガにブレークポイント割込みが発生し
    た時点での全レジスタと指定メモリ及び指定I/Oの内
    容をセーブし、指定メモリ及び指定I/Oに指定するデ
    ータを書込み、 ブレークポイント機能を解除し、ブレークポイントのベ
    クタをオフラインデバッガのベクタに戻し、前記セーブ
    した内容をダンプし、プログラムの実行を元の命令から
    再開することを特徴とするデバッグ方法。
  2. 【請求項2】 前記指定メモリ及び指定I/Oに指定す
    るデータの書込みを複数回変更可能にすることを特徴と
    する請求項1に記載のデバッグ方法。
JP8208689A 1996-08-08 1996-08-08 プログラムのデバッグ方法 Pending JPH1049401A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8208689A JPH1049401A (ja) 1996-08-08 1996-08-08 プログラムのデバッグ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8208689A JPH1049401A (ja) 1996-08-08 1996-08-08 プログラムのデバッグ方法

Publications (1)

Publication Number Publication Date
JPH1049401A true JPH1049401A (ja) 1998-02-20

Family

ID=16560450

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8208689A Pending JPH1049401A (ja) 1996-08-08 1996-08-08 プログラムのデバッグ方法

Country Status (1)

Country Link
JP (1) JPH1049401A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122543A (ja) * 2005-10-31 2007-05-17 Nec Electronics Corp 半導体集積回路装置、それのデバッグシステム及びデバッグ方法。
JP2008033849A (ja) * 2006-08-01 2008-02-14 Hitachi Ltd 障害解析システム
US8839206B2 (en) 2002-08-26 2014-09-16 International Business Machines Corporation Time-based breakpoints in debuggers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8839206B2 (en) 2002-08-26 2014-09-16 International Business Machines Corporation Time-based breakpoints in debuggers
JP2007122543A (ja) * 2005-10-31 2007-05-17 Nec Electronics Corp 半導体集積回路装置、それのデバッグシステム及びデバッグ方法。
JP2008033849A (ja) * 2006-08-01 2008-02-14 Hitachi Ltd 障害解析システム

Similar Documents

Publication Publication Date Title
US5132971A (en) In-circuit emulator
JP2753500B2 (ja) 多重アーキテクチャ環境内で特にコードのデバッグを行う改良したソフトウェア・デバッグ・システムと方法
JPH011039A (ja) インサーキット・エミュレータ
US5680584A (en) Simulator system for code execution and debugging within a multi-architecture environment
US20100153786A1 (en) Processor, multiprocessor, and debugging method
EP0638864B1 (en) Development support system for microcomputer with internal cache
US20060294433A1 (en) Debugging using watchpoints
JPH11203146A (ja) マイクロコンピュータ
JPH1049401A (ja) プログラムのデバッグ方法
JP2005353020A (ja) コンピュータプログラムのシミュレーション方式
JPS61204703A (ja) エンジン制御コンピユ−タシステムの開発装置
JPH02135545A (ja) デバッガの実行制御処理方式
JP2788353B2 (ja) タスクトレース方法
JPH02120940A (ja) デバッグ支援回路
JP2697230B2 (ja) デバッグ支援装置
JPH04123235A (ja) マイクロプログラムのデバッグ方式及び方法
JPS6091458A (ja) マイクロプロセツサのプログラムデバツグ装置
JPS59202546A (ja) デバツグ装置
JPH07168768A (ja) 初期自己診断方法
JPS60124747A (ja) 計算機のデバグ制御方式
JPS61134850A (ja) 従属プロセツサのデバツグ方法
JPS6282438A (ja) 情報処理装置におけるデバツグ割込み制御方式
JPH05173830A (ja) 異常動作検出方法、及びエミュレータ
JPH04184544A (ja) ブレークポイント制御方式
JPS59202550A (ja) デバツグ装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040330