JPH05282175A - プログラムディバッガ - Google Patents

プログラムディバッガ

Info

Publication number
JPH05282175A
JPH05282175A JP4075012A JP7501292A JPH05282175A JP H05282175 A JPH05282175 A JP H05282175A JP 4075012 A JP4075012 A JP 4075012A JP 7501292 A JP7501292 A JP 7501292A JP H05282175 A JPH05282175 A JP H05282175A
Authority
JP
Japan
Prior art keywords
program
state
area
saved
register
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
Application number
JP4075012A
Other languages
English (en)
Inventor
Masae Kawamata
眞江 川又
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 JP4075012A priority Critical patent/JPH05282175A/ja
Publication of JPH05282175A publication Critical patent/JPH05282175A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】プログラムの不具合箇所を簡単に見つけ出し、
しかもディバッグ時間を短縮することにある。 【構成】プログラムを任意の場所で中断し、異常動作を
したと判定したときは、再度その状態からディバッグを
行う。ディバッグ対象プログラムのデータ領域9とレジ
スタ情報13をメモリ/レジスタセーブ領域11,12
へセーブし、ディバッグを進める。その後の中断状態で
再び異常を発見した場合には、先にセーブしたメモリ/
レジスタセーブ領域11,12の状態を逆にメモリ9お
よびレジスタ13へ戻し、そこから再度ディバッグを行
う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はプログラムディバッガに
関し、プログラムの不具合箇所をチェックするプログラ
ムディバッガに関する。
【0002】
【従来の技術】従来のプログラムディバッガは、デイバ
ッグ対象ブログラムの不具合箇所を調べるために用いら
れている。
【0003】図5は従来の一例を説明するためのディバ
ッグ処理フロー図である。図5に示すように、従来のデ
ィバッガはプログラム実行・ディバッグ処理23および
ブレークポイント再設定処理25を有する。最初にこれ
から実行される予定のプログラムに幾つかのブレークポ
イントを設定するブレークポイント設定ステップ1を経
て、プログラム実行ステップ2でプログラムを実行させ
る。その後、設定したいずれかのブレークポイントでプ
ログラムがブレークしたとき、中断状態判定ステップ3
でそれが期待していた状態であるかどうかを調べ、期待
していた状態であるならプログラムの実行を再開し、必
要ならば新たなブレークポイントを設定しディバック継
続ステップ5でディバッグを先へ進める。通常は、これ
らのステップ2,3,5を数回繰り返す。
【0004】一方、その繰り返しの途中で、もし異常な
状態が中断状態判定ステップ3で発見されると、その時
点で得られる情報によって不具合原因の追求を行う。こ
こで、不具合箇所が分かった場合はプログラムの修正を
直ちに行う。もし分からない場合は、不具合の原因がそ
れ以前にブレークして正常を確認した所から現在ブレー
クしている所までに実行されたいずれかのプログラムに
不具合箇所が有ると考えられるので、再実行ステップ2
4でそれ以前の正しく動作していた箇所までプログラム
を最初から再実行し、そこから異常動作が確認された箇
所までの間に新たにブレークポイントをブレークポイン
ト設定ステップ7で設定し、再びプログラム実行ステッ
プ2でブログラムを実行する。再実行の結果、中断状態
判定ステップ3によりブレークしたところで正常状態が
確認されれば、更に新たなブレークポイントを設定し、
ディバッグを先へ進める。もし、ブレークした箇所で不
具合状態であれば、再度最初からプログラムをやり直
し、これらの処理すなわち、ブレークポイント再設定処
理25を繰り返す。このように、プログラム実行・ディ
バッグ処理23およびブレークポイント再設定処理25
を繰り返し、徐々に不具合の可能性のあるプログラム領
域を縮小して行くことにより、最終的に不具合箇所を確
定する。
【0005】
【発明が解決しようとする課題】上述した従来のディバ
ッガは、プログラムの異常動作が発見された場合、その
不具合原因の存在する可能性があるプログラムの範囲を
縮小するために、それ以前に正常動作が確実にできた所
までプログラムを戻している。そのために、ブレークポ
イントの設定等を変更して、最初からプログラムをやり
直さなければならない。かかるプログラムの再実行は非
常に大きなプログラムや非常に再現に時間のかかる場合
には、相当な時間を要する。また、比較的小さなプログ
ラムであっても、停止したいアドレスがループの途中で
あったりする場合は、目的のアドレスに至るまでに何度
もプログラムをブレークしなければならないなどの手間
が掛かる場合が多い。従って、不具合箇所のプログラム
範囲縮小に相当な時間がかかる。
【0006】本発明の目的は、この不具合箇所を簡単に
見つけられ、しかもディバッグ時間を短縮することので
きるプログラムディバッグを提供することにある。
【0007】
【課題を解決するための手段】本発明のプログラムディ
バッガはプログラムのディバッグ中に任意のアドレスで
実行を中断し、再度その後のディバッグを可能とするプ
ログラムディバッガにおいて、中断した任意のアドレス
でプログラムのデータ領域の全内容およびコンテキスト
をセーブする管理領域を有し、前記プログラムの実行を
再開してから前記セーブした情報をロードすることによ
り、セーブした時点の状態に戻るように構成される。
【0008】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。図1は本発明の一実施例を説明するための
ディバッグ処理フロー図である。図1に示すように、本
実施例はまずブレークポイント設定ステップ1でこれか
ら実行される予定のプログラムアドレスにブレークポン
イントを設定し、次にプログラム実行ステップ2でプロ
グラムを実行する。しかる後、プログラムがブレークポ
イントでブレークすると、中断状態判定ステップ3でそ
の状態が正しいか否かを判断する。この時、正しいと判
断されると、状態セーブステップ4でプログラムのデー
タ領域およびレジスタなどのコンテキストをディバッガ
の管理領域にセーブする。さらに、ディバッグ継続ステ
ップ5でディバッグを先へ進め、プログラム実行・ディ
バッグ処理8を繰り返し、常に最後に確認できた正常状
態をディバッグの管理領域に保持する。
【0009】もし、中断判定ステップ3において、正常
でないことがわかったときは、セーブ状態のロードステ
ップ6でその直前に確認された正常状態まで戻り、ブレ
ークポンイント設定ステップ7で新たにブレークポイン
トの設定を行い、そこから再度ディバッグを行う。も
し、新たに設定されたブレークポイントでブレークした
場合にも正常動作でなかったことが中断状態判定ステッ
プ3で判定された場合には、再度セーブされている正常
状態まで戻り、更にブレークポイントの設定を行ってデ
ィバッグを行う。もし、ブレークした所で正常動作の確
認がおこなわれた場合は、状態セーブステップ4でその
状態をセーブし、ディバッグを先へ進め、徐々にプログ
ラムの範囲を狭めて不具合箇所を見つける。
【0010】図2は図1におけるセーブ/ロード時のメ
モリ及びレジスタの処理状態図である。図2に示すよう
に、状態のセーブを行う場合はディバッガが有している
ディバッグ対象プログラム管理情報10からセーブする
べき対象プログラムのデータ領域9のスタートアドレス
とサイズを得る。これらの情報に基づいて、ディバッグ
対象プログラムのデータ領域9をディバッガの管理領域
のメモリセーブ領域12にコピーし、更に全レジスタ情
報13をディバッガの管理領域におけるレジスタセーブ
領域11にセーブする。更にディバッグを進めて、新た
に正常状態を確認できたら、同様にデータ領域9をメモ
リセーブ領域12へコピーするとともに、全レジスタ情
報13をレジスタセーブ領域11へコピーし、常にセー
ブ情報を更新して最新の正常状態を保持する。
【0011】逆に、セーブされた状態をロードする場合
には、レジスタセーブ領域11の内容を全レジスタ情報
13としてロードし、メモリセーブ領域12の内容をプ
ログラムのデータ領域9にロードする。
【0012】図3は本発明の他の実施例を説明するため
のディバッグ処理フロー図である。図3に示すように、
本実施例はまずブレークポンイント設定ステップ1でこ
れから実行される予定のプログラムアドレスにブレーク
ポイントを設定し、しかる後プログラム実行ステップ2
でプログラムを実行する。プログラムがブレークポイン
トでブレークしたら、中断状態判定ステップ3でその状
態が正しいか否かを判断する。この時正しいと判断した
ら、状態セーブステップ4でプログラムのデータ領域お
よびレジスタなどのコンテキストをディバッガの管理領
域にセーブし、ディバッグ維持ステップ5で更にディバ
ッグを先へ進める。次のブレークポイントでブレークし
たら、先程セーブした領域とは別な領域にその時の状態
をセーブする。正常に動作していると判断している間
は、プログラム実行・ディバッグ処理8を繰り返す。
【0013】一方、中断状態判定ステップ3で動作が正
しくないと判断された場合は、セーブ状態のロードステ
ップ14でその前に正常と判断されてセーブされた状態
へ戻り、ブレークポイント設定ステップ7でブレークポ
イントを再設定し、そこから新たにディバッグを行う。
ここでもし、1つ前の状態がやはり正しくなかった場
合、またはそれ以前の状態を知りたいなどの場合には、
経由してきた各ブレークポイントでセーブされたいずれ
かの状態へ戻り(14)、必要な情報を得てディバッグ
を進める(7)。
【0014】図4は図3におけるセーブ/ロード時のメ
モリおよびレジスタの処理状態図である。図4に示すよ
うに、状態のセーブを行う場合は、ディバッガの持つデ
ィバッグ対象プログラム管理情報10からセーブするべ
き対象プログラムのデータ領域9のスタートアドレスと
サイズを得る。これらの情報に基づいて、ディバッグ対
象プログラムのデータ領域9をディバッガの管理領域の
メモリセーブ領域18にコピーし、対象プログラムの全
レジスタ22をディバッガの管理領域におけるレジスタ
セーブ領域17にセーブする。更に、セーブ履歴管理領
域15は状態をセーブした領域17の場所を保持し、セ
ーブ領域管理情報16は次にセーブできる領域19を指
し示す。次に状態セーブを行う場合は、同様に対象プロ
グラム管理情報10により対象プログラムのデータ領域
9のスタートアドレスとサイズを得る。これらに基づ
き、セーブ領域管理情報16によりセーブできる領域1
9および20を得て、データ領域9のセーブとレジスタ
のセーブを行う。この時、セーブ履歴管理領域15は新
たに状態をセーブした領域19の場所も保持し、セーブ
領域管理情報16は次にセーブできる領域21を指す。
【0015】一方、状態のロードの場合はセーブ履歴管
理領域15の管理情報により自由に状態の選択を行い、
選択した状態の状態セーブ位置からメモリ情報およびレ
ジスタ情報をデータ領域9および全レジスタ22にロー
ドする。
【0016】このように、本実施例では最後にセーブし
ておいた状態が正しくなかった場合に、更に過去にさか
のぼってディバッグが行うことができる。
【0017】
【発明の効果】以上説明したように、本発明のディバッ
ガはプログラムの実行状態に異常を発見した場合に、そ
れ以前に正常動作が確認され、その状態を保存した任意
のプログラムアドレスへ戻り、そこから再度ディバッグ
が行うことにより、容易に不具合箇所を発見することが
できるという効果がある。また、本発明は繰り返しプロ
グラムを最初から実行する必要がないので、従来のディ
バッグより不具合の可能性のあるプログラム領域を容易
に縮小でき、ディバッグ時間を短縮できるという効果が
ある。
【図面の簡単な説明】
【図1】本発明の一実施例を説明するためのディバッグ
処理のフロー図である。
【図2】図1におけるセーブ/ロード時のメモリ/レジ
スタの処理状態図である。
【図3】本発明の他の実施例を説明するためのディバッ
グ処理フロー図である。
【図4】図3におけるセーブ/ロード時のメモリ/レジ
スタの処理状態図である。
【図5】従来の一例を説明するためのディバッグ処理フ
ロー図である。
【符号の説明】
1 ブレークポイント設定ステップ 2 プログラム実行ステップ 3 中断状態判定ステップ 4 状態セーブステップ 5 ディバッグ継続ステップ 6,14 セーブ状態のロードステップ 7 ブレークポイント設定ステップ 8 プログラム実行・ディバッグ処理 9 対象プログラムのデータ領域 10 対象プログラムの管理情報 11 レジスタセーブ領域 12 メモリセーブ領域 13,22 対象プログラムのレジスタ情報 15 セーブ履歴管理情報 16 セーブ領域管理情報 17〜21 状態セーブ領域

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 プログラムのディバッグ中に任意のアド
    レスで実行を中断し、再度その後のディバッグを可能と
    するプログラムディバッガにおいて、中断した任意のア
    ドレスでプログラムのデータ領域の全内容およびコンテ
    キストをセーブする管理領域を有し、前記プログラムの
    実行を再開してから前記セーブした情報をロードするこ
    とにより、セーブした時点の状態に戻ることを特徴とす
    るプログラムディバッガ。
  2. 【請求項2】 前記セーブする情報は複数の状態をセー
    ブし、その内の任意の状態へ戻る請求項1記載のプログ
    ラムディバッガ。
JP4075012A 1992-03-31 1992-03-31 プログラムディバッガ Withdrawn JPH05282175A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4075012A JPH05282175A (ja) 1992-03-31 1992-03-31 プログラムディバッガ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4075012A JPH05282175A (ja) 1992-03-31 1992-03-31 プログラムディバッガ

Publications (1)

Publication Number Publication Date
JPH05282175A true JPH05282175A (ja) 1993-10-29

Family

ID=13563853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4075012A Withdrawn JPH05282175A (ja) 1992-03-31 1992-03-31 プログラムディバッガ

Country Status (1)

Country Link
JP (1) JPH05282175A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301616A (ja) * 2004-04-09 2005-10-27 Ricoh Co Ltd デバッグシステム
JP2009140136A (ja) * 2007-12-05 2009-06-25 Mitsubishi Electric Corp 再現試験システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301616A (ja) * 2004-04-09 2005-10-27 Ricoh Co Ltd デバッグシステム
JP2009140136A (ja) * 2007-12-05 2009-06-25 Mitsubishi Electric Corp 再現試験システム

Similar Documents

Publication Publication Date Title
US7890800B2 (en) Method, operating system and computing hardware for running a computer program
JP2008009721A (ja) 評価システム及びその評価方法
US20050060690A1 (en) Microprocessor system with software emulation processed by auxiliary hardware
US11307973B2 (en) Method and device for testing robustness and stability of SMM, and storage medium
JPH05282175A (ja) プログラムディバッガ
JPH02294739A (ja) 障害検出方式
JP2019204388A (ja) 半導体装置、およびデバッグ方法
CN110727577B (zh) 嵌入式***软件中概率复现问题的调试方法、***及介质
US20080133838A1 (en) Data processing device
US6185700B1 (en) Method and device for evaluating a program
JPH0588933A (ja) デバツグ機能を有する並列処理システム
JPH03113648A (ja) プログラムデバツグ方式
JP2002116926A (ja) プログラム処理装置およびプログラム処理方法
CN113051151A (zh) 一种任务跟踪方法、装置、设备和计算机可读存储介质
JPS59183443A (ja) デバツグ装置
JP2002157143A (ja) 集積回路試験プログラムのデバッグ支援システム
JPH1078891A (ja) ソフトウェアプログラム評価装置
JP2003330751A (ja) マイクロプロセッサのデバッグシステム
CN117806723A (zh) 管理引擎状态切换方法、装置、设备及存储介质
JPH1049401A (ja) プログラムのデバッグ方法
JPH04332050A (ja) 再起動時中断点からの再開可能なデバガ
JPS58158747A (ja) プログラマブル・コントロ−ラ
CN112631844A (zh) Ssd开关机测试***、方法、计算机设备及存储介质
JPH05143378A (ja) 情報処理装置
JP2002251299A (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: 19990608