JPH04169941A - デバッグ情報出力処理方式 - Google Patents
デバッグ情報出力処理方式Info
- Publication number
- JPH04169941A JPH04169941A JP2297412A JP29741290A JPH04169941A JP H04169941 A JPH04169941 A JP H04169941A JP 2297412 A JP2297412 A JP 2297412A JP 29741290 A JP29741290 A JP 29741290A JP H04169941 A JPH04169941 A JP H04169941A
- Authority
- JP
- Japan
- Prior art keywords
- information
- processing
- source program
- program
- debugging
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 44
- 230000006870 function Effects 0.000 claims abstract description 53
- 238000003672 processing method Methods 0.000 claims description 9
- 238000000034 method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 5
- 238000012805 post-processing Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011888 foil Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明のデバッグ情報出力処理方式に関し、特にソース
レベルのデバッグを行う場合の言語処理プログラムのデ
バッグ情報出力処理方式に関する。
レベルのデバッグを行う場合の言語処理プログラムのデ
バッグ情報出力処理方式に関する。
従来の言語処理プログラムのデバッグ情報出力処理方式
には二通りの方法がある。一つは、行番号情報のように
、ソースプログラムと直接結び付いた情報を出力する方
法であり、もう一つは、例えばスタックが使用可能であ
るか否かを調べるルーチンを呼び出す呼び出し命令のよ
うに、関数の先頭で機械語命令として生成する情報を出
力する方法である。
には二通りの方法がある。一つは、行番号情報のように
、ソースプログラムと直接結び付いた情報を出力する方
法であり、もう一つは、例えばスタックが使用可能であ
るか否かを調べるルーチンを呼び出す呼び出し命令のよ
うに、関数の先頭で機械語命令として生成する情報を出
力する方法である。
前者の、ソースレベルデバッグのための情報である行番
号情報のように、機械語とは異なる情報は、ソースレベ
ルデバッグを行うときにデバッガが使用するもので1行
ごとのステップ実行を行う場合などに使用される。
号情報のように、機械語とは異なる情報は、ソースレベ
ルデバッグを行うときにデバッガが使用するもので1行
ごとのステップ実行を行う場合などに使用される。
後者の、関数の先頭でスタックが使用可能であるかを調
べるルーチンを呼び出す呼び出し命令のように、機械語
命令として生成する情報は、実行時のエラーが発生する
可能性がある場合やエラーの発生した場合等に、特殊な
処理ルーチンを呼び出したり、メツセージの出力や、エ
ラー処理等を行う場合に使用する。
べるルーチンを呼び出す呼び出し命令のように、機械語
命令として生成する情報は、実行時のエラーが発生する
可能性がある場合やエラーの発生した場合等に、特殊な
処理ルーチンを呼び出したり、メツセージの出力や、エ
ラー処理等を行う場合に使用する。
以下に、従来のソースレベルのデバッグのうち、割り込
み関数に対するデバッグの方法を説明する。
み関数に対するデバッグの方法を説明する。
割り込み関数は、ソースプログラムの流れに関係なく、
ハードウェア割り込みや、ソフトウェア割り込みが発生
した場合に呼び出される関係である。このため、通常の
関数のデバッグ方法のひとつであるステップ実行では、
タイミングが異なるためデバッグすることができないの
で、以下の手順でデバッグを行う。
ハードウェア割り込みや、ソフトウェア割り込みが発生
した場合に呼び出される関係である。このため、通常の
関数のデバッグ方法のひとつであるステップ実行では、
タイミングが異なるためデバッグすることができないの
で、以下の手順でデバッグを行う。
(1)すべての割り込み関数のエントリ部に、ブレーク
ポイントを設定する。
ポイントを設定する。
(2)割り込みが発生し、割り込み関数の先頭で実行が
中断する。
中断する。
(3)割り込み関数のステップ実行を行い、デバッグを
行つ。
行つ。
現在ては、テパイスの機能強化により割り込み要因の数
が増加しているため、それにあわせて割り込み関数の数
も増加している。また、すべての割り込み関数のエント
リ部へのブレークポイント設定のためのインサーキット
エミュレータとの通信量の増加のため、テバッカ使用者
へのコマンドの応対時間か増加しており、コマンドの応
対時間の高速化の要求かある。
が増加しているため、それにあわせて割り込み関数の数
も増加している。また、すべての割り込み関数のエント
リ部へのブレークポイント設定のためのインサーキット
エミュレータとの通信量の増加のため、テバッカ使用者
へのコマンドの応対時間か増加しており、コマンドの応
対時間の高速化の要求かある。
上述した従来の言語処理プログラムのデバッグ情報出力
処理方式においては、割り込み関数のデバッグを行う場
合、すべての割り込み関数のエントリ部へのブレークポ
イント設定を行わなければならない。また、割り込み関
数はプログラムの動作の流れが連続的でないため、ソー
スプログラムからは分岐先は予想できず、プログラムの
動作の流れを追うことはできない。また分岐した先でプ
ログラムが終了してしまうことも考えられるのて、デバ
ッグを最初からやり直さなければならなくなる。
処理方式においては、割り込み関数のデバッグを行う場
合、すべての割り込み関数のエントリ部へのブレークポ
イント設定を行わなければならない。また、割り込み関
数はプログラムの動作の流れが連続的でないため、ソー
スプログラムからは分岐先は予想できず、プログラムの
動作の流れを追うことはできない。また分岐した先でプ
ログラムが終了してしまうことも考えられるのて、デバ
ッグを最初からやり直さなければならなくなる。
従って、従来の言語処理プログラムのデバッグ情報出力
処理方式には、デバッグの操作上、余分の時間を要し、
実行時の応対時間が多大になるという欠点がある。
処理方式には、デバッグの操作上、余分の時間を要し、
実行時の応対時間が多大になるという欠点がある。
本発明のデバッグ情報出力処理方式は、言語処理プログ
ラムのデバッグ情報出力処理方式において、所定のファ
イルよりソースプログラム情報を入力する手段と、入力
される前記ソースプログラム情報を解析してオブジェク
ト情報を生成する手段と、デバッグ情報を含んだ前記オ
ブジェクト情報を所定のオブジェクトファイルに出力す
る手段と、前記オブジェクト情報に含まれるソースプロ
グラム中の割込み関数に対するオブジェクト情報の前に
、所定のデバッグ処理部に対する呼出し命令を付加る手
段と、を備えて構成される。
ラムのデバッグ情報出力処理方式において、所定のファ
イルよりソースプログラム情報を入力する手段と、入力
される前記ソースプログラム情報を解析してオブジェク
ト情報を生成する手段と、デバッグ情報を含んだ前記オ
ブジェクト情報を所定のオブジェクトファイルに出力す
る手段と、前記オブジェクト情報に含まれるソースプロ
グラム中の割込み関数に対するオブジェクト情報の前に
、所定のデバッグ処理部に対する呼出し命令を付加る手
段と、を備えて構成される。
次に、本発明について図面を参照して説明する。
第1図は、本発明の一実施例におけるC言語処理プログ
ラムのオブジェクト出力部のフローチャートであり、第
2図は本実施例のシステム構成図である。
ラムのオブジェクト出力部のフローチャートであり、第
2図は本実施例のシステム構成図である。
第2図において、C−言語処理プログラム202は、入
力ファイル201からソースプログラム情報を入力する
入力部204、入力したソースブロクラム情報分解析す
る構文解析部205、および構文解析されたソースプロ
グラムに対しオブジェクトプログラムを生成して出力す
るオブジェクト出力部206から構成されている。
力ファイル201からソースプログラム情報を入力する
入力部204、入力したソースブロクラム情報分解析す
る構文解析部205、および構文解析されたソースプロ
グラムに対しオブジェクトプログラムを生成して出力す
るオブジェクト出力部206から構成されている。
第3図は前記入力フォイル201の内容である。左側の
数字は説明のために付けたソースプログラム中の行番号
である。
数字は説明のために付けたソースプログラム中の行番号
である。
第4図は、本発明の一実施例のオブジェクトファイル2
03の内容(オブジェクトプログラム)を示す情報説明
図である。
03の内容(オブジェクトプログラム)を示す情報説明
図である。
第2図により全体の処理の流れを説明する。入力部20
4が入力ファイル201からプログラム情報を入力する
。次に構文解析部205でソースプログラムを解析する
。最後に、オブジェクト出力部206でオブジェクトプ
ログラムを生成し出力ファイル203に出力する。
4が入力ファイル201からプログラム情報を入力する
。次に構文解析部205でソースプログラムを解析する
。最後に、オブジェクト出力部206でオブジェクトプ
ログラムを生成し出力ファイル203に出力する。
ここで第1図のフローチャートの説明を行う。
ただしC言語処理プログラムのオブジェクト出力の対象
となる関数と、文に着目して説明を行う。
となる関数と、文に着目して説明を行う。
(1)ソースプログラムの解析処理により、入力ファイ
ル201の1行を解析する(ステップ101)。
ル201の1行を解析する(ステップ101)。
(2)(1)の処理の結果、オブジェクト出力の対象で
あるか否かを判定する。ソースプログラムの1行が宣言
やブロックの開始であれば、オブジェクト出力の対象で
はないのでステップ101の処理に戻り、次の′行の解
析を行う(ステップ1゜2)。
あるか否かを判定する。ソースプログラムの1行が宣言
やブロックの開始であれば、オブジェクト出力の対象で
はないのでステップ101の処理に戻り、次の′行の解
析を行う(ステップ1゜2)。
(3)ステップ103においては、ソースプログラムの
終了であるが否がを判定し、ソースプログラムが終了し
ていれば、処理は終了処理(ステップ104)へ移り終
了する。ソースプログラムが終了していなければ処理は
次のステップ105の処理へ移る。
終了であるが否がを判定し、ソースプログラムが終了し
ていれば、処理は終了処理(ステップ104)へ移り終
了する。ソースプログラムが終了していなければ処理は
次のステップ105の処理へ移る。
(4)ステップ105においては、ステップ101の処
理の結果、割り込み関数の始まりであれば、処理は割り
込み開数処理部の呼み出し命令出力処理(ステップ10
6)へ移る。割り込み関数処理部の呼び出し命令出力処
理(ステップ106)では、割り込み関数処理部の呼び
出し命令を出力する。
理の結果、割り込み関数の始まりであれば、処理は割り
込み開数処理部の呼み出し命令出力処理(ステップ10
6)へ移る。割り込み関数処理部の呼び出し命令出力処
理(ステップ106)では、割り込み関数処理部の呼び
出し命令を出力する。
(5)割り込み開数処理部の呼び出し命令を出力したあ
と、処理は関数内の文に対する機械語命令出力処理(ス
テップ107)へ移る。関数内の文に対する機械語命令
出力処理(ステップ1o7)では、関数内の文に対する
機械語命令を出力する。
と、処理は関数内の文に対する機械語命令出力処理(ス
テップ107)へ移る。関数内の文に対する機械語命令
出力処理(ステップ1o7)では、関数内の文に対する
機械語命令を出力する。
次に、第1図のフローチャートに従い、第2図のC言語
処理プログラム202が第3図に示すソースプログラム
と入力し、第4図に示すオブジェクトプログラムを出力
する処理を説明する。第4図のオブジェクトプログラム
は、簡略のため全体の構成のみを記述しである。また、
ソースプログラム情報の入力からオブジェクトプログラ
ム出力の全体の処理は、前記全体を処理の流れの説明ど
うりであるので省略して説明を行う。
処理プログラム202が第3図に示すソースプログラム
と入力し、第4図に示すオブジェクトプログラムを出力
する処理を説明する。第4図のオブジェクトプログラム
は、簡略のため全体の構成のみを記述しである。また、
ソースプログラム情報の入力からオブジェクトプログラ
ム出力の全体の処理は、前記全体を処理の流れの説明ど
うりであるので省略して説明を行う。
(1)ソースプログラムの解析処理(ステップ101)
により、第3図の1行目を解析する。オブジェクト出力
判定処理(ステップ102)により、この行に対してオ
ブジェクトは生成されないので、処理はソースプログラ
ムの解析処理(ステップ101)に移り、2行目の解析
を行う。
により、第3図の1行目を解析する。オブジェクト出力
判定処理(ステップ102)により、この行に対してオ
ブジェクトは生成されないので、処理はソースプログラ
ムの解析処理(ステップ101)に移り、2行目の解析
を行う。
(2)2行目はオブジェクト出力判定処理(ステップ1
02〉により、オブジェクト出力対象と判定され、さら
に終了判定処理(ステップ103)により、ソースプロ
グラムの終了でないと判定されるので、処理は割込み関
数判定処理(ステップ105)へ移る。
02〉により、オブジェクト出力対象と判定され、さら
に終了判定処理(ステップ103)により、ソースプロ
グラムの終了でないと判定されるので、処理は割込み関
数判定処理(ステップ105)へ移る。
(3)関数判定処理(ステップ105)で、2行目は割
り込み関数ではないと判定されるため、関数内の文に対
する機械語出力処理(ステップ1゜7)に処理が移る。
り込み関数ではないと判定されるため、関数内の文に対
する機械語出力処理(ステップ1゜7)に処理が移る。
(4)関数内の文に対する機械語出力処理(ステップ1
07)により、第3図の4〜6行目に対する機械語を出
力する。これが第4図に関数前処理部402、関数内の
文に対する機械語命令403、関数後処理部404およ
びリターン命令405である。
07)により、第3図の4〜6行目に対する機械語を出
力する。これが第4図に関数前処理部402、関数内の
文に対する機械語命令403、関数後処理部404およ
びリターン命令405である。
(5〉処理はソースプログラムの解析処理(ステップ1
01)に戻り、第3図の7行目を解析する。オブジェク
ト出力判定処理(ステップ′1゜2)により、この行に
対してオブジェクトは生成されないので、処理はソース
プログラムの解析処理(ステップ101〉に移り8行目
の解析を行う。
01)に戻り、第3図の7行目を解析する。オブジェク
ト出力判定処理(ステップ′1゜2)により、この行に
対してオブジェクトは生成されないので、処理はソース
プログラムの解析処理(ステップ101〉に移り8行目
の解析を行う。
(6)8行目はオブジェクト出方判定処理(ステップ1
02)によりオブジェクト出力対象と判定され、さらに
終了判定処理(ステップ103)により、ソースプログ
ラムの終了ではないと判定されるので、処理関係判定処
理(ステップ1o5)へ移る。
02)によりオブジェクト出力対象と判定され、さらに
終了判定処理(ステップ103)により、ソースプログ
ラムの終了ではないと判定されるので、処理関係判定処
理(ステップ1o5)へ移る。
(7)関数判定処理(ステップ1o5)で8行目は割り
込み関数の始まりと判定されるため、割り込み関数処理
部の呼び出し命令出力処理(ステップ106)により、
割り込み関数処理部の呼び出し命令を出力する。これが
第4図の割り込み関係処理部の呼び出し命令401であ
る。
込み関数の始まりと判定されるため、割り込み関数処理
部の呼び出し命令出力処理(ステップ106)により、
割り込み関数処理部の呼び出し命令を出力する。これが
第4図の割り込み関係処理部の呼び出し命令401であ
る。
(8)次に関数内の文に対する機械語圧力処理(ステッ
プ107)により、文に対する機械語を出力する。これ
が第4図の関数前処理部402゜関数内の文に対する機
械語命令403.関数後処理部404およびリターン命
令405である。
プ107)により、文に対する機械語を出力する。これ
が第4図の関数前処理部402゜関数内の文に対する機
械語命令403.関数後処理部404およびリターン命
令405である。
このようにして、第3図のソースプログラムに対して、
第4図のオブジェクトが生成される6次に、出力された
第4図のオブジェクトプログラムによって、ソースレベ
ルの割り込み関数のデバッグ方法を説明する。
第4図のオブジェクトが生成される6次に、出力された
第4図のオブジェクトプログラムによって、ソースレベ
ルの割り込み関数のデバッグ方法を説明する。
ソースデバッガでは、割り込み関数処理部にブレークポ
イントを設定して、被デバツグプログラムを実行する、
ハードウェア割り込みまたはソフトウェア割り込みによ
り割り込みが発生し、割り込み関数処理部で被デバツグ
プログラムの実行が移ったとき、ソースデバッガにより
、被デバツグプロクラムの動作は停止する。これにより
被デバツグプログラムのデバッグ中に、割り込み関数が
呼び出された場合でも、呼び出された関数の先頭で被デ
バッグプログラムの実行は停止するので、被デバツグプ
ログラムの動作の流れを追えなくなってしまったり、呼
び出された関数中で、被デバツグプログラムの実行が終
了してしまい、デバッグを最初からやり直さなければな
らなくなるとういことがなくなる。
イントを設定して、被デバツグプログラムを実行する、
ハードウェア割り込みまたはソフトウェア割り込みによ
り割り込みが発生し、割り込み関数処理部で被デバツグ
プログラムの実行が移ったとき、ソースデバッガにより
、被デバツグプロクラムの動作は停止する。これにより
被デバツグプログラムのデバッグ中に、割り込み関数が
呼び出された場合でも、呼び出された関数の先頭で被デ
バッグプログラムの実行は停止するので、被デバツグプ
ログラムの動作の流れを追えなくなってしまったり、呼
び出された関数中で、被デバツグプログラムの実行が終
了してしまい、デバッグを最初からやり直さなければな
らなくなるとういことがなくなる。
以上説明したように、本発明は、ソースプログラム中の
各文に対するオブジェクト情報の前に、ソースレベルの
デバッグのため割り込み関数処理部に対する呼び出し命
令を生成することにより、すべての割り込み関数のエン
トリ部に、ブレークポイントを設定して実行するといっ
た手間もかがらなくなるばかりでなく、すべての割り込
み関数のエントリ部に、ブレークポイントを設定して実
行した場合に比べて、高速に実行が行なうことができる
という効果がある。
各文に対するオブジェクト情報の前に、ソースレベルの
デバッグのため割り込み関数処理部に対する呼び出し命
令を生成することにより、すべての割り込み関数のエン
トリ部に、ブレークポイントを設定して実行するといっ
た手間もかがらなくなるばかりでなく、すべての割り込
み関数のエントリ部に、ブレークポイントを設定して実
行した場合に比べて、高速に実行が行なうことができる
という効果がある。
第1図は本発明の一実施例におけるC言語プログラムの
オブジェクト出力処理のフローチャート、第2図は前記
実行例のシステム構成図、第3図は入力ファイルの内容
を示す図、第4図は前記実施例におけるオブジェクトフ
ァイルの内容を示す情報説明図である。 図において、101・・・ソースプログラムの解析、1
02・・・オブジェクト出力判定処理、103・・・終
了判定処理、104・・・終了処理、105・・・関係
判定処理、1’06・・・割込み関数処理部の読出し命
令出力処理、107・・・文に対する機械語命令出力処
理、201・・・入力ファイル、202・・・C言語処
理、203・・・オブジェクトファイル、204・・・
入力部、205・・・構文解析部、206・・・オブジ
ェクト出力部、401山割込み関数処理部の読出し命令
、402・・・関数前処理部、403・・・関数内の文
に対する機械語命令、404・・・関数後処理部、40
5・・・リターン命令。
オブジェクト出力処理のフローチャート、第2図は前記
実行例のシステム構成図、第3図は入力ファイルの内容
を示す図、第4図は前記実施例におけるオブジェクトフ
ァイルの内容を示す情報説明図である。 図において、101・・・ソースプログラムの解析、1
02・・・オブジェクト出力判定処理、103・・・終
了判定処理、104・・・終了処理、105・・・関係
判定処理、1’06・・・割込み関数処理部の読出し命
令出力処理、107・・・文に対する機械語命令出力処
理、201・・・入力ファイル、202・・・C言語処
理、203・・・オブジェクトファイル、204・・・
入力部、205・・・構文解析部、206・・・オブジ
ェクト出力部、401山割込み関数処理部の読出し命令
、402・・・関数前処理部、403・・・関数内の文
に対する機械語命令、404・・・関数後処理部、40
5・・・リターン命令。
Claims (1)
- 言語処理プログラムのデバッグ情報出力処理方式におい
て、所定のファイルよりソースプログラム情報を入力す
る手段と、入力される前記ソースプログラム情報を解析
してオブジェクト情報を生成する手段と、デバッグ情報
を含んだ前記オブジェクト情報を所定のオブジェクトフ
ァイルに出力する手段と、前記オブジェクト情報に含ま
れるソースプログラム中に割込み関数に対するオブジェ
クト情報の前に、所定のデバッグ処理部に対する呼出し
命令を付加する手段と、を備えることを特徴とするデバ
ッグ情報出力処理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2297412A JPH04169941A (ja) | 1990-11-02 | 1990-11-02 | デバッグ情報出力処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2297412A JPH04169941A (ja) | 1990-11-02 | 1990-11-02 | デバッグ情報出力処理方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04169941A true JPH04169941A (ja) | 1992-06-17 |
Family
ID=17846173
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2297412A Pending JPH04169941A (ja) | 1990-11-02 | 1990-11-02 | デバッグ情報出力処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04169941A (ja) |
-
1990
- 1990-11-02 JP JP2297412A patent/JPH04169941A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7761855B2 (en) | Computer program product and system for altering execution flow of a computer program | |
| JP2004164554A (ja) | プログラム実行監視装置および方法 | |
| JPH0748182B2 (ja) | プログラム・エラー検出方法 | |
| KR900018809A (ko) | 클래스 독립 파서 및 다수의 클래스 종속 파서를 갖고 있는 모듈러 컴파일러 | |
| JPS62113244A (ja) | プログラムテスト装置 | |
| JP3196675B2 (ja) | 言語処理方式 | |
| JPH04169941A (ja) | デバッグ情報出力処理方式 | |
| JP4055197B2 (ja) | プログラムに含まれる手続きの解析装置 | |
| JPH0353334A (ja) | 言語処理プログラムのデバッグ情報出力処理方式 | |
| JPS626260B2 (ja) | ||
| JP2659366B2 (ja) | デバッグ方法及びその装置 | |
| JPH0695910A (ja) | 異常処理のための対話型デバッグ制御方式 | |
| JPS59202548A (ja) | デバツグ装置 | |
| KR0175469B1 (ko) | 칠프로그램 변수의 가시성 제어방법 | |
| JPH0353335A (ja) | コンパイラの処理方式 | |
| JPS6365542A (ja) | デバツグ方式 | |
| JPH0239332A (ja) | ソフトウェアブレーク方式 | |
| JPH0358232A (ja) | プリプロセッサ呼び出し方式 | |
| JPH01274253A (ja) | ソフトウェアブレーク方式 | |
| JPH03290739A (ja) | プログラムの動的解析方式 | |
| JPH03175539A (ja) | デバッグ用マイクロプロセッサ | |
| JPH0588878A (ja) | Lisp命令実行方式 | |
| JP2001147832A (ja) | ソースプログラム対応表示方式 | |
| Parker | Annotation-based program stepping | |
| JPH04333146A (ja) | デバッグにおけるプログラムの実行制御方式 |