JP4208591B2 - ブレイクポイント設定装置、ブレイクポイント設定方法及びブレイクポイント設定プログラム - Google Patents

ブレイクポイント設定装置、ブレイクポイント設定方法及びブレイクポイント設定プログラム Download PDF

Info

Publication number
JP4208591B2
JP4208591B2 JP2003031702A JP2003031702A JP4208591B2 JP 4208591 B2 JP4208591 B2 JP 4208591B2 JP 2003031702 A JP2003031702 A JP 2003031702A JP 2003031702 A JP2003031702 A JP 2003031702A JP 4208591 B2 JP4208591 B2 JP 4208591B2
Authority
JP
Japan
Prior art keywords
line
breakpoint
line number
edited
program
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.)
Expired - Fee Related
Application number
JP2003031702A
Other languages
English (en)
Other versions
JP2003303115A (ja
Inventor
正樹 河合
琢二 川本
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2003031702A priority Critical patent/JP4208591B2/ja
Publication of JP2003303115A publication Critical patent/JP2003303115A/ja
Application granted granted Critical
Publication of JP4208591B2 publication Critical patent/JP4208591B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、プログラム開発に利用されるデバッガツールにおけるブレイクポイント設定機能の改良に関する。
【0002】
【従来の技術】
プログラムの不具合の発見や修正作業等を支援するソフトウェアとしてデバッガが利用されている。デバッガは、ソースコード上の適当な位置で実行を停止する機能や停止した時点での変数の内容を出力する機能等を持つ(例えば、特許文献1参照。)。この停止位置をブレイクポイントと呼ぶ。
【0003】
ブレイクポイントは、プログラマによってソースコード上の修正箇所等に設定されるもので、多くのデバッガはプログラマがエディタ上で簡単にブレイクポイントを設定することができるように工夫されている。例えば、ソースコードが表示されたエディタ上で、プログラマがブレイクポイントを設定しようとする位置にマウスポインタを合わせてクリックすると、デバッガがその位置にブレイクポイントを設定する等の方法である。ブレイクポイントが設定された位置は、マーカーや記号等の目印が付されてエディタに表示される。
【0004】
より具体的には、デバッガは、プログラマにより設定されたブレイクポイントの位置に割込み命令等を挿入し、その割り込み命令等の位置で制御を獲得し、変数の値やスタックの状態を確認することができるようにする。停止した処理を再開する場合には、デバッガがソースコードから割り込み命令等を除去して元の状態に戻し、プログラムの実行を再開する。
【0005】
【特許文献1】
特開平5−204708号公報
【0006】
【発明が解決しようとする課題】
このように従来のデバッガにおいては、プログラマがブレイクポイントを適宜設定する必要があり、これがプログラマの負担となっている。例えば修正箇所にブレイクポイントを設定する場合の手順としては、各箇所を修正する毎に逐一ブレイクポイントを設定するという手順や、各箇所をすべて修正した後でまとめてブレイクポイントを設定するといった手順があるが、前者は、修正とブレイクポイント設定とを交互に繰り返す作業が煩雑なものとなるし、後者は修正箇所を忘れずに憶えておく必要があり、いずれの手順にしてもプログラマの負担となる。
【0007】
そこで本発明は、プログラマの手を煩わすことなくブレイクポイントを設定するブレイクポイント設定装置を提供することを目的とする。
【0008】
【課題を解決するための手段】
上記問題を解決するため、本発明のブレイクポイント設定装置は、ソースプログラムに基づいて生成された実行形式プログラムをロードするロード手段と、前記ソースプログラムを構成する各要素と前記実行形式プログラムを構成する各箇所との対応関係を示す情報を記憶している記憶手段と、前記ソースプログラムに対して編集がなされた場合であって、その編集内容が特定のものであるとき、当該特定の編集が前記ソースプログラムを構成する各要素のいずれに対してなされたかを示す位置情報を取得して記憶する取得手段と、前記ロードされた実行形式プログラムにおける、前記取得手段により取得された位置情報が指す要素に対応する箇所にブレイクポイントを設定する設定手段とを備える。
【0009】
この構成によれば、ブレイクポイント設定装置は、オペレータの編集操作により編集された、ソースプログラム上の編集箇所を管理することによって編集箇所のソースプログラム上の位置を把握し、その位置にブレイクポイントを設定するので、編集箇所に関しては、オペレータによるブレイクポイントの設定指示及び設定位置の指定が不要となる。
【0010】
また、前記各要素は、前記ソースプログラムを構成する各行であり、前記記憶手段が記憶している前記情報は、当該各行それぞれを識別する行番号と前記各箇所との対応関係を示すものであり、前記取得手段は、前記ソースプログラムにおける特定の編集がなされた行の行番号を前記位置情報として取得して記憶するよう構成してもよい。
【0011】
また、前記特定の編集には、改行コードの削除が含まれ、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が改行コードの削除であるときには、当該編集箇所の行番号を記憶し、前記取得手段により既に取得され記憶されている行番号のうち当該編集に係る行の行番号より値が大きい行番号それぞれを値が1つ小さい行番号に書き替える更新手段を備えてもよい。
【0012】
また、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行頭部分への改行コードの追加であるときには、取得手段により既に取得され記憶されている行番号のうち当該編集箇所と同じ行番号及び当該編集箇所の行番号より値が大きい行番号それぞれを値が1つ大きい行番号に書き替える更新手段を備えてもよい。
【0013】
また、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行末部分への改行コードの追加であるときには、前記取得手段により既に取得され記憶されている行番号のうち当該編集箇所よりも値が大きい行番号を値が1つ大きい値に書き替える更新手段を備えてもよい。
【0014】
また、前記特定の編集には、行中への改行コードの追加が含まれ、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行中への改行コードの追加であるときには、前記取得手段により既に取得され記憶されている行番号のうち当該編集箇所の行番号よりも値が大きい行番号それぞれを値が1つ大きい値に書き替え、また当該編集箇所の行番号と当該編集箇所の行番号より値が1つ大きい行番号とを新たに記憶する更新手段を備えてもよい。
【0015】
また、前記取得手段は、前記ソースプログラムが編集された場合に、当該編集箇所の編集内容が改行コード以外の文字列に対する編集であるか否かを判定する判定手段と、前記判定手段により肯定的に判定された場合に、当該編集箇所の当該編集箇所の行番号を新たに記憶する更新手段とを備えてもよい。
また、前記取得手段は、さらに、前記ソースプログラムを構成する各制御ブロックの範囲が前記ソースプログラム上のどこからどこまでであるかを行番号により示す行範囲情報を記憶しており、前記設定手段は、前記行範囲情報が示す各制御ブロックの先頭の行番号に相当する実行形式プログラム上の対応箇所にブレイクポイントを設定してもよい。
【0016】
また、前記設定手段は、前記取得手段が記憶している行番号のうちで、前後で連続する2つの行番号のうちの後の行番号については、対応箇所のブレイクポイントを設定しないよう構成してもよい。
また、前記ブレイクポイント設定装置は、前記設定手段が設定する各ブレイクポイント毎にユーザにより入力される当該ブレイクポイントに対応する編集箇所に関する情報を対応させたバグ票を作成し、当該バグ票をユーザインターフェースを介してユーザに提示してもよい。
【0017】
また、前記ブレイクポイント設定装置は、前記バグ票の作成において、前記編集箇所がデバッガにより解読、実行された回数をデバッガより取得し、当該回数を前記編集箇所に関する情報に含めて提示してもよい。
また、取得手段は、前記特定の編集に対応する位置情報が既に取得され記憶されている場合には、当該位置情報を記憶することを抑止してもよい。
【0018】
また、前記取得手段は、さらに、前記ソースプログラムを構成する各制御ブロックの範囲が前記ソースプログラム上のどこからどこまでであるかを行番号により示す行範囲情報を記憶しており、前記設定手段は、前記各制御ブロック毎に、当該制御ブロック内にある前記特定の編集がなされた各行のうち先頭のものにブレイクポイントを設定し、その他のものにはブレイクポイントを設定しないよう抑止する。
【0019】
また、ブレイクポイント設定方法は、ソースプログラムに基づいて生成された実行形式プログラムをロードするロードステップと、前記ソースプログラムを構成する各要素と前記実行形式プログラムを構成する各箇所との対応関係を示す情報をメモリに記憶する記憶ステップと、前記ソースプログラムに対して編集がなされた場合であって、その編集内容が特定のものであるとき、当該特定の編集が前記ソースプログラムを構成する各要素のいずれに対してなされたかを示す位置情報を取得してメモリ記憶する取得ステップと、前記ロードされた実行形式プログラムにおける、前記取得ステップにより取得された位置情報が指す要素に対応する箇所にブレイクポイントを設定する設定ステップとを含む。
【0020】
また、ブレイクポイント設定プログラムは、プログラム、当該プログラムはコンピュータに、ソースプログラムに基づいて生成された実行形式プログラムをロードするロードステップと、前記ソースプログラムを構成する各要素と前記実行形式プログラムを構成する各箇所との対応関係を示す情報をメモリに記憶する記憶ステップと、前記ソースプログラムに対して編集がなされた場合であって、その編集内容が特定のものであるとき、当該特定の編集が前記ソースプログラムを構成する各要素のいずれに対してなされたかを示す位置情報を取得してメモリ記憶する取得ステップと、前記ロードされた実行形式プログラムにおける、前記取得ステップにより取得された位置情報が指す要素に対応する箇所にブレイクポイントを設定する設定ステップとを実行させてもよい。
【0021】
【発明の実施の形態】
<実施の形態1>
以下、本実施の形態のデバッグ装置について図面を用いて説明する。
図1は、実施の形態1のデバッグ装置のブロック図である。
同図においてデバッグ装置10は、外部からオペレータによるコマンドの入力を受け付けるコマンド入力部102、コマンドの解析を行うコマンド解析部103、メイク処理を行うメイク部11、デバッグ処理を行うデバッガ部12及びエディット処理を行うエディタ部13から構成される。
【0022】
メイク部11は、最新の実行ファイルを作成し保持する実行ファイル管理部104を備える。
デバッガ部12は、最新の実行ファイルを読み込むロード部105、ブレイクポイントを設定・解除するブレイクポイント設定・解除部106、実行ファイルの実行を制御する実行制御部107、ソースコードをディスプレイ等に表示するソースコード表示部108、ソースコードのブレイクポイント設定位置に目印等を付けてディスプレイ等に表示するブレイクポイント表示部109、ブレイクポイントで停止した際に所定の処理を行うbreak命令処理部110、設定したブレイクポイントに関する情報を保持するブレイクポイント一覧管理部111及び変更、追加、削除等の編集した箇所に自動的にブレイクポイントを設定する修正箇所設定部116から構成される。以下、変更、追加及び削除等、オペレータの操作によってソースコードが変更されることを編集又は修正と呼ぶこととする。
【0023】
エディタ部13は、オペレータからの編集操作に応じてソースコードの編集処理を行うソースコード編集部112、ソースコード編集処理に際して編集された箇所のファイル名及び行番号を、当該ファイルのソースコード上の位置として記憶しておく修正行一覧管理部115、読み出したソースコードをディスプレイ等に表示するソースコード表示部113及びソースコードファイルを保持するソースコードファイル管理部114から構成される。
【0024】
ここでエディタ部13とデバッガ部12が持つソースコード表示部108及びソースコード表示部113は共通のものにしてもよい。
コマンド入力部102は、オペレータから「編集ファイルオープンコマンド」、「編集ファイルセーブコマンド」、「編集コマンド」、「デバッグ処理開始コマンド」、「ブレイクポイント設定コマンド」、「ブレイクポイント解除コマンド」、「プログラム実行コマンド」及び「デバッグ処理終了コマンド」等のコマンドを受け付ける。なお、データの表示・設定に関するコマンド処理は、本発明において特に重要な部分ではないので説明を省略する。
【0025】
コマンド解析部103は、コマンド入力部102に受け付けられた上記コマンドを解析し、解析結果に応じて各構成部に指示することにより各コマンドの機能を実現する。
以下、まず最初に、従来の技術と同様のコマンドである「編集ファイルオープンコマンド」、「編集ファイルセーブコマンド」、「ブレイクポイント設定コマンド」、「ブレイクポイント解除コマンド」及び「プログラム実行コマンド」について説明する。これらは従来技術であるので、図面を省略して簡単に説明する。次に、本発明の特徴的なコマンドである「編集コマンド」、「デバッグ処理開始コマンド」及び「デバッグ処理終了コマンド」について図面を用いて説明する。
<編集ファイルオープンコマンド>
ステップ11:コマンド入力部102は、オペレータから編集対象のファイル名を指定した編集ファイルオープンコマンドを受け付ける。
【0026】
ステップ12:ソースコード編集部112は、ソースコードファイル管理部114に、指定されたファイル名のソースコードを読み出すよう要求する。
ステップ13:ソースコードファイル管理部114は、ソースコードファイルを記録している記録媒体から指定されたファイル名のソースコードを読み出し、ソースコード編集部112に渡す。
【0027】
ステップ14:ソースコード編集部112は、ソースコード表示部113に、読み出したソースコードを表示するよう要求する。
ステップ15:ソースコード表示部113は、表示を要求されたソースコードをディスプレイに表示する。
<編集ファイルセーブコマンド>
ステップ31:コマンド入力部102は、オペレータよりセーブ対象のファイル名を指定した編集ファイルセーブコマンドを受け付ける。
【0028】
ステップ32:ソースコード編集部112は、ソースコードファイル管理部114に、指定されたファイル名のソースコードをセーブするよう要求する。
ステップ33:ソースコードファイル管理部114は、セーブすることを要求されたソースコードを記録媒体に書き込む。
<ブレイクポイント設定コマンド>
ステップ51:コマンド入力部102は、オペレータからブレイクポイントを設定すべきファイル名及び行番号を指定したブレイクポイント設定コマンドを受け付ける。このブレイクポイント設定コマンドは、具体的には、ソースコードがディスプレイに表示された状態で、オペレータがソースコード上の任意の行にマウスポインタを合わせてクリックすると、コマンド入力部102が、そのクリックされた位置の行番号と表示中のソースコードのファイル名とを行番号及びファイル名の指定としてブレイクポイント設定コマンドを受け付けるというものである。
【0029】
ステップ52:ロード部105は、ブレイクポイント設定・解除部106にブレイクポイントを設定するよう要求する。
ステップ53:ブレイクポイント設定・解除部106は、ロードされた実行ファイル内のデバッグ情報から、ブレイクポイント設定行に対するアドレスを得る。
【0030】
ステップ54:ブレイクポイント設定・解除部106は、ブレイクポイント一覧管理部111に、ブレイクポイントを設定する箇所のアドレス及びそのアドレス内にある命令をブレイクポイント一覧に登録するよう要求する。
ここでブレイクポイント一覧は、設定するブレイクポイントに対応する実行ファイル内のアドレスを格納するアドレス欄と当該アドレス欄のアドレスにある命令を一時的に格納するための命令欄より構成され、アドレスと命令との組がアドレスの昇順に並んでいる。
【0031】
ステップ55:ブレイクポイント設定・解除部106は、ソースコード表示部108に、ブレイクポイントが設定されたファイルを表示するよう要求する。
ステップ56:ブレイクポイント一覧管理部111は、ブレイクポイント設定・解除部106より登録するよう要求されたアドレス及び命令をブレイクポイント一覧に登録し、これらのアドレスが指しているソースコード上の命令をbreak命令に置き換える。
【0032】
ステップ57:ソースコード表示部108は、表示を要求されたファイルをソースコードファイル管理部114から読み出し、表示する。そしてさらに、ブレイクポイント表示部109に指定したファイルのブレイクポイントを表示するよう要求する。
ステップ58:ブレイクポイント表示部109は、ブレイクポイント一覧管理部111から指定されたファイルのブレイクポイント一覧を読み出し、ブレイクポイントを表示する。
【0033】
図2は、ブレイクポイント表示部109によって表示されたブレイクポイントの一例を示す。
同図に示すように、修正前のソースコードにおける「j=500」を「j=10」に修正し、「printf(”i=%d”,i);」、「printf(”next_i=%d”,i+1);」及び「printf(”continue¥n”);」を追加した結果、修正後のソースコードにおける「j=10」の行と「printf(”i=%d”,i);」の行の左端にブレイクポイントを示す黒い丸印が表示される。
<ブレイクポイント解除コマンド>
ステップ61:コマンド入力部102は、解除すべきブレイクポイントのファイル名及び行番号を指定したブレイクポイント解除コマンドをオペレータより受け付ける。このブレイクポイント解除コマンドは、具体的には、ソースコードが表示された状態で、オペレータがソースコード上のブレイクポイントが設定された行にマウスポイントを合わせてクリックすると、コマンド入力部102がそのクリックされた行のブレイクポイントを解除する指示として受け付けるというものである。
【0034】
ステップ62:ロード部105は、ブレイクポイント設定・解除部106にブレイクポイントを解除するよう要求する。
ステップ63:ブレイクポイント設定・解除部106は、ロードされた実行ファイル内のデバッグ情報から、ブレイクポイント解除行に対するアドレスを得て、ブレイクポイント一覧管理部111にブレイクポイントを解除する箇所のアドレス及びそのアドレス内にある命令をブレイクポイント一覧から削除するよう要求し、ソースコード表示部108に解除したファイルを表示するよう要求する。
【0035】
ステップ64:ブレイクポイント一覧管理部111は、元の命令をリストアし、アドレス及び命令をブレイクポイント一覧から削除する。
ステップ65:ソースコード表示部108は、指定されたファイルをソースコードファイル管理部114の記録媒体から読み出し、表示する。続いて、ブレイクポイント表示部109に、指定したファイルのブレイクポイントを表示するよう要求する。
【0036】
ステップ66:ブレイクポイント表示部109は、ブレイクポイント一覧管理部111から指定されたファイルのブレイクポイント一覧を読み出し、ブレイクポイントを表示する。
<プログラム実行コマンド>
ステップ71:コマンド入力部102は、デバッグ装置10で実行ファイルを実行するに際してオペレータよりプログラム実行コマンドを受け付ける。
【0037】
ステップ72:ロード部105は、実行制御部107に実行ファイルを実行するよう要求する。
ステップ73:実行制御部107は、ロードされた実行ファイル内の命令を1命令ずつ解釈実行し、break命令があれば命令の実行を一時停止してbreak命令処理部110にbreak命令を処理するよう要求する。続いてソースコード表示部108に、実行が停止した場所のソースコードを表示するよう要求する。
【0038】
ステップ74:break命令処理部110は、停止したアドレスにあった本来の命令をブレイクポイント一覧管理部111から取り出し、取り出した命令を次のプログラムの実行で最初に実行するように実行制御部107に渡す。
ステップ75:ソースコード表示部108は、指定されたファイルをソースコードファイル管理部114から読み出して表示し、続いて、ブレイクポイント表示部109は指定されたファイルのブレイクポイント一覧を読み出して、ソースコード上のブレイクポイントの位置にブレイクポイントであることを示す目印等を表示する。
【0039】
次に、本発明の特徴的なコマンドについて説明する前に修正行一覧について説明しておく。
図3は、修正行一覧の一例を示す。
修正行一覧とは、オペレータがソースコードに対して行った編集操作の箇所の行番号を昇順に並べたテーブルである。このテーブルに記録された行番号は、ブレイクポイントを設定する行番号となる。修正行一覧は、行番号の昇順に並んでおり、同じ行番号が2重に登録されることはなく、各ソースコードファイル毎に保持される。
【0040】
では続いて「編集コマンド」、「デバッグ処理開始コマンド」及び「デバッグ処理終了コマンド」について説明する。
<編集コマンド>
図4は、コマンド入力部102が編集コマンドを受け付けた場合における処理手順を示すフローチャートである。このコマンドは、編集ファイルオープンコマンドによりファイルが読み出されて表示されている状態において有効である。
【0041】
ステップS301:ソースコード編集部112は、デバッグ処理が終了しているか否かを判定する。
ステップS302:ステップS301の判定の結果、デバッグ処理が終了していない場合には、ソースコード編集部112は、「デバッグ処理終了コマンド」をコマンド入力部102に送り、その結果、デバッグ処理が終了する。
【0042】
ステップS303:編集コマンドによりなされた編集の種類が、改行コードの削除、改行コードの追加、その他の編集処理のいずれであるかを判定する。改行コードの削除は、改行コードの削除のみの編集又は改行コードの削除を含む編集であり、改行コードの追加は、改行コードの追加のみの編集又は改行コードの追加を含む編集であり、その他の編集処理は、改行コードの削除及び追加をいずれもともなわない編集である。
【0043】
ステップS304:編集の種類がその他の編集処理である場合には、修正行一覧に当該その他の編集処理がなされた行の行番号を登録する。
ステップS305:編集の種類が改行コードの削除である場合には、修正行一覧に当該改行削除の行番号を登録し、修正行一覧における当該改行削除行の行番号より大きな行番号から1を引く。
【0044】
ステップS306:編集の種類が改行コードの追加であって、その追加の位置が行頭の場合には、修正行一覧における当該改行追加行の行番号以上の行番号に1を足す。
ステップS307:編集の種類が改行コードの追加であって、その追加の位置が行末の場合には、修正行一覧における改行追加行の行番号より大きな番号に1を足す。
【0045】
ステップS308:編集の種類が改行コードの追加であって、その追加の位置が行中、すなわち行頭でも行末でもない位置に改行コードが追加された場合には、修正行一覧における当該改行追加行の行番号より大きな行番号に1を足し、修正行一覧に改行追加行の行番号と改行追加行の行番号+1を登録する。
ステップS309:ソースコード編集部112は、編集ファイルオープンコマンドにより読み出されて表示されているソースコードに対して編集処理を行い、ソースコード表示部108に表示を更新するよう要求する。
【0046】
ステップS310:ソースコード表示部108は、編集内容を反映して表示を更新する。
このようにしてソースコード編集部112は、編集された箇所の行番号を修正行一覧に登録することによって、編集された箇所についてのソースコード上の位置を管理する。
【0047】
なお、上記ステップS304、S305及びS308の行番号の登録において、新たに登録しようとする行番号と同じものが、既に修正行一覧に登録されていえる場合には、登録を行わないことにより二重登録の状態にならないようにする。より具体的には、登録しようとする行番号が修正行一覧内に既に登録されているか否かを判定し、未だ登録されていなければ登録を行い、既に登録されていれば登録を行わない。
【0048】
本実施の形態においては、編集処理を常に監視し、編集処理がある度に修正行一覧を更新するよう構成しているが、これに限られず、編集処理前の元のソースコードを保持しておき、編集処理が終わった後に編集後のソースコードと元のソースコードとを比較することにより修正行一覧を作成するよう構成してもよい。
<デバッグ処理開始コマンド>
図5は、コマンド入力部102がデバッグ処理開始コマンドを受け付けた場合における処理手順を示すフローチャートである。なお、図5では省略しているが、ステップS400以降の処理に先立って、以下のステップS41からステップS43の処理が行われる。
【0049】
ステップS41:ロード部105は、編集処理を行っている最中のソースコードがある場合、そのソースコードに対して編集ファイルセーブコマンドを送る。続いて、実行ファイル管理部104に最新の実行ファイルを読み出すよう要求する。
ステップS42:実行ファイル管理部104は、ソースコードファイル管理部114のソースコードの日時をみて、実行ファイルより新しいソースコードファイルがあるか否かを判定する。
【0050】
ステップS43:ステップS42の判定の結果、新しいソースコードファイルがある場合には、そのソースコードファイルについてコンパイル処理を行い、最新の実行ファイルを作成し、最新の実行ファイルをロード部105に渡す。
なお、ステップS42の判定の結果、新しいソースコードファイルがない場合には、実行ファイル管理部104は、保持しているうちで最新の実行ファイルをロード部105に渡す。
【0051】
ステップS400:ロード部105は最新の実行ファイルをロードし、修正箇所設定部116に、修正行一覧が示す行にブレイクポイントを設定するよう要求する。
ステップS401:修正箇所設定部116は、修正行一覧管理部115に、まだ読み込んでいない修正行一覧があるか否か判定する。
【0052】
ステップS402:判定の結果、まだ読み込んでいない修正行一覧があればそれを読み込む。
ステップS403:修正箇所設定部116は、読み込んだ修正行一覧に修正行番号が1つ以上あるか否かを判定する。
ステップS404:判定の結果、修正行番号が1つ以上ある場合には、読み込んだ修正行一覧の先頭にある修正行番号を取り出してそれを対象行とし、対象行に対してブレイクポイント設定コマンドを送り、対象行にブレイクポイントを設定する。
【0053】
ステップS405:続いて、修正箇所設定部116は、修正行一覧の先頭から順に見て、まだ取り出していない修正行番号があるか否かを判定する。
ステップS406:判定の結果、取り出していない修正行番号があれば、対象行の次の修正行番号を取り出して対象行とする。
ステップS407:対象行に対してブレイクポイント設定コマンドを送り、対象行にブレイクポイントを設定する。
【0054】
ステップS408:全ての修正行についてブレイクポイントが設定し終わったら修正行一覧管理部115から修正行一覧を破棄する。
このように修正箇所設定部116は、修正行一覧に記載された修正行を指定したブレイクポイント設定コマンドを送ることによって、ブレイクポイント設定・解除部106にブレイクポイントを設定させる。
【0055】
なお、修正行一覧を破棄することとしているが、デバッグ処理終了コマンドの処理で、ブレイクポイント一覧から修正行一覧を作成する直前に、不要な部分を削除することで、修正行一覧を破棄することの代わりとしてもよい。
<デバッグ処理終了コマンド>
図6は、コマンド入力部102がデバッグ処理終了コマンドを受け付けた場合における処理手順を示すフローチャートである。
【0056】
ステップS501:ロード部105は、修正行一覧管理部115に、ブレイクポイント一覧管理部111が管理するブレイクポイント一覧から修正行一覧を作成するよう要求する。次に、修正行一覧管理部115は、ブレイクポイント一覧管理部111のブレイクポイント一覧のアドレスを、ロードされた実行ファイルのデバッグ情報を用いてファイル名及び行番号に変換し、各ファイルごとに修正行一覧を作成する。
【0057】
ステップS502:ロード部105は、ブレイクポイント一覧管理部111にブレイクポイント一覧を破棄するよう要求を出し、ブレイクポイント一覧管理部111は、ブレイクポイント一覧を破棄する。
ステップS503:ロード部105は、実行ファイルをアンロードする。
以上に示す構成により、プログラマは自ら修正箇所にブレイクポイントを設定する必要がなくなり、ブレイクポイント設定時の煩わしさから解放され、デバッグの効率が向上する。またプログラマが設定する場合、プログラマの設定し忘れ等によりすべての修正箇所にもれなく設定することができない場合があるが、デバッグ装置10が設定する場合であれば設定もれがなく、すべての修正箇所について動作等をテストすることができる。
<実施の形態2>
図7は、実施の形態2のデバッグ装置のブロック図である。
【0058】
同図においてデバッグ装置20は、実施の形態1における図1のデバッグ装置10の構成に加えて、分割・最適化部617を備える。以下、実施の形態1と同じ点については説明を省略し、異なる点を中心に説明する。
図9は、コマンド入力部102がデバッグ処理開始コマンドを受け付けた場合における処理手順を示すフローチャートである。
【0059】
同図においてステップS800より前の処理については図示していないが、図5にて説明したステップS41からステップS43までと同じであり、ステップS800からステップS804及びステップS812の処理についても図5のステップS400からステップS404及びステップS408と同じであるので説明を省略し、以下、ステップS805以降から説明する。
【0060】
ステップS805:分割・最適化部617は、制御移行先行一覧作成処理を行う。この処理の詳細については後に図10で説明する。
ここで制御移行先行一覧について説明する。
図8は、実施の形態2のデバッグ装置20が作成し、使用する制御移行先行一覧の一例を示す。
【0061】
制御移行先行とは、ソースコード中の各行の実行順序において、真上の行以外の他の行の実行に続いて実行される可能性がある行を指す。例えば、分岐命令の分岐先の命令を含む行は制御移行先行である。ソースコードの先頭から行順において、ある制御移行先行から次の制御移行先行の前行までのひとかたまりを制御ブロックと呼ぶ。すなわち、制御移行先行一覧は、ソースコードを構成する各制御ブロックの先頭行がソースコード上の何行目にあるかを記憶するものであり、これにより各制御ブロックの範囲を示すものである。
【0062】
図8の制御移行先行一覧は、行番号を格納する行番号の欄と行番号の行が制御移行先行であるか否かを示す制御移行先行フラグとから構成される。制御移行先行フラグは、行番号の行が制御移行先行である場合には1が、そうでない場合には0が設定される。ソースコードの第1行目は、常に、制御移行先行とする。この制御移行先行一覧は、各ソースファイルごとに作成される。
【0063】
ステップS806:続いて、修正箇所設定部116は、修正行一覧の先頭から順に見て、まだ取り出していない修正行番号があるか否かを判定する。
ステップS807:判定の結果、取り出していない修正行番号があれば、対象行の次の修正行番号を取り出して次対象行とする。
ステップS808:制御移行先行一覧において、次対象行の制御移行先行フラグが1であるか否かを判定する。
【0064】
ステップS809:ステップS808の判定において、1ではないと判定した場合、分割・最適化部617は、次対象行の行番号と対象行に1を加えた行番号とが一致するか否かを判定する。すなわちこの判定においては、対象行と次対象行とが連続しているか否かを判定している。
ステップS810:ステップS808の判定において次対象行の制御移行先行フラグが1である場合、及び、ステップS809において次対象行の行番号と対象行に1を加えた行番号とが一致しない場合、分割・最適化部617は、ブレイクポイント設定コマンドを送り、次対象行にブレイクポイントを設定する。
【0065】
ステップS811:次対象行を対象行にしてステップS806の処理に戻る。
このように、分割・最適化部617は、修正行が制御移行先行である場合、及び、修正行が1つ前の修正行の行番号に続く行番号を持たないものである場合には、その修正行にブレイクポイントを設定し、修正行が制御移行先行でなく、かつ、修正行が1つ前の修正行の行番号に続く行番号を持つものである場合には、その修正行にはブレイクポイントを設定しない。
【0066】
なお、分割・最適化部617は、次のようにより簡単な構成にしてもよい。すなわち、分割・最適化部617は、修正行一覧に記載されている修正行のうち、制御移行先行一覧に制御移行先行として記載されている行、すなわち制御移行先行フラグが1の行についてブレイクポイントを設定するよう構成してもよい。また、分割・最適化部617は、修正行一覧に記載されている修正行のうち、当該修正行の真上の行も修正行である場合には、ブレイクポイントを設定しないよう構成してもよい。
【0067】
また、分割・最適化部617は、制御移行先行一覧が示す各制御ブロックについて、制御ブロック中の修正行のうち先頭の修正行のみにブレイクポイントを設定するよう構成してもよい。
さらに、分割・最適化部617は、各制御ブロックについて、制御ブロック中に修正行が存在する場合には、その制御ブロックの先頭行にブレイクポイントを設定し、先頭行以外の修正行のブレイクポイント設定を省略するよう構成してもよい。またこの構成に加えて、制御ブロック中で複数の修正行が連続する場合には、そのうちの先頭の修正行にのみブレイクポイントを設定するよう構成してもよい。
【0068】
図10は、ステップS805の制御移行先行一覧作成処理の詳細な処理手順を示すフローチャートである。
ステップS901:分割・最適化部617は、読み込んだ修正行一覧のソースコードを読み込む。
ステップS902:後の単語解析処理のために各種変数の初期化処理を行う。すなわち現在行に0、制御移行先行フラグに1、次文先頭フラグに0、中フラグに0、カッコカウントに−1をセットする。
【0069】
ステップS903:現在行+1行目の行があるか否かを判定する。
ステップS904:ステップS903の判定の結果、現在行+1行目の行がある場合には、その行を抽出し、現在行とする。
ステップS905:現在行を区切りで分割し、単語に分ける。
ここで区切りとは、ソースコードに含まれる所定の文字列を指す。この所定の文字列は、スペース、コントロール文字、//・・・行末、/*・・・*/、“・・・”、(、)、{、}、;及び:である。この所定の文字列において「・・・」の部分は任意の文字列である。区切りのうち、(、)、{、}、;、:を特に単語区切りという。区切りで分断された1文字以上の文字列及び単語区切りをあわせて単語という。プログラムとプログラムを単語に区切った例を図19及び図20に示す。
【0070】
ステップS906:現在行の頭から順に単語を検索する。
ステップS907:単語が検索されたか否かを判定する。
ステップS908:ステップS907の判定の結果、単語が検索された場合には、単語解析処理を行う。この処理の詳細については後に図11で説明する。
ステップS909:現在行から次の単語を検索してステップS907に戻る。
【0071】
ステップS910:ステップS907の判定の結果、単語が検索されなかった場合には、制御移行先行一覧の現在行の行番号に対応する制御移行先行フラグ欄に制御移行先行フラグ値を代入した後、制御移行先行フラグに0をセットし、ステップS903に戻る。
図11(a)は、ステップS908の単語解析処理の詳細な処理手順を示すフローチャートである。この単語解析処理においては、単語を分類1から6及び「その他」に分類し、分類に応じて異なる処理を行う。図11(b)に分類1から6の内容を示す。
【0072】
ステップS1001:カッコカウントが−1より大きいか否かを判定する。
ステップS1008:ステップS1001の判定の結果、カッコカウントが−1より大きくなく、かつ単語が分類1に属する場合、すなわち単語が「:」又は「}」である場合には、次文先頭フラグに1をセットする。
ステップS1009:ステップS1001の判定の結果、カッコカウントが−1より大きくなく、かつ単語が分類2に属する場合には、カッコカウントに0をセットし、中フラグに1をセットする。
【0073】
ステップS1010:ステップS1001の判定の結果、カッコカウントが−1より大きくなく、かつ単語が分類3に属する場合には、次文先頭フラグに1をセットし、中フラグに1をセットする。
ステップS1011:ステップS1001の判定の結果、カッコカウントが−1より大きくなく、かつ単語が分類5に属する場合には、中フラグに0をセットする。
【0074】
ステップS1012:ステップS1001の判定の結果、カッコカウントが−1より大きくなく、かつ単語が分類4に属する場合には、次文先頭フラグが1であるか否かを判定する。
ステップS1013:ステップS1012の判定の結果、次文先頭フラグが1である場合には、制御移行先行フラグに1をセットし、次文先頭フラグに0をセットする。
【0075】
ステップS1014:続いて、中フラグが1であるか否かを判定する。
ステップS1015:ステップS1014の判定の結果、中フラグが1である場合には、次文先頭フラグに1をセットし、中フラグに0をセットする。
なお、ステップS1001の判定の結果、カッコカウントが−1より大きくなく、かつ単語がいずれの分類にも属さない場合には何もしない。
【0076】
ステップS1002:ステップS1001の判定の結果、カッコカウントが−1より大きい場合には、単語が分類6に属するか否かを判定する。
ステップS1003:ステップS1002の判定の結果、単語が分類6に属する場合には、さらに、その単語が「(」であるか否かを判定する。
ステップS1004:ステップS1003の判定の結果、単語が「(」である場合には、カッコカウントの値を1増やす。
【0077】
ステップS1005:ステップS1003の判定の結果、単語が「(」でない場合には、カッコカウントの値を1減らす。
ステップS1006:カッコカウントが0であるか否かを判定する。
ステップS1007:ステップS1006の判定の結果、カッコカウントが0である場合には、カッコカウントに−1をセットする。
【0078】
なお、ここで分類1〜6は、ソースコードがC言語で記述されている場合における分類であるが、Java(登録商標)で記述されている場合は分類1の「:」及び「}」に、さらに「catch」、「finally」を分類するキーワードとして加えればよい。
図10及び図11のフローチャートでは、ソースコードの先頭から単語を順に解析し、次の1、2の方法で見つかった行を制御移行先行としている。
1.ソースコードの先頭から単語を順に見ていき、分類1「:、}」か分類3「else」の単語を見つけたら、その後初めて現れる分類4「;」の単語のある行を制御移行先行とする。
2.ソースコードの先頭から単語を順に見ていき、中フラグが1である場合に、分類4「;」の単語を見つけたら、その後初めて現れる分類4「;」の単語のある行を制御移行先行とする。
【0079】
ここで中フラグが1である場合ということは、ソースコードの先頭から単語を順に見ていき、分類2「if、for、while」及び分類3「else」を見つけた場合のことを指す。ただし、分類2「if、for、while」の条件式中の単語は無視する。
上記1、2の方法では、if、for、while、elseの後でないのに{又は}がある場合、}の次に最初に見つかった分類4「;」の行を制御移行先行とみなすため、制御ブロックが余分にできることとなるが、簡単なアルゴリズムで制御移行先行を見つけることができる利点があり、制御移行先行であるにもかかわらず制御移行先行とみなされないという不具合がないことを保証している。
<実施の形態3>
図12は、実施の形態3のデバッグ装置のブロック図である。
【0080】
同図においてデバッグ装置30は、実施の形態2における図7のデバッグ装置20の構成に加えて、バグ票管理部1118を備える。以下、実施の形態2と同じ点については説明を省略し、異なる点を中心に説明する。
図13は、バグ票一覧の一例を示す。
バグ票一覧は、複数のバグ票からなり、各バグ票は、バグ票を一意に示す番号であるバグ票番号とコメントと通過回数とから構成される。
【0081】
コメントは1以上の各ブレイクポイント設定行について、そのブレイクポイント設定行があるソースコードのファイル名と設定行番号とオペレータにより入力されたコメントとから構成される。各行のコメントはブレイクポイントが設定される毎に、修正内容等についてオペレータにより入力されるものである。なお、その他に、各行のコメントに、修正日や、時間等の情報が自動的に記述されることとしてもよい。
【0082】
通過回数は、コメント欄の各ブレイクポイント設定行に対応し、ブレイクポイント設定行にある命令文が実行された回数を示す。
図14は、コマンド入力部102がデバッグ処理終了コマンドを受け付けた場合における処理手順を示すフローチャートである。
ステップS1301:ロード部105は、修正行一覧管理部115に、ブレイクポイント一覧管理部111が管理するブレイクポイント一覧から修正行一覧を作成するよう要求する。次に、修正行一覧管理部115は、ブレイクポイント一覧管理部111のブレイクポイント一覧のアドレスをロードされた実行ファイルのデバッグ情報を用いてファイル名及び行番号に変換し、各ファイルごとに修正行一覧を作成する。
【0083】
ステップS1302:ロード部105は、ブレイクポイント一覧管理部111にブレイクポイント一覧を破棄するよう要求を出し、ブレイクポイント一覧管理部111はブレイクポイント一覧を破棄する。
ステップS1303:バグ票一覧のブレイクポイント設定アドレスに0を代入する。
【0084】
ステップS1304:ロード部105は、実行ファイルをアンロードする。
図15は、コマンド入力部102がデバッグ処理開始コマンドを受け付けた場合における処理手順を示すフローチャートである。
同図においてステップS801より前の処理、ステップS801で「Yes」の場合におけるそれ以降の処理、及びステップS812については、図9のフローチャートと同じであるので、部分的に図示を省略している。これらの部分は図9と同じ処理手順であるので説明を省略し、以下、図9とは異なる部分であるステップS1401及びステップS1402について説明する。
【0085】
ステップS1401:バグ票一覧から最後のバグ票を除き、ブレイクポイント設定アドレスが0になっているバグ票があるか否かを判定する。
ステップS1402:判定の結果、ブレイクポイント設定アドレスが0になっているバグ票がある場合には、図18に示すバグ票のクローズ処理を行う。
図16は、コマンド入力部102がブレイクポイント設定コマンドを受け付けた場合における処理手順を示すフローチャートである。
【0086】
ステップS1501:コマンド入力部102がブレイクポイント設定コマンドを受け付けると、ロード部105は、ブレイクポイント設定・解除部106にブレイクポイントを設定するよう要求し、ブレイクポイント設定・解除部106は、ロードされた実行ファイル内のデバッグ情報から、ブレイクポイント設定行に対するアドレスを得る。
【0087】
ステップS1502:ブレイクポイント設定アドレスを登録しようとしているバグ票が新規であるか、あるいはバグ票一覧に登録済みであるかを判定する。
ステップS1503:ステップS1502の判定の結果、バグ票が新規である場合には、バグ票一覧の一番最後にあるバグ票にブレイクポイント設定アドレスを書き込み、コメントの最初にブレイクポイント設定アドレスに対応したファイル名及び行番号を記述する。
【0088】
ステップS1504:オペレータより入力されるコメントをファイル名及び行番号に続けて記述する。
ステップS1505:バグ票一覧の最後にバグ票番号のみを記述したバグ票を作成し登録する。バグ票番号には連続番号を割当てる。
ステップS1506:ステップS1502の判定の結果、バグ票がバグ票一覧に登録済みのものである場合、バグ票一覧より目的のバグ票を検索する。
【0089】
ステップS1507:バグ票にブレイクポイント設定アドレスを書き込み、コメントの先頭部分にブレイクポイント設定アドレスに対応するファイル名及び行番号を記述する。
ステップS1508:オペレータより入力されたコメントを記述する。
ステップS1509:ブレイクポイント設定アドレスを登録すべきバグ票が他にあるか否かを判定する。
【0090】
ステップS1510:ブレイクポイント一覧管理部111は、アドレス及び命令をブレイクポイント一覧に登録し、アドレス内の命令をbreak命令に置き換える。
ステップS1511:ソースコード表示部108は、表示を要求されたファイルをソースコードファイル管理部114から読み出して表示する。そしてさらに、ブレイクポイント表示部109に指定したファイルのブレイクポイントを表示するよう要求する。続いて、ブレイクポイント表示部109は、ブレイクポイント一覧管理部111から指定されたファイルのブレイクポイント情報を読み出し、ブレイクポイントを表示する。
【0091】
図17は、コマンド入力部102がブレイクポイント解除コマンドを受け付けた場合における処理手順を示すフローチャートである。
ステップS1601:ロード部105は、ブレイクポイント設定・解除部106にブレイクポイントを解除するよう要求する。この要求を受け付けて、ブレイクポイント設定・解除部106は、ロードされた実行ファイル内のデバッグ情報から、ブレイクポイント解除行に対するアドレスを得る。そしてバグ票管理部1118に解除するブレイクポイントをバグ票から削除するよう要求を出す。続いて、ブレイクポイント一覧管理部111に、ブレイクポイントを解除する箇所のアドレス及びそのアドレス内にある命令をブレイクポイント一覧から削除するよう要求し、ソースコード表示部108に解除したファイルを表示するよう要求する。
【0092】
ステップS1602:バグ票管理部1118は、バグ票一覧の最初のバグ票を対象とする。
ステップS1603:続いて、バグ票管理部1118は、対象のバグ票のブレイクポイント設定アドレス一覧から順にブレイクポイント解除アドレスを検索する。
【0093】
ステップS1604:次に、ステップS1603の検索の結果、バグ票管理部1118は、ブレイクポイント解除アドレスを持つバグ票を見つけられたか否かを判定する。
ステップS1605:ステップS1604の判定の結果、ブレイクポイント解除アドレスを持つバグ票を見つけられた場合には、バグ票管理部1118は、そのバグ票を対象とする。
【0094】
ステップS1606:バグ票管理部1118は、対象のバグ票のブレイクポイント設定アドレス一覧からブレイクポイント解除アドレスを削除する。
ステップS1607:続いて、バグ票管理部1118は、対象のバグ票のブレイクポイント設定行一覧に何もないか否かを判定する。
ステップS1608:ステップS1607の判定の結果、あると判定した場合には、さらに、バグ票一覧より対象のバグ票の次にバグ票があるか否かを判定する。
【0095】
ステップS1609:ステップS1608の判定の結果、バグ票があると判定した場合には、次のバグ票を対象とする。
ステップS1610:ステップS1607の判定の結果、対象のバグ票のブレイクポイント設定行一覧に何もないと判定した場合には、図18に示すバグ票クローズ処理を行う。
【0096】
ステップS1611:ブレイクポイント一覧管理部111は、元の命令をリストアした後、アドレス及び命令をブレイクポイント一覧から削除する。
ステップS1612:ソースコード表示部108は、指定されたファイルをソースコードファイル管理部114から読み出し表示する。続いてブレイクポイント表示部109に、指定したファイルのブレイクポイントを表示するよう要求する。ブレイクポイント表示部109は、ブレイクポイント一覧管理部111から指定されたファイルのブレイクポイント情報を読み出し、ブレイクポイントを表示する。
【0097】
図18は、バグ票クローズ処理の詳細な処理手順を示すフローチャートである。
ステップS1701:バグ票管理部1118は、テスト結果を付加し、バグ票をクローズする。
ステップS1702:続いてバグ票管理部1118は、バグ票一覧からクローズするバグ票を削除する。
【0098】
以上の構成により、デバッグ装置30は、ブレイクポイント毎にバグ票を管理するので、プログラマは効率的に修正内容のコメントを記述することができる。
【0099】
【発明の効果】
本発明のブレイクポイント設定装置は、ソースプログラムに基づいて生成された実行形式プログラムをロードするロード手段と、前記ソースプログラムを構成する各要素と前記実行形式プログラムを構成する各箇所との対応関係を示す情報を記憶している記憶手段と、前記ソースプログラムに対して編集がなされた場合であって、その編集内容が特定のものであるとき、当該特定の編集が前記ソースプログラムを構成する各要素のいずれに対してなされたかを示す位置情報を取得して記憶する取得手段と、前記ロードされた実行形式プログラムにおける、前記取得手段により取得された位置情報が指す要素に対応する箇所にブレイクポイントを設定する設定手段とを備える。
【0100】
この構成によれば、ブレイクポイント設定装置は、オペレータの編集操作により編集された、ソースプログラム上の編集箇所を管理することによって編集箇所のソースプログラム上の位置を把握し、その位置にブレイクポイントを設定するので、編集箇所に関しては、オペレータによるブレイクポイントの設定指示及び設定位置の指定が不要となる。
【0101】
また、前記各要素は、前記ソースプログラムを構成する各行であり、前記記憶手段が記憶している前記情報は、当該各行それぞれを識別する行番号と前記各箇所との対応関係を示すものであり、前記取得手段は、前記ソースプログラムにおける特定の編集がなされた行の行番号を前記位置情報として取得して記憶するよう構成してもよい。
【0102】
また、前記特定の編集には、改行コードの削除が含まれ、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が改行コードの削除であるときには、当該編集箇所の行番号を記憶し、前記取得手段により既に取得され記憶されている行番号のうち当該編集に係る行の行番号より値が大きい行番号それぞれを値が1つ小さい行番号に書き替える更新手段を備えてもよい。
【0103】
また、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行頭部分への改行コードの追加であるときには、取得手段により既に取得され記憶されている行番号のうち当該編集箇所と同じ行番号及び当該編集箇所の行番号より値が大きい行番号それぞれを値が1つ大きい行番号に書き替える更新手段を備えてもよい。
【0104】
また、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行末部分への改行コードの追加であるときには、前記取得手段により既に取得され記憶されている行番号のうち当該編集箇所よりも値が大きい行番号を値が1つ大きい値に書き替える更新手段を備えてもよい。
【0105】
また、前記特定の編集には、行中への改行コードの追加が含まれ、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行中への改行コードの追加であるときには、前記取得手段により既に取得され記憶されている行番号のうち当該編集箇所の行番号よりも値が大きい行番号それぞれを値が1つ大きい値に書き替え、また当該編集箇所の行番号と当該編集箇所の行番号より値が1つ大きい行番号とを新たに記憶する更新手段を備えてもよい。
【0106】
また、前記取得手段は、前記ソースプログラムが編集された場合に、当該編集箇所の編集内容が改行コード以外の文字列に対する編集であるか否かを判定する判定手段と、前記判定手段により肯定的に判定された場合に、当該編集箇所の当該編集箇所の行番号を新たに記憶する更新手段とを備えてもよい。
この構成によれば、ブレイクポイント設定装置は、編集が改行コードの削除又は追加を含むか否か、改行コードの追加を含む場合には追加位置が行頭、行中、行末のいずれであるかに応じて移動するソースプログラム上の編集位置を把握することができるので、常に正確な位置に、オペレータによる設定指示及び設定位置の指定なしに、ブレイクポイントを設定することができる。
【0107】
また、前記取得手段は、さらに、前記ソースプログラムを構成する各制御ブロックの範囲が前記ソースプログラム上のどこからどこまでであるかを行番号により示す行範囲情報を記憶しており、前記設定手段は、前記行範囲情報が示す各制御ブロックの先頭の行番号に相当する実行形式プログラム上の対応箇所にブレイクポイントを設定してもよい。
【0108】
この構成によれば制御ブロック単位に、制御ブロック中の修正行のうちの先頭のものについてブレイクポイントを設定することができる。
また、前記設定手段は、前記取得手段が記憶している行番号のうちで、前後で連続する2つの行番号のうちの後の行番号については、対応箇所のブレイクポイントを設定しないよう構成してもよい。
【0109】
この構成によればソースプログラム上の連続する2行両方に編集位置が存在する場合には、後行の編集位置へのブレイクポイント設定を省略して前行の編集位置にのみブレイクポイントを設定することができる。
また、前記ブレイクポイント設定装置は、前記設定手段が設定する各ブレイクポイント毎にユーザにより入力される当該ブレイクポイントに対応する編集箇所に関する情報を対応させたバグ票を作成し、当該バグ票をユーザインターフェースを介してユーザに提示してもよい。
【0110】
この構成によれば、ブレイクポイント設定装置は、オペレータの編集操作により編集された、ソースプログラム上の編集箇所を管理することによって編集箇所のソースプログラム上の位置を把握し、その位置にブレイクポイントを設定するとともにバグ票を作成することができるので、オペレータのバグ票作成の負担が軽減される。
【図面の簡単な説明】
【図1】実施の形態1のデバッグ装置のブロック図である。
【図2】ブレイクポイント表示部109によって表示されたブレイクポイントの一例を示す。
【図3】修正行一覧の一例をす。
【図4】コマンド入力部102が編集コマンドを受け付けた場合における処理手順を示すフローチャートである。
【図5】コマンド入力部102がデバッグ処理開始コマンドを受け付けた場合における処理手順を示すフローチャートである。
【図6】コマンド入力部102がデバッグ処理終了コマンドを受け付けた場合における処理手順を示すフローチャートである。
【図7】実施の形態2のデバッグ装置のブロック図である。
【図8】実施の形態2のデバッグ装置20が作成し、使用する制御移行先行一覧の一例を示す。
【図9】コマンド入力部102がデバッグ処理開始コマンドを受け付けた場合における処理手順を示すフローチャートである。
【図10】ステップS805の制御移行先行一覧作成処理の詳細な処理手順を示すフローチャートである。
【図11】(a)は、ステップS908の単語解析処理の詳細な処理手順を示すフローチャートである。(b)は、分類1から6の内容を示す。
【図12】実施の形態3のデバッグ装置のブロック図である。
【図13】バグ票一覧の一例を示す。
【図14】コマンド入力部102がデバッグ処理終了コマンドを受け付けた場合における処理手順を示すフローチャートである。
【図15】コマンド入力部102がデバッグ処理開始コマンドを受け付けた場合における処理手順を示すフローチャートである。
【図16】コマンド入力部102がブレイクポイント設定コマンドを受け付けた場合における処理手順を示すフローチャートである。
【図17】コマンド入力部102がブレイクポイント解除コマンドを受け付けた場合における処理手順を示すフローチャートである。
【図18】バグ票クローズ処理の詳細な処理手順を示すフローチャートである。
【図19】プログラムの一例を示す
【図20】図19のプログラムを単語に区切った例を示す。
【符号の説明】
10 デバッグ装置
11 メイク部
12 デバッガ部
13 エディタ部
20 デバッグ装置
30 デバッグ装置
102 コマンド入力部
103 コマンド解析部
104 実行ファイル管理部
105 ロード部
106 解除部
107 実行制御部
108 ソースコード表示部
109 ブレイクポイント表示部
110 命令処理部
111 ブレイクポイント一覧管理部
112 ソースコード編集部
113 ソースコード表示部
114 ソースコードファイル管理部
115 修正行一覧管理部
116 修正箇所設定部
617 最適化部
1118 バグ票管理部

Claims (13)

  1. ソースプログラムに基づいて生成された実行形式プログラムをロードするロード手段と、前記ソースプログラムを構成する各要素と前記実行形式プログラムを構成する各箇所との対応関係を示す情報を記憶している記憶手段と、前記ソースプログラムに対して編集がなされた場合であって、その編集内容が特定のものであるとき、当該特定の編集が前記ソースプログラムを構成する各要素のいずれに対してなされたかを示す位置情報を取得して記憶する取得手段と、前記ロードされた実行形式プログラムにおける、前記取得手段により取得された位置情報が指す要素に対応する箇所にブレイクポイントを設定する設定手段とを備えることを特徴とするブレイクポイント設定装置。
  2. 前記各要素は、前記ソースプログラムを構成する各行であり、前記記憶手段が記憶している前記情報は、当該各行それぞれを識別する行番号と前記各箇所との対応関係を示すものであり、前記取得手段は、前記ソースプログラムにおける特定の編集がなされた行の行番号を前記位置情報として取得して記憶することを特徴とする請求項1記載のブレイクポイント設定装置。
  3. 前記特定の編集には、改行コードの削除が含まれ、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が改行コードの削除であるときには、当該編集箇所の行番号を記憶し、前記取得手段により既に取得され記憶されている行番号のうち当該編集に係る行の行番号より値が大きい行番号それぞれを値が1つ小さい行番号に書き替える更新手段を備えることを特徴とする請求項2記載のブレイクポイント設定装置。
  4. 前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行頭部分への改行コードの追加であるときには、取得手段により既に取得され記憶されている行番号のうち当該編集箇所と同じ行番号及び当該編集箇所の行番号より値が大きい行番号それぞれを値が1つ大きい行番号に書き替える更新手段を備えることを特徴とする請求項2記載のブレイクポイント設定装置。
  5. 前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行末部分への改行コードの追加であるときには、前記取得手段により既に取得され記憶されている行番号のうち当該編集箇所よりも値が大きい行番号を値が1つ大きい値に書き替える更新手段を備えることを特徴とする請求項2記載のブレイクポイント設定装置。
  6. 前記特定の編集には、行中への改行コードの追加が含まれ、前記ブレイクポイント設定装置は、さらに、前記ソースプログラムが編集された場合において、当該編集箇所の編集内容が行中への改行コードの追加であるときには、前記取得手段により既に取得され記憶されている行番号のうち当該編集箇所の行番号よりも値が大きい行番号それぞれを値が1つ大きい値に書き替え、また当該編集箇所の行番号と当該編集箇所の行番号より値が1つ大きい行番号とを新たに記憶する更新手段を備えることを特徴とする請求項2記載のブレイクポイント設定装置。
  7. 前記取得手段は、前記ソースプログラムが編集された場合に、当該編集箇所の編集内容が改行コード以外の文字列に対する編集であるか否かを判定する判定手段と、前記判定手段により肯定的に判定された場合に、当該編集箇所の当該編集箇所の行番号を新たに記憶する更新手段とを備えることを特徴とする請求項2記載のブレイクポイント設定装置。
  8. 前記取得手段は、さらに、前記ソースプログラムを構成する各制御ブロックの範囲が前記ソースプログラム上のどこからどこまでであるかを行番号により示す行範囲情報を記憶しており、前記設定手段は、前記行範囲情報が示す各制御ブロックの先頭の行番号に相当する実行形式プログラム上の対応箇所にブレイクポイントを設定することを特徴とする請求項2記載のブレイクポイント設定装置。
  9. 前記設定手段は、前記取得手段が記憶している行番号のうちで、行番号の値が連続する2つの行番号のうちの後の行番号については、対応箇所のブレイクポイントを設定しないことを特徴とする請求項2記載のブレイクポイント設定装置。
  10. 前記ブレイクポイント設定装置は、前記設定手段が設定する各ブレイクポイント毎にユーザにより入力される当該ブレイクポイントに対応する編集箇所に関する情報を対応させたバグ票を作成し、当該バグ票をユーザインターフェースを介してユーザに提示することを特徴とする請求項1記載のブレイクポイント設定装置。
  11. 取得手段は、前記特定の編集に対応する位置情報が既に取得され記憶されている場合には、当該位置情報を記憶することを抑止することを特徴とする請求項1記載のブレイクポイント設定装置。
  12. 前記取得手段は、さらに、前記ソースプログラムを構成する各制御ブロックの範囲が前記ソースプログラム上のどこからどこまでであるかを行番号により示す行範囲情報を記憶しており、前記設定手段は、前記各制御ブロック毎に、当該制御ブロック内にある前記特定の編集がなされた各行のうち先頭のものにブレイクポイントを設定し、その他のものにはブレイクポイントを設定しないよう抑止することを特徴とする請求項2記載のブレイクポイント設定装置。
  13. コンピュータに実行させるプログラムであって、当該プログラムはコンピュータに、ソースプログラムに基づいて生成された実行形式プログラムをロードするロードステップと、前記ソースプログラムを構成する各要素と前記実行形式プログラムを構成する各箇所との対応関係を示す情報をメモリに記憶する記憶ステップと、前記ソースプログラムに対して編集がなされた場合であって、その編集内容が特定のものであるとき、当該特定の編集が前記ソースプログラムを構成する各要素のいずれに対してなされたかを示す位置情報を取得してメモリ記憶する取得ステップと、前記ロードされた実行形式プログラムにおける、前記取得ステップにより取得された位置情報が指す要素に対応する箇所にブレイクポイントを設定する設定ステップと、を実行させることを特徴とするブレイクポイント設定プログラム。
JP2003031702A 2002-02-07 2003-02-07 ブレイクポイント設定装置、ブレイクポイント設定方法及びブレイクポイント設定プログラム Expired - Fee Related JP4208591B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003031702A JP4208591B2 (ja) 2002-02-07 2003-02-07 ブレイクポイント設定装置、ブレイクポイント設定方法及びブレイクポイント設定プログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002-31372 2002-02-07
JP2002031372 2002-02-07
JP2003031702A JP4208591B2 (ja) 2002-02-07 2003-02-07 ブレイクポイント設定装置、ブレイクポイント設定方法及びブレイクポイント設定プログラム

Publications (2)

Publication Number Publication Date
JP2003303115A JP2003303115A (ja) 2003-10-24
JP4208591B2 true JP4208591B2 (ja) 2009-01-14

Family

ID=29404952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003031702A Expired - Fee Related JP4208591B2 (ja) 2002-02-07 2003-02-07 ブレイクポイント設定装置、ブレイクポイント設定方法及びブレイクポイント設定プログラム

Country Status (1)

Country Link
JP (1) JP4208591B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254888A1 (en) * 2008-04-07 2009-10-08 International Business Machines Corporation Debug tours for software debugging
CN112988532B (zh) * 2021-01-27 2022-07-29 腾讯科技(深圳)有限公司 埋点事件的上报方法、装置、服务器及存储介质

Also Published As

Publication number Publication date
JP2003303115A (ja) 2003-10-24

Similar Documents

Publication Publication Date Title
US7134115B2 (en) Apparatus, method, and program for breakpoint setting
US6922827B2 (en) Iterative software development environment with prioritized build rules
US7844949B2 (en) Computer method and apparatus for software configuration management repository interoperation
CN111602114A (zh) 用于在集成开发环境内提供即时通信信道的系统和方法
JPH07200358A (ja) ソフトウェア・アプリケーションの自動テスト方法
US7770148B2 (en) Methods and apparatus enabling diagram customization retention
US8473903B2 (en) Code edit apparatus and recording medium
KR100637787B1 (ko) 파일 정보의 기록 처리 방법 및 프로그램
JP4208591B2 (ja) ブレイクポイント設定装置、ブレイクポイント設定方法及びブレイクポイント設定プログラム
US9032372B2 (en) Runtime environment and method for non-invasive monitoring of software applications
JP2000112722A (ja) 版数管理システム、管理方法及び記憶媒体
JPH10214204A (ja) デバッガー
JP2010039796A (ja) ロギング情報採取装置,ロギング情報採取方法およびロギング情報採取プログラム
JP3741371B2 (ja) イベント制御装置およびイベント制御方法
JP4107470B2 (ja) ソフトウェア障害解析方法及び装置
JP2022068566A (ja) テストカバレッジ更新プログラム、テストカバレッジ更新方法および情報処理装置
JP3970373B2 (ja) プログラム解析装置、プログラム解析方法及びソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH06222915A (ja) インストール方式
JPH04134535A (ja) マルチタスクプログラムの例外情報採取機構
JP2812289B2 (ja) デバッグ装置およびそのデバッグ方法
JPH11203140A (ja) エージェントシステムのモニタ装置、モニタ方法、モニタ用プログラムを記録した記録媒体、デバッグ装置、デバッグ方法及びデバッグ用プログラムを記録した記録媒体
JP2020134987A (ja) プログラマブルロジックコントローラ用プログラム作成支援装置
JP2011107883A (ja) デバッグ装置
JP2002189613A (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH0358225A (ja) ファイル編集方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080715

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080827

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080924

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081021

R150 Certificate of patent or registration of utility model

Ref document number: 4208591

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121031

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131031

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees