JP2000284989A - デバッグ装置 - Google Patents

デバッグ装置

Info

Publication number
JP2000284989A
JP2000284989A JP11091907A JP9190799A JP2000284989A JP 2000284989 A JP2000284989 A JP 2000284989A JP 11091907 A JP11091907 A JP 11091907A JP 9190799 A JP9190799 A JP 9190799A JP 2000284989 A JP2000284989 A JP 2000284989A
Authority
JP
Japan
Prior art keywords
debug
instruction
program
command
processing
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
JP11091907A
Other languages
English (en)
Inventor
Kazuyoshi Sasaki
一義 佐々木
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 JP11091907A priority Critical patent/JP2000284989A/ja
Publication of JP2000284989A publication Critical patent/JP2000284989A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 プログラム中の条件文のアドレスまたはソー
ス行番号の羅列から、各分岐においてどちら(「真」ま
たは「偽」)に処理が流れたのかをデバッグ実行者が判
断しなければならない。 【解決手段】 デバッグ装置1は、デバッグ進行のため
のコマンドを出力するとともに結果表示を行う端末2に
接続される。デバッグ装置1において、情報解析部11
は、端末2からのデバッグコマンドを入力し、プログラ
ム格納部3に格納されているプログラムにおける分岐命
令の実行結果に応じて実行される「真」の処理および
「偽」の処理の命令を、デバッグ制御部13に制御を戻
すためのコードに置換する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラムデバッ
グのために使用するデバッグ装置に関し、特に、デバッ
グ作業中に、プログラムにおける分岐後の各命令を実行
したか否かを容易に確認することができるデバッグ装置
に関する。
【0002】
【従来の技術】作成されたプログラムをデバッグすると
きには、プログラム中に存在する多数の処理実行経路の
うち、できるだけ多くの経路が正常動作することをテス
トすることが望ましい。すなわち、テスト網羅度をでき
るだけ上げることが望ましい。実行経路は条件分岐によ
って枝分かれするので、結局、プログラム中の条件分岐
を追跡することがデバッグ作業の大きな部分を占める。
【0003】特開平3−15950号公報には、分岐命
令が実行される度に割り込みを発生し、割込処理におい
て分岐命令のアドレスを保存するデバッグ装置が記載さ
れている。そのようなデバッグ装置を用いた場合には、
特にブレークポイントを設定しなくても、自動的に、テ
ストが行われた分岐命令箇所を確認することができる。
【0004】また、特開平8−16433号公報には、
プログラム中の全ての分岐命令に網羅度測定のためのコ
ードを付し、プログラムをテスト走行させて、処理の流
れが分岐命令を通過したか否か確認できる装置が記載さ
れている。また、特開平7−121401号公報には、
プリフェッチ機能を有するマイクロコンピュータのプロ
グラムをデバッグする際に、コマンドキュー内の全ての
命令に識別コードを付し、コマンドキュー内のどの命令
が実行されたのかを容易に把握できるデバッグ装置が記
載されている。
【0005】
【発明が解決しようとする課題】しかし、上記の各デバ
ッグ装置は、分岐命令の箇所に割り込み発生のためのコ
ードや識別コードを埋め込んでデバッグを支援するもの
である。すると、デバッグ装置に接続された表示装置に
は、通過した分岐命令のアドレスまたは行番号が順次表
示されることになる。デバッグ実行者は、分岐命令のア
ドレスまたは行番号の羅列から処理実行経路を判断する
ことになる。すなわち、表示装置に表示されている第1
の分岐命令のアドレスまたは行番号と、その次に表示さ
れる第2の分岐命令のアドレスまたは行番号とから、第
1の分岐命令の実行によって「真」の側に処理が進んだ
のか「偽」の側に処理が進んだのかを判断しなければな
らず、第1の分岐命令の実行によって「真」の側に処理
が進んだのか「偽」の側に処理が進んだのかを直ちに認
識することはできない。
【0006】つまり、分岐命令の箇所に割り込み発生の
ためのコードや識別コードを埋め込んだ場合には分岐命
令を追跡することに関しては便利であるが、分岐命令の
実行によって「真」の側に処理が進んだのか「偽」の側
に処理が進んだのかはデバッグ実行者が判断しなければ
ならず、その分、デバッグ効率が低下する。なお、特開
平8−16433号公報には、分岐先等までをも容易に
認識できるといった記載があるが、その意味は、単に分
岐命令のオペコードを特定できるといったことに過ぎ
ず、デバッグ実行者が直ちに分岐命令後の命令アドレス
を認識できるといった効果を期待することはできない。
【0007】本発明は、上記のような課題を解消するた
めになされたものであって、プログラム中の分岐命令の
通過をテストするような場合に、さらに効率的にテスト
を遂行できるデバッグ装置を提供することを目的とす
る。
【0008】
【課題を解決するための手段】本発明によるデバッグ装
置は、被デバッグ対象のプログラムにおける分岐命令の
実行結果に応じて実行される各命令にデバッグ装置に制
御を移すためのコマンドを埋め込むデバッグ用コマンド
埋め込み手段と、プログラム実行位置がデバッグ装置に
制御を移すためのコマンドに達すると、その位置のアド
レスおよびソース行情報を出力するデバッグ制御手段と
を備えたものである。
【0009】デバッグ用コマンド埋め込み手段は、分岐
命令の実行結果に応じて実行される各命令を、デバッグ
装置に制御を移すためのコマンドに置き換える構成であ
ってもよい。
【0010】
【発明の実施の形態】以下、本発明の実施の形態を図面
を参照して説明する。図1は、本発明によるデバッグ装
置を含むデバッグシステムの一構成例を示すシステム構
成図である。図1に示すように、デバッグ装置1は、デ
バッグ進行のためのコマンドを出力するとともに結果表
示を行う端末2に接続される。デバッグ装置1におい
て、情報解析部11は、端末2からのデバッグコマンド
を入力し、プログラム格納部3に格納されているプログ
ラムにおける分岐命令の実行結果に応じて実行される
「真」の処理および「偽」の処理の命令を、デバッグ制
御部13に制御を戻すためのコードに置換する。
【0011】そのコードは、例えば特開平3−1595
0号公報に記載されているような割り込みを生じさせる
ためのコードであってもよいし、特開平8−16433
号公報に記載されているような識別コードであってもよ
い。割り込みを生じさせるためのコードに置換された場
合には、割込処理によってデバッグ制御部13が起動さ
れる。単なる識別コードに置換された場合には、デバッ
グ制御部13が、プログラム走行中に識別コードの検出
処理を行う。
【0012】なお、デバッグ情報格納部4には、コンパ
イラがデバッグ情報として出力したモジュールに属する
全ての条件文と条件分岐による「真」および「偽」の処
理のアドレスが格納されている。また、デバッグ情報格
納部4には、ソースファイルも格納される。情報解析部
11は、デバッグ情報格納部4に格納されている情報か
らコード置換場所を決定する。また、情報解析部11
は、コード置換アドレスと置換前の正規の命令とを保存
する。そして、実行処理部12は、端末2からのデバッ
グ開始コマンドに応じてプログラムを実行する。
【0013】デバッグ制御部13は、起動されると、実
行された命令のアドレスをデバッグ情報格納部4から得
るとともに、対応するソース行番号をデバッグ情報格納
部4から得て、それらを端末2に出力する。端末2は、
実行された命令のアドレスおよびソース行番号を表示す
る。従って、端末2には、条件分岐にもとづく「真」お
よび「偽」の処理のアドレス/ソース行番号が表示され
る。なお、デバッグ制御部13は、条件分岐を引き起こ
した分岐命令のアドレスおよびソース行番号をデバッグ
情報格納部4から得て、それらも端末2に出力してもよ
い。
【0014】以下、図2に示すプログラム例および図3
に示すフローチャートを参照して動作について説明す
る。図2に示すようなプログラム101中のモジュール
Aをテストする場合を例にする。モジュールAにおい
て、「IF 条件a」および「IF 条件b」が条件文
であり、「処理a」〜「処理d」が「真」または「偽」
の場合の処理である。
【0015】このシステムでは、コンパイラは、コンパ
イル時に、命令コードとともに、デバッグ情報102と
してモジュールAに属する全ての条件文と条件分岐によ
る「真」および「偽」の処理のアドレスを出力する(ス
テップS1,S2)。図1に示された構成例では、モジ
ュールAの各命令コードがプログラム格納部3に格納さ
れ、デバッグ情報102がデバッグ情報格納部4に格納
される。また、デバッグ情報格納部4には、モジュール
Aのソースファイルも格納される。
【0016】端末2からデバッグコマンドが入力される
と、デバッグ装置1の情報解析部11は、プログラム格
納部3に格納されているプログラムにおける分岐命令実
行にもとづく「真」の処理および「偽」の処理の命令
を、デバッグ制御部13に制御を移すためのコード、例
えば割込発生命令に置換する(ステップS3,S4)。
すなわち、図2に示された「処理a」〜「処理d」の命
令を、デバッグ制御部13に制御を移すための割込発生
命令に置換する。また、置換前の正規の命令コードを保
存する。
【0017】そして、端末2からデバッグ開始コマンド
が入力されると、情報解析部11は、実行処理部12に
プログラムの実行を指示する。指示に応じて、実行処理
部12は、プログラム格納部3に格納されているプログ
ラムを実行する(ステップS5,S6)。
【0018】プログラム実行中に、デバッグ制御部13
に制御を移すための割込発生命令に遭遇すると、割り込
みが発生しデバッグ制御部13が起動される(ステップ
S7)。デバッグ制御部13は、実行された命令のアド
レスおよびソース行番号をデバッグ情報格納部4から得
て、それらを端末2に出力する(ステップS8)。端末
2は、実行された命令のアドレスおよびソース行番号を
表示する。また、デバッグ制御部13は、割込発生命令
を、保存されている正規の命令コードに戻す(ステップ
S9)。
【0019】以上の処理が、モジュールAが終了するま
で、または、端末2からテスト中断コマンドが入力され
るまで実行される(ステップS10)。なお、テスト終
了は、ブレークポイントの設定にもとづくものでもよ
い。
【0020】以上のように、この実施の形態では、条件
文ではなく、条件が「真」および「偽」であるときに実
行される命令に、デバッグ制御部13に制御を移すコー
ドを埋め込み、「真」または「偽」にもとづく命令のア
ドレスおよびソース行番号が、順次端末2に表示され
る。すると、デバッグ実行者は、表示されているアドレ
スおよびソース行番号から、直ちにプログラムの実行経
路を特定することができる。従来のデバッグ装置では、
条件文のアドレスおよびソース行番号が表示されるの
で、条件文アドレスまたはソース行番号の羅列から、各
分岐においてどちら(「真」または「偽」)に処理が流
れたのかをデバッグ実行者が判断しなければならない。
【0021】つまり、上記の実施の形態によれば、プロ
グラムのテスト中に、従来のデバッグ装置を用いた場合
に比べて、より容易にプログラム中のテスト完了経路お
よびテスト網羅度を把握することができる。
【0022】なお、上記の実施の形態では、デバッグ制
御部13に制御を移すコードとして割込発生命令を例に
とったが、デバッグ制御部13に制御を移すコードは、
割込発生命令に限られない。また、上記の実施の形態で
は、デバッグを行うために、正規の命令コードをデバッ
グ制御部13に制御を移すコードに置換したが、置換す
るのではなく付加してもよい。ただし、正規の命令コー
ドをデバッグ制御部13に制御を移すコードに置換した
場合にはデバッグ時と通常のプログラム実行時とでアド
レスの食い違いはないが、デバッグ制御部13に制御を
移すコードを付加した場合には、そのままでは、付加さ
れたコードのアドレスが端末2で表示されるおそれがあ
る。すなわち、分岐命令実行にもとづく「真」または
「偽」の命令のアドレスと、端末2に表示されるアドレ
スとに食い違いが生ずるおそれがある。そこで、デバッ
グ制御部13が、アドレス補正を行うようにしてもよ
い。
【0023】
【発明の効果】以上のように、本発明によれば、デバッ
グ装置を、被デバッグ対象のプログラムにおける分岐命
令の実行結果に応じて実行される各命令にデバッグ装置
に制御を移すためのコマンドを埋め込むように構成した
ので、分岐命令そのものに対してデバッグ装置に制御を
移すためのコマンドを埋め込む場合に比べて、分岐命令
の実行によって「真」の側に処理が進んだのか「偽」の
側に処理が進んだのかを直ちに認識することができ、プ
ログラム中の分岐命令の通過をテストするような場合
に、より効率的にテストを遂行できる効果がある。
【0024】分岐命令の実行結果に応じて実行される各
命令をデバッグ装置に制御を移すためのコマンドに置き
換えるように構成されている場合には、プログラム実行
箇所がデバッグ装置に制御を移すためのコマンドに到達
したときに出力されるアドレスが、正規のプログラムを
実行した場合と同じアドレスとなり、テスト中に表示装
置等にアドレスを表示する場合に、正規のプログラムに
おけるアドレスと同一のアドレスを表示することができ
る。
【図面の簡単な説明】
【図1】 本発明によるデバッグ装置を含むデバッグシ
ステムの一構成例を示すシステム構成図である。
【図2】 デバッグ対象のプログラム例を示す説明図で
ある。
【図3】 デバッグ処理を示すフローチャートである。
【符号の説明】
1 デバッグ装置 2 端末 3 プログラム格納部 4 デバッグ情報格納部 11 情報解析部 12 実行制御部 13 デバッグ制御部

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 被デバッグ対象のプログラムにおける分
    岐命令の実行結果に応じて実行される各命令にデバッグ
    装置に制御を移すためのコマンドを埋め込むデバッグ用
    コマンド埋め込み手段と、 プログラム実行位置がデバッグ装置に制御を移すための
    コマンドに達すると、その位置のアドレスおよびソース
    行情報を出力するデバッグ制御手段とを備えたデバッグ
    装置。
  2. 【請求項2】 デバッグ用コマンド埋め込み手段は、分
    岐命令の実行結果に応じて実行される各命令を、デバッ
    グ装置に制御を移すためのコマンドに置き換える請求項
    1記載のデバッグ装置。
JP11091907A 1999-03-31 1999-03-31 デバッグ装置 Pending JP2000284989A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11091907A JP2000284989A (ja) 1999-03-31 1999-03-31 デバッグ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11091907A JP2000284989A (ja) 1999-03-31 1999-03-31 デバッグ装置

Publications (1)

Publication Number Publication Date
JP2000284989A true JP2000284989A (ja) 2000-10-13

Family

ID=14039661

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11091907A Pending JP2000284989A (ja) 1999-03-31 1999-03-31 デバッグ装置

Country Status (1)

Country Link
JP (1) JP2000284989A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109686391A (zh) * 2017-10-19 2019-04-26 三星电子株式会社 非易失性存储器装置及其操作方法及非易失性存储器封装

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109686391A (zh) * 2017-10-19 2019-04-26 三星电子株式会社 非易失性存储器装置及其操作方法及非易失性存储器封装
CN109686391B (zh) * 2017-10-19 2023-09-26 三星电子株式会社 非易失性存储器装置及其操作方法及非易失性存储器封装

Similar Documents

Publication Publication Date Title
US9152531B2 (en) Post-compile instrumentation of object code for generating execution trace data
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
US20030097613A1 (en) Software debugger, system-level debugger, debugging method, and debugging program
CN110580226A (zh) 操作系统级程序的目标码覆盖率测试方法、系统及介质
US20090013313A1 (en) Debug device, debug method, and program
US6701518B1 (en) System and method for enabling efficient processing of a program that includes assertion instructions
JP2000284989A (ja) デバッグ装置
US20070168978A1 (en) Computer program code debugging method and system
CN110647467B (zh) 基于单步异常的目标码覆盖率测试方法、系统及介质
JP2007004516A (ja) 組込みシステムのプログラムデバッグ方法
CN110554969B (zh) 基于预设断点的目标码覆盖率测试方法、系统及介质
JPH03294934A (ja) 高級プログラム言語用デバッガ
JP2800577B2 (ja) デバッグ装置
JPH07319730A (ja) テスト・デバッグ方法
JPH04310139A (ja) コンパイラ言語用デバッグサポートツール
JP2000293399A (ja) デバッグ方法及びデバッグ装置
JP2684966B2 (ja) 入出力処理装置のデバッグ装置
JPH06202907A (ja) デバッグ支援装置
JPH01166228A (ja) 末通過チェックポイント自動検出デバッグ方式
JP3012618B1 (ja) 被検査プログラムのデバグ方法とそのデバグ方式
JP2006350676A (ja) 組込みシステムのプログラムデバッグ方法
KR20030058130A (ko) 프로세서의 실시간 디버깅 장치
JP2001290672A (ja) デバッガ、デバッグ方法、記録媒体
JP2001154874A (ja) プログラムデバッグ装置
JPH11306042A (ja) ソフトウェア開発支援装置及びデバッグ方法