JPH0239332A - ソフトウェアブレーク方式 - Google Patents
ソフトウェアブレーク方式Info
- Publication number
- JPH0239332A JPH0239332A JP63190008A JP19000888A JPH0239332A JP H0239332 A JPH0239332 A JP H0239332A JP 63190008 A JP63190008 A JP 63190008A JP 19000888 A JP19000888 A JP 19000888A JP H0239332 A JPH0239332 A JP H0239332A
- Authority
- JP
- Japan
- Prior art keywords
- program
- execution
- debugged
- instruction
- debug
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000006870 function Effects 0.000 abstract description 16
- 238000010586 diagram Methods 0.000 description 4
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、デバッガなどで用いられるソフトウェアブレ
ーク方式に関する。
ーク方式に関する。
本発明はデバッグの対象となっているプログラムの実行
途中でそのプログラムの実行を停止させるソフトウェア
ブレーク方式において、あらかじめコンパイラによって
被デバッグプログラム中に実行にさしさわりのない実行
命令を埋め込み、ブレークポイントから被デバッグプロ
グラムを再実行するときに埋め込んだ実行命令分プログ
ラムカウンタをその分だけ先に進めることにより、 ブレークポイントを消失させることなく、被デバッグプ
ログラムを再実行させ、同一アドレスに何度もブレーク
させることができるようにしたものである。
途中でそのプログラムの実行を停止させるソフトウェア
ブレーク方式において、あらかじめコンパイラによって
被デバッグプログラム中に実行にさしさわりのない実行
命令を埋め込み、ブレークポイントから被デバッグプロ
グラムを再実行するときに埋め込んだ実行命令分プログ
ラムカウンタをその分だけ先に進めることにより、 ブレークポイントを消失させることなく、被デバッグプ
ログラムを再実行させ、同一アドレスに何度もブレーク
させることができるようにしたものである。
従来、この種のソフトウェアブレーク方式は命令交換に
よる方式、すなわちソフトウェアブレークを設定したい
アドレスにある機械語を特定アドレスに分岐するための
命令に書き換えてプログラムを実行し、そのブレークポ
イントで停止し、そこからプログラムを再開するときに
分岐命令をもとの機械語に戻してその機械語から実行す
るものが知られている。
よる方式、すなわちソフトウェアブレークを設定したい
アドレスにある機械語を特定アドレスに分岐するための
命令に書き換えてプログラムを実行し、そのブレークポ
イントで停止し、そこからプログラムを再開するときに
分岐命令をもとの機械語に戻してその機械語から実行す
るものが知られている。
上述した従来のソフトウェアブレーク方式は、設定した
ブレークポイントでプログラムが停止した後、このブレ
ークポイントからプログラムを再実行させるためには、
分岐命令をもとの機械語にもどさなければならないため
に、そのブレークポイントが消失してプログラムのデバ
ッグなどのように何度も同一アドレスで停止させる必要
があるときなどは、プログラムをデバッグする度にブレ
ークポイントを再設定しなければならず、デバッグ作業
が煩雑になる欠点がある。
ブレークポイントでプログラムが停止した後、このブレ
ークポイントからプログラムを再実行させるためには、
分岐命令をもとの機械語にもどさなければならないため
に、そのブレークポイントが消失してプログラムのデバ
ッグなどのように何度も同一アドレスで停止させる必要
があるときなどは、プログラムをデバッグする度にブレ
ークポイントを再設定しなければならず、デバッグ作業
が煩雑になる欠点がある。
本発明はこのような欠点を除去するもので、ブレークポ
イントを消失させることなくブレークポイントから被デ
バッグプログラムを再実行させ、同一アドレスに何度も
ブレークさせることができる方式を提供することを目的
とする。
イントを消失させることなくブレークポイントから被デ
バッグプログラムを再実行させ、同一アドレスに何度も
ブレークさせることができる方式を提供することを目的
とする。
C問題点を解決するための手段〕
本発明は、デバッグコマンドを入力する入出力端末と、
この入出力端末からのデバッグコマンドによりデバッグ
を実行するデバッガと、前記入出力端末から入力された
デバッグコマンドを前記デバッガに実行させるデバッグ
実行装置と、この装置で実行する被デバッグプログラム
を生成するコンパイラとを備えたソフトウェアブレーク
方式において、前記コンパイラに、実行文の先頭にある
決められた実行にさしさわりのない命令を埋込む手段を
備え、前記デバッガに、ブレークポイント設定時にブレ
ークさせたい位置にある実行にさしさわりのない命令を
オペレーティングシステムあるいはマイクロプロセッサ
の機能として前記被デバッグプログラムの実行を中断す
る命令に書き込むブレークポイント設定手段と、前記被
デバッグプログラムを実行しブレークポイントで停止さ
せる手段と、前記被デバッグプログラムの実行を再開す
るときにプログラムカウンタを前記実行にさしさわりの
ない命令語長分加算して停止させた位置以降のプログラ
ム実行を再開する手段とを備えたことを特徴とする。
この入出力端末からのデバッグコマンドによりデバッグ
を実行するデバッガと、前記入出力端末から入力された
デバッグコマンドを前記デバッガに実行させるデバッグ
実行装置と、この装置で実行する被デバッグプログラム
を生成するコンパイラとを備えたソフトウェアブレーク
方式において、前記コンパイラに、実行文の先頭にある
決められた実行にさしさわりのない命令を埋込む手段を
備え、前記デバッガに、ブレークポイント設定時にブレ
ークさせたい位置にある実行にさしさわりのない命令を
オペレーティングシステムあるいはマイクロプロセッサ
の機能として前記被デバッグプログラムの実行を中断す
る命令に書き込むブレークポイント設定手段と、前記被
デバッグプログラムを実行しブレークポイントで停止さ
せる手段と、前記被デバッグプログラムの実行を再開す
るときにプログラムカウンタを前記実行にさしさわりの
ない命令語長分加算して停止させた位置以降のプログラ
ム実行を再開する手段とを備えたことを特徴とする。
コンパイラが実行文の先頭にある決められた実行にさし
さわりのない命令を自動的に埋め込み、デバッガがブレ
ークポイント設定時にブレークさせたい位置にある埋め
込まれた命令を、オペレーティングシステムあるいはマ
イクロプロセッサの機能として被デバッグプログラムの
実行を中断する命令に書き込み、被デバッグプログラム
を実行してブレークポイントを停止した後、被デバッグ
プログラムの実行を再開するときにプログラムカウンタ
を埋め込んだ実行にさしさわりのない命令語長分だけ加
算して先に進めブレークさせた位置以降のプログラムを
実行する。
さわりのない命令を自動的に埋め込み、デバッガがブレ
ークポイント設定時にブレークさせたい位置にある埋め
込まれた命令を、オペレーティングシステムあるいはマ
イクロプロセッサの機能として被デバッグプログラムの
実行を中断する命令に書き込み、被デバッグプログラム
を実行してブレークポイントを停止した後、被デバッグ
プログラムの実行を再開するときにプログラムカウンタ
を埋め込んだ実行にさしさわりのない命令語長分だけ加
算して先に進めブレークさせた位置以降のプログラムを
実行する。
これにより、ブレークポイントを消失させることなく、
被デバッグプログラムを再実行させ、同一アドレスに何
度もブレークさせることができる。
被デバッグプログラムを再実行させ、同一アドレスに何
度もブレークさせることができる。
次に本発明実施例について図面の簡単な説明する。第1
図は本発明実施例のソフトウェアブレーク方式の構成を
示すブロック図である。
図は本発明実施例のソフトウェアブレーク方式の構成を
示すブロック図である。
本発明実施例は、コンパイラ1と、被デバッグプログラ
ム2と、デバッガ3と、入出力端末4と、デバッグ実行
装置5とを備える。
ム2と、デバッガ3と、入出力端末4と、デバッグ実行
装置5とを備える。
コンパイラ1は、被デバッグプログラム2を生成するも
のであり、翻訳時にデバッガ3によりブレークポイント
が設定できるように被デバッグプログラム2中のブレー
クポイント設定可能場所に実行にさしさわりのない命令
(以下NOPという)を自動的に生成する手段を含む。
のであり、翻訳時にデバッガ3によりブレークポイント
が設定できるように被デバッグプログラム2中のブレー
クポイント設定可能場所に実行にさしさわりのない命令
(以下NOPという)を自動的に生成する手段を含む。
入出力端末4は、CRTなどの表示装置とキーボードと
を有し、オペレータがキーボードから希望するデバッグ
を行うためのデバッグコマンドを入力するもので、この
入力されたコマンドによりデバッガ3がデバッグを実行
し、その実行結果が表示装置に表示される。
を有し、オペレータがキーボードから希望するデバッグ
を行うためのデバッグコマンドを入力するもので、この
入力されたコマンドによりデバッガ3がデバッグを実行
し、その実行結果が表示装置に表示される。
デバッグ実行装置5は、入出力端末4から入力されたコ
マンドをデバッガ3で実行させるための次の機能を有す
るもので、これはオペレーティングシステムあるいはマ
イクロプロセッサなどのハードウェアにより実現される
。
マンドをデバッガ3で実行させるための次の機能を有す
るもので、これはオペレーティングシステムあるいはマ
イクロプロセッサなどのハードウェアにより実現される
。
■ 被デバッグプログラム2を実行させる機能。
■ 被デバッグプログラム2をあらかじめ決められた命
令(以下BRK命令という)が実行されたときにプログ
ラム実行を停止させる機能。
令(以下BRK命令という)が実行されたときにプログ
ラム実行を停止させる機能。
■ 停止している被デバッグプログラム2を再実行する
機能。
機能。
■ 被デバッグプログラム2が停止しているとき、その
レジスタ値、メモリ値を任意の値に変更および参照でき
る機能。
レジスタ値、メモリ値を任意の値に変更および参照でき
る機能。
また、デバッガ本体3は、このデバッグ実行装置5を制
御することで、本来持たない高度なデバッグ機能を実現
するものであり、入出力端末4から入力されたコマンド
を解釈してデバッグ実行装置5を制御し、この制御結果
を入出力端末4に表示する。
御することで、本来持たない高度なデバッグ機能を実現
するものであり、入出力端末4から入力されたコマンド
を解釈してデバッグ実行装置5を制御し、この制御結果
を入出力端末4に表示する。
第3図は本発明実施例のコンパイラ1の処理の流れを示
すフローチャートである。コンパイラ1の処理はソース
読み込み処理21、行番号情報付加処理22、NOP命
令判定処理23およびNOP命令生成処理24からなる
。
すフローチャートである。コンパイラ1の処理はソース
読み込み処理21、行番号情報付加処理22、NOP命
令判定処理23およびNOP命令生成処理24からなる
。
まずソース読み込み処理21ではコンパイラが被デバッ
グプログラムソースファイルを読み込む。
グプログラムソースファイルを読み込む。
行番号情報付加処理22では読み込んだ被デバッグプロ
グラムソースファイル中の実行文かどうかを確認し、次
のNOP命令判定処理23に制御をわたす。
グラムソースファイル中の実行文かどうかを確認し、次
のNOP命令判定処理23に制御をわたす。
ここでは実行文の場合は次のNOP命令生成処理24に
制御をわたし、非実行文(コメントやデータ宣言文など
)の場合はソース読み込み処理21の制御をわたす。N
OP命令生成処理24ではこの実行文の先頭に実行にさ
しさわりのないNOP命令をオブジェクト生成時に自動
的に組み込む。これは被デバッグプログラムソースファ
イル終了まで行われる。この処理はデバッガを使用して
デバッグを行いたい場合、コンパイルオプションで実行
されるものである。
制御をわたし、非実行文(コメントやデータ宣言文など
)の場合はソース読み込み処理21の制御をわたす。N
OP命令生成処理24ではこの実行文の先頭に実行にさ
しさわりのないNOP命令をオブジェクト生成時に自動
的に組み込む。これは被デバッグプログラムソースファ
イル終了まで行われる。この処理はデバッガを使用して
デバッグを行いたい場合、コンパイルオプションで実行
されるものである。
第4図は本発明実施例の第3図に示すコンパイラ1によ
って処理された被デバッグプログラムのイメージを示す
図であり、サンプルソース中の実行文3行目と4行目に
対応する当該オブジェクトにNOP命令が付加されたこ
とを示している。
って処理された被デバッグプログラムのイメージを示す
図であり、サンプルソース中の実行文3行目と4行目に
対応する当該オブジェクトにNOP命令が付加されたこ
とを示している。
第2図は本発明実施例のデバッガ3のブレークポイント
処理からプログラム再開を示したフローチャートである
。このデバッガ3の処理はブレークポイント設定処理4
1、ブレークポイント停止処理42およびプログラム再
開処理43からなる。
処理からプログラム再開を示したフローチャートである
。このデバッガ3の処理はブレークポイント設定処理4
1、ブレークポイント停止処理42およびプログラム再
開処理43からなる。
まずブレークポイント設定処理41では入出力端末4か
ら入力されたブレークポイント設定コマンドを認識し、
被デバッグプログラム2の実行文のNOP命令の埋め込
まれている箇所へデバッグ実行装置5の機能で説明した
■のBRK命令を埋め込む。ブレークポイント停止処理
42ではデバッグ実行装置5の機能で説明した■により
被デバッグプログラム2を実行し■により被デバッグプ
ログラム2が停止され、このときその他のコマンドを入
出力端末4から入力し、■の機能によりデバッグを行う
。その実行結果は入出力端末4により表示される。
ら入力されたブレークポイント設定コマンドを認識し、
被デバッグプログラム2の実行文のNOP命令の埋め込
まれている箇所へデバッグ実行装置5の機能で説明した
■のBRK命令を埋め込む。ブレークポイント停止処理
42ではデバッグ実行装置5の機能で説明した■により
被デバッグプログラム2を実行し■により被デバッグプ
ログラム2が停止され、このときその他のコマンドを入
出力端末4から入力し、■の機能によりデバッグを行う
。その実行結果は入出力端末4により表示される。
プログラム再開処理43ではこのNOP命令(今はBR
K命令)分プログラムカウンタをすすめデバッグ実行装
置5の機能で説明した■の機能により被デバッグプログ
ラム2の実行再開をする。この一連の処理を繰返すこと
でデバッグを行うことができる。
K命令)分プログラムカウンタをすすめデバッグ実行装
置5の機能で説明した■の機能により被デバッグプログ
ラム2の実行再開をする。この一連の処理を繰返すこと
でデバッグを行うことができる。
以上説明したように本発明によれば、あらかじめコンパ
イラによって被デバッグプログラム中にNOP命令(実
行にさしさわりのない実行命令)を埋め込み、ブレーク
ポイントから被デバッグプログラムを再実行するときに
NOP命令分プログラムカウンタを先にすすめることに
より、ブレークポイントを消失させることなく、被デバ
ッグプログラムを再実行させ、何度も同一アドレスにブ
レークさせることができる効果がある。
イラによって被デバッグプログラム中にNOP命令(実
行にさしさわりのない実行命令)を埋め込み、ブレーク
ポイントから被デバッグプログラムを再実行するときに
NOP命令分プログラムカウンタを先にすすめることに
より、ブレークポイントを消失させることなく、被デバ
ッグプログラムを再実行させ、何度も同一アドレスにブ
レークさせることができる効果がある。
第1図は本発明実施例の構成を示すブロック図。
第2図は本発明実施例のデバッガの処理の流れを示すフ
ローチャート。 第3図は本発明実施例のコンパイラ本体の処理を示すフ
ローチャート。 第4図は本発明実施例のコンパイラ本体によって処理さ
れた被デバッグプログラムのイメージ図。 1・・・コンパイラ、2・・・被デバッグプログラム、
3・・・デバッガ、4・・・入出力端末、5・・・デバ
ッグ実行装置。
ローチャート。 第3図は本発明実施例のコンパイラ本体の処理を示すフ
ローチャート。 第4図は本発明実施例のコンパイラ本体によって処理さ
れた被デバッグプログラムのイメージ図。 1・・・コンパイラ、2・・・被デバッグプログラム、
3・・・デバッガ、4・・・入出力端末、5・・・デバ
ッグ実行装置。
Claims (1)
- 【特許請求の範囲】 1、デバッグコマンドを入力する入出力端末(4)と、 この入出力端末からのデバッグコマンドによりデバッグ
を実行するデバッガ(3)と、 前記入出力端末から入力されたデバッグコマンドを前記
デバッガに実行させるデバッグ実行装置(5)と、 この装置で実行する被デバッグプログラム(2)を生成
するコンパイラ(1)と を備えたソフトウェアブレーク方式において、前記コン
パイラに、実行文の先頭にある決められた実行にさしさ
わりのない命令を埋込む手段を備え、 前記デバッガに、 ブレークポイント設定時にブレークさせたい位置にある
前記実行にさしさわりのない命令をオペレーティングシ
ステムあるいはマイクロプロセッサの機能として前記被
デバッグプログラムの実行を中断する命令に書き込むブ
レークポイント設定手段(41)と、 前記被デバッグプログラムを実行しブレークポイントで
停止させる手段(42)と、 前記被デバッグプログラムの実行を再開するときにプロ
グラムカウンタを前記実行にさしさわりのない命令語長
分加算して停止させた位置以降のプログラム実行を再開
する手段(43)と を備えたことを特徴とするソフトウェアブレーク方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63190008A JPH0239332A (ja) | 1988-07-29 | 1988-07-29 | ソフトウェアブレーク方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63190008A JPH0239332A (ja) | 1988-07-29 | 1988-07-29 | ソフトウェアブレーク方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0239332A true JPH0239332A (ja) | 1990-02-08 |
Family
ID=16250843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63190008A Pending JPH0239332A (ja) | 1988-07-29 | 1988-07-29 | ソフトウェアブレーク方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0239332A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8434057B2 (en) | 2010-08-17 | 2013-04-30 | Oracle International Corporation | Optimized implementation of breakpoint in java debugger agent |
US8572579B2 (en) | 2010-08-19 | 2013-10-29 | Oracle International Corporation | Break on next called function or method in java debugger agent |
-
1988
- 1988-07-29 JP JP63190008A patent/JPH0239332A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8434057B2 (en) | 2010-08-17 | 2013-04-30 | Oracle International Corporation | Optimized implementation of breakpoint in java debugger agent |
US8572579B2 (en) | 2010-08-19 | 2013-10-29 | Oracle International Corporation | Break on next called function or method in java debugger agent |
US10229032B2 (en) | 2010-08-19 | 2019-03-12 | Oracle International Corporation | Break on next called function or method in java debugger agent |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0239332A (ja) | ソフトウェアブレーク方式 | |
JPH01274253A (ja) | ソフトウェアブレーク方式 | |
JP2007004516A (ja) | 組込みシステムのプログラムデバッグ方法 | |
JP2802128B2 (ja) | プログラム開発装置 | |
WO2024069730A1 (ja) | デバッグ装置及びデバッグ方法 | |
JPH02181236A (ja) | デバッグ装置 | |
JPH02135545A (ja) | デバッガの実行制御処理方式 | |
KR950005523B1 (ko) | 프로그램어블 로직 콘트롤러의 스텝 런 처리방법 | |
JPS59202548A (ja) | デバツグ装置 | |
JPH02284236A (ja) | プログラムデバッグ処理装置 | |
JP2006350676A (ja) | 組込みシステムのプログラムデバッグ方法 | |
JPS63178343A (ja) | 中断点の設定方式 | |
JPS63178341A (ja) | プログラムデバツグ方式 | |
JP2006079142A (ja) | マルチプロセッサ装置 | |
JP3019330B2 (ja) | コンパイル装置 | |
JPH1040131A (ja) | プログラムデバッグ方法 | |
JPH0340143A (ja) | パイプライン方式計算機におけるデバッグ方式 | |
JPH04333146A (ja) | デバッグにおけるプログラムの実行制御方式 | |
JPS63205740A (ja) | プログラム実行トレ−ス処理方式 | |
JPS61208126A (ja) | 被テスト・プログラム実行制御方式 | |
JPH0227447A (ja) | デバック方式 | |
JPH03242736A (ja) | 異常処理方式 | |
JPH0371345A (ja) | ソフトウェアデバッグ方法 | |
JPS62200440A (ja) | プログラムの命令実行頻度解析方式 | |
KR20020049789A (ko) | 파워피시 마이크로프로세서에서 실행되는 병행 프로그램디버깅을 위한 스태핑 제어방법 |