JP2001034503A - ブレークポイント設定方法及び障害解析装置 - Google Patents

ブレークポイント設定方法及び障害解析装置

Info

Publication number
JP2001034503A
JP2001034503A JP11205979A JP20597999A JP2001034503A JP 2001034503 A JP2001034503 A JP 2001034503A JP 11205979 A JP11205979 A JP 11205979A JP 20597999 A JP20597999 A JP 20597999A JP 2001034503 A JP2001034503 A JP 2001034503A
Authority
JP
Japan
Prior art keywords
event
program
breakpoint
information
debugged
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
JP11205979A
Other languages
English (en)
Inventor
信広 ▲高▼良
Nobuhiro Takara
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP11205979A priority Critical patent/JP2001034503A/ja
Publication of JP2001034503A publication Critical patent/JP2001034503A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 デバッグ作業に際して、ブレークポイント設
定作業の効率向上を図ることが可能なブレークポイント
設定方法及び障害解析装置を提供する。 【解決手段】 被デバッグプログラム4の実行履歴とし
て、前記プログラム4の実行中に発生したイベントに関
する情報を含むイベントトレース3bをあらかじめ取得
し、取得したイベントトレース3bに含まれたイベント
の中から、所望のイベントを選択してブレークポイント
を設定するものである。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はソフトウェアのデバ
ッグ技術に関するもので、特にブレークポイント設定方
法及び障害の発生箇所を見つけるための障害解析装置に
関する。
【0002】
【従来の技術】デバッグとは、プログラムを実行した結
果、プログラムが正しく動作しなかった場合に、障害箇
所を捜し出して修正を行うことをいい、障害解析装置
は、その障害を解析するためのツールである。代表的な
ものとして、プログラム・デバッガが挙げられる。
【0003】このプログラム・デバッガは、デバッグ対
象のプログラムの実行を途中で一時停止し、レジスタや
メモリ状態の観測や、変更を行うなどの機能を備えたも
ので、レジスタやメモリ状態を確認することで障害箇所
を発見、特定していくようになっている。このようにプ
ログラムの実行を一時停止させる機能をブレーク機能と
呼び、また、プログラムの実行を途中で停止させて処理
の制御を被デバッグプログラムからデバッガに移すこと
を「ブレークする」、一時停止する位置をブレークポイ
ントという。
【0004】図8はブレークポイントの設定例を示す図
で、特に、被デバッグプログラム11のソースコードに
対しブレークポイント(Trapコード)を埋め込んだもの
である。デバッガ12には、このようにブレークポイン
トをアプリケーションプログラムのソースコードの行に
設定するソースレベルデバッガと、アプリケーションの
アセンブラのステートメント単位で設定するデバッガと
が存在しており、いずれもアプリケーションの「実行形
式の特定の位置を指定すること=ブレークポイントの設
定」であった。つまり、プログラムの実行形式の命令レ
ベルや、ソースプログラムの行を指定することでブレー
クポイントを設定するようになっていた。
【0005】ところで、デバッグ作業は、そのプログラ
ムの論理的な実行順序をふまえつつ行う必要があるた
め、たとえばループと条件分岐があった場合、それらが
実行される順序の論理を考えながらブレークポイントを
設定する必要がある。このため、上記のような従来のデ
バッガでデバッグを行う場合、デバッグ実施者はデバッ
グに先立ってプログラムの実行順序を頭に入れておくこ
とが必須である。しかしながら、作成したプログラムを
作成者自身がデバッグする場合は、プログラムの論理を
理解できているため、どこにブレークポイントを設定す
れば効果的にバグを発見できるか比較的判断し易く、効
率的なブレークの張り方をすることが可能であるが、プ
ログラムを作成した者とデバッグする者が別々の場合に
は、プログラムの論理を理解することは容易ではない。
特にプログラムの論理構成が複雑である場合は、困難で
あることが多い。これは特にプログラムをシステムイン
テグレーションした場合や、プログラムのメンテナンス
フェーズの時に顕著に現れる。
【0006】そこで、プログラムがどのような順序で動
作しているかを知るための手段として、プログラム実行
中に発生するイベントを時系列で取得する、いわゆるイ
ベントトレーサがある。このイベントトレーサは、プロ
グラム実行中に発生するイベントに関する情報を逐次実
行履歴としてリアルタイムに取得し、実際のプログラム
がどのよう実行されるかを解析するためのツールで、デ
バッグの効率向上に役立っている。なお、このトレーサ
は、プログラムの実行を遅延させることなく実行中に発
生するイベントを逐次取得していき、取得された実行履
歴はプログラム実行後にまとめて解析される。
【0007】ここで、「イベント」について整理してお
く。「イベント」とは、プログラムやOS内で発生す
る、節目となるような特定の処理の実行を示しており、
たとえば関数コール/リターンの実行や、OSのシステ
ムコールの実施、プロセス間のメッセージの授受、排他
制御機構(セマフォ)の動作、割り込み発生などのこと
である。プログラムの実行順序は、自分が発生するイベ
ントだけでなく、OSや他のプログラムが発生させるイ
ベントによっても実行順序が変わるため、デバッグ対象
プログラム外のイベント情報も取得することで、プログ
ラムの流れが把握できる。なお、イベントトレーサに
は、ここで説明したようにプログラムの他、OSやハー
ドウエアなどを含めたシステム全体で発生するイベント
情報も取得できるものや、単体プログラムで発生したイ
ベントを取得するものなど多様である。
【0008】上述したデバッガ及びトレーサを使用し
て、プログラムで発生した障害を解析する際には、まず
トレーサを使用してイベントトレースを取得し、その実
行履歴から動作がおかしいと思われる点を判断する。続
いてデバッガを使用して動作がおかしいと思われる点に
ブレークポイントを設定する。そしてプログラムを走ら
せブレークポイントでその実行を停止させ、メモリやレ
ジスタの内容を確認して不具合を発見、特定していくよ
うになっている。
【0009】
【発明が解決しようとする課題】しかしながら、プログ
ラムの実行履歴であるトレース上で動作がおかしいと判
断した箇所にブレークポイントを設定しようとした場
合、実際にブレークポイントを設定するのはプログラム
の実行形式の命令レベルや、ソースレベルであるため、
トレース上で判断した設定箇所と、解析対象(アセンブ
ラのステートメントやプログラムのソースコード)にお
ける設定箇所とのマッピングを行いつつ設定する必要が
あり、このマッピング作業に時間がかかってしまうな
ど、作業性に問題があった。
【0010】このようなことから、デバッグ作業に際し
て、ブレークポイント設定作業の効率向上を図ることが
可能なブレークポイント設定方法及び障害解析装置の開
発が望まれていた。
【0011】
【課題を解決するための手段】本発明に係るブレークポ
イント設定方式は、被デバッグプログラムの実行履歴と
して、プログラムの実行中に発生したイベントに関する
情報を含むイベントトレースをあらかじめ取得し、取得
したイベントトレースに含まれたイベントの中から、所
望のイベントを選択してブレークポイントを設定する。
【0012】本発明においては、被デバッグプログラム
の実行履歴であるイベントトレースに対してブレークポ
イントを設定する。
【0013】
【発明の実施の形態】図1は本発明の一実施の形態の障
害解析装置の構成を示す構成図である。1はマウスやキ
ーボードなどの入力手段、2はディスプレイ等の表示手
段、3はデバッグ時に必要な情報等が格納されるメモ
リ、4はデバッグ対象となる被デバッグプログラム、5
は障害箇所を見つけるための障害解析ツールである。
【0014】6はログ取得プログラムで、被デバッグプ
ログラム4の実行中に発生したイベントに関する情報を
取得して、メモリ3のイベントログ(イベントトレー
ス)3bに蓄積すると共に、取得したイベントがブレー
ク対象であれば、メモリ3やレジスタの内容の読み出し
機能を備えた外部デバッガを呼び出すものである。7は
格納プログラムで、デバッグ実施者によりブレークポイ
ントとして指定されたイベントに関するイベント情報を
取得して、当該イベント情報をブレーク条件としてメモ
リ3内のブレークポイントテーブル3aに格納する。前
記ログ取得プログラム6及び格納プログラム7は障害解
析ツール5に備えられ、デバッグ実施者は障害解析ツー
ル5によって、指定したイベントでブレークを発生さ
せ、メモリ3等の内容を外部デバッガに読み取らせてプ
ログラムの動作の確認を行い、障害発生箇所を見つけ
る。
【0015】本実施の形態の障害解析装置では、3つの
動作でブレークを実現している。以下、この3つの動作
のそれぞれについて説明する。
【0016】(1)ブレークポイント設定準備 本障害解析装置では、ブレークする契機はイベントトレ
ース3b上にトレースされたイベントのうち、ブレーク
対象として指定されたイベントが発生したときである。
そこで、まずこのイベントトレース3bを取得する際の
動作について図面を参照しながら説明する。図2はブレ
ークポイント設定準備における動作説明図である。
【0017】まず、デバッグ実施者は、被デバッグプロ
グラム4の注目すべき箇所(ここではイベント)に、そ
れぞれ例えばログ取得コード(ログ取得プログラムに制
御を移すロジック:例えばサブルーチンコール、システ
ムコールなど)を埋め込んだり、イベントのフックを行
ったり等、ログ取得プログラム6への移行手段を講じて
おく。
【0018】ここで、イベントのフックとは、あるイベ
ントが発生したとき、当該イベントが実行される前に、
イベントの記録を行うべく「イベント取得ルーチン」を
挿入することをいい、このフックにより、イベントが発
生した際、イベント取得ルーチンによりイベントの記録
が行われ、その後、当該イベントで本来実行されるべき
処理(イベントそのものの処理)が実行されるようにな
る。なお、このイベント取得ルーチンの挿入方法は、O
Sの処理等により様々であり、例えばログ取得プログラ
ムが格納された番地をルーチンアドレステーブルにおけ
るイベント処理が格納されたテーブルに書き込むなどの
方法が取れるが、この機能そのものは従来のトレーサに
も設けられており、更に詳細な説明は省略する。
【0019】そして、このようにログ取得プログラム6
への移行手段が講じられた被デバッグプログラム4を実
行すると共に、ログ取得プログラム6を起動し、被デバ
ッグプログラムの実行中にログ取得プログラムへの移行
手段が埋め込まれたイベント(以下、このイベントのこ
とをログ取得対象イベントという)が発生した際、ログ
取得プログラム6に制御が移行し、ログ取得プログラム
6は当該イベントに関する情報をイベントトレース3b
に記録する。この記録処理は前記移行手段が埋め込まれ
たイベントが発生する度に行われる。なお、イベントト
レース3bは、メモリ3(一時記憶)上や図示しないデ
ィスクなどの二次記憶上など、任意の記憶手段に記憶さ
れる。
【0020】このように、一旦被デバッグプログラム4
を走行させて一連のイベントトレース3bを取得してお
く。これにより、デバッグ実施者はプログラムの流れを
つかみつつ、例えば、パラメータの値や返却値、イベン
トの発生順序がおかしいとか、発生するはずの無いイベ
ントが発生している等、動作がおかしいと思われる点を
判断することができるので、ブレークポイントを迅速に
決定することができる。そして、デバッグ実施者は、当
該決定したブレークポイント、すなわち動作がおかしい
と思われる箇所にブレークポイントを設定する。以下、
ブレークポイント設定時の動作について説明する。
【0021】(2)ブレークポイントの設定 図3はブレークポイント設定時の動作説明図である。ブ
レークポイントの設定は、イベントトレース3bからイ
ベントを選択し、当該イベントに関する情報をブレーク
ポイントテーブル3aに格納することによって行う。
【0022】図4はイベントトレースの具体的一例を示
す図である。図に示すように、イベントトレース3bに
は、イベントに関する情報として、例えばその発生時刻
(累積時間)、スプリット時間、Error 、プログラム名
(ROThread, ProcessID,プロセス名で特定される)、発
生内容(パラメータ)が時系列に記録されている。
【0023】図5は図4のイベントトレースからブレー
クポイントを設定する際の動作を説明するための図であ
る。実際には、例えばリスト状に表示したイベントトレ
ース3bから、ブレークポイントを設定したいイベント
を選択し、マウスの操作でBに示すようなメニューを表
示させて「ブレークポイントの設定」を選択すること
で、所望のイベントを指定するようになっている。
【0024】このようにしてブレークポイントを設定し
たいイベントが指定されると、格納プログラム7によ
り、前記指定されたイベントに関する情報がブレーク条
件としてブレークポイントテーブル3aに格納されてブ
レークポイントの設定が完了する。なお、イベントトレ
ース3b内のイベント情報を指定する方法は、これに限
られたものではなく、ブレーク条件となるイベント情報
を記述したファイルをブレークポイントテーブル3aに
格納するなどとしても良く、要するにイベントトレース
3b内のイベント情報かブレーク条件としてブレークポ
イントテーブル3aに格納されればよい。
【0025】図6はブレークポイントテーブルの一例を
示す図である。図に示すように、ブレークポイントテー
ブル3aには、イベント情報がブレーク条件として格納
される。ここでは、ブレーク条件として、イベント名、
イベントを発生させたプロセス名、該当イベント発生時
のパラメータ、イベントの実行回数が格納される例を示
している。イベントの実行回数とは、実行中に発生した
同種のイベントのうち当該イベントが何番目に発生した
ものであるかを示すもので、これらの条件全てを満たす
イベントが発生した場合、ブレークが実行される。
【0026】(3)ブレークの実行 図7はブレーク実行時の動作説明図である。デバッグ実
施者は、被デバッグプログラム4を実行させ、同時にロ
グ取得プログラム6も起動させる。そして、被デバッグ
プログラム4の実行中にログ取得対象イベントが発生す
ると、ログ取得プログラム6はログの取得を行う。な
お、このログ取得は、イベントがブレークポイントに設
定されている、いないにかかわ
【0027】そして、ログ取得プログラム6は、前記
(2)で設定したブレーク条件をブレークポイントテー
ブル3aから取り出して、現在取得したイベントがブレ
ーク条件と一致するかどうかを比較し、一致した場合、
ブレークを発生させ外部の対話型のデバッガ9を呼び出
してレジスタやメモリ3の状態の観測を行う。
【0028】このブレークの発生は、Intelの80x86系の
CPU では、int3等のソフトウェア例外を実行することが
代表的であるが、任意である。また、呼び出すデバッガ
も、ブレーク発生から制御を移行させることができるも
のであれば良い。
【0029】このように、本実施の形態によれば、イベ
ントトレーサにより取得したイベントトレース3bのイ
ベントを選択してブレークポイントを設定する機能を有
するので、従来技術で実行形式ないしソースコードを解
析し、動作を予測してブレーク位置を決めていたのに対
し、プログラムの実行履歴であるイベントトレース3b
からブレークポイントを設定することができ、より直感
的なデバッグ環境を提供することができる。これによ
り、ブレークポイント設定作業の効率向上を図ることが
できる。
【0030】なお、上記実施の形態では、単一のプログ
ラムを対象としたイベントトレース3bからブレークポ
イントを設定した例を示して説明したが、複数のプログ
ラムを対象としたイベントトレース3bからブレークポ
イントを設定するようにしてもよい。この場合、イベン
トトレース3b上に記録されたイベントのうち、複数の
プログラム間の相互に関連するイベントをブレークポイ
ントに指定すれば、複数のプログラムに対して同時にブ
レークポイントを設定することが可能となる。これによ
ると、複数のプログラムが同時に実行され協調動作を行
っているような場合に、注目したい部分のトレースログ
を取得し、取得した部分からのデバッグを行うことがで
きる。
【0031】
【発明の効果】以上に説明したように、本発明において
は、被デバッグプログラムの実行履歴であるイベントト
レースから、すなわち実際に実行された経路からブレー
クポイントを設定するようにしたので、直感的なデバッ
グ環境を提供することができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態の障害解析装置の構成を
示す構成図である。
【図2】ブレークポイント設定準備における動作説明図
である。
【図3】ブレークポイント設定時の動作説明図である。
【図4】イベントトレースの具体的一例を示す図であ
る。
【図5】図4のイベントトレースからブレークポイント
を設定する際の動作を説明するための図である。
【図6】ブレークポイントテーブルの一例を示す図であ
る。
【図7】ブレーク実行時の動作説明図である。
【図8】従来のブレークポイント設定方法の説明図であ
る。
【符号の説明】
4 被デバッグプログラム 6 ログ取得プログラム 3a ブレークポイントテーブル 3b イベントトレース 7 格納プログラム

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 被デバッグプログラムの実行履歴とし
    て、前記プログラムの実行中に発生したイベントに関す
    る情報を含むイベントトレースをあらかじめ取得し、 前記取得したイベントトレースに含まれたイベントの中
    から、所望のイベントを選択してブレークポイントを設
    定することを特徴とするブレークポイント設定方法。
  2. 【請求項2】 前記イベントトレースには、被デバッグ
    プログラムで発生するイベントに関する情報及び前記被
    デバッグプログラム以外に実行状態にある他のプログラ
    ムで発生したイベントに関する情報が含まれ、前記選択
    された所望のイベントが複数のプログラムに関連するイ
    ベントである場合、その複数のプログラムの該当するイ
    ベントにそれぞれブレークポイントを設定することを特
    徴とする請求項1記載のブレークポイント設定方法。
  3. 【請求項3】 被デバッグプログラムの実行履歴とし
    て、前記プログラムの実行時に発生したイベントに関す
    る情報を含むイベントトレースを取得するログ取得手段
    と、 ブレーク条件が格納されるブレークポイントテーブル
    と、 前記ログ取得手段で取得されたイベントトレース内のイ
    ベントに対し、ブレークポイントが指定されると、その
    イベントに関する情報をブレーク条件として前記ブレー
    クポイントテーブルに格納する格納手段とを有し、 前記被デバッグプログラムの実行中に発生したイベント
    と前記ブレークポイントテーブルに格納されたブレーク
    条件とが一致した場合、ブレークを発生させることを特
    徴とする障害解析装置。
  4. 【請求項4】 前記ログ取得手段が取得するイベントト
    レースには、被デバッグプログラムで発生するイベント
    に関する情報及び前記被デバッグプログラム以外に実行
    状態にある他のプログラムで発生したイベントに関する
    情報が含まれ、前記指定されたイベントが複数のプログ
    ラムに関連するイベントである場合、その複数のプログ
    ラムの該当するイベントにそれぞれブレークポイントを
    設定することを特徴とする請求項3記載の障害解析装
    置。
JP11205979A 1999-07-21 1999-07-21 ブレークポイント設定方法及び障害解析装置 Pending JP2001034503A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11205979A JP2001034503A (ja) 1999-07-21 1999-07-21 ブレークポイント設定方法及び障害解析装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11205979A JP2001034503A (ja) 1999-07-21 1999-07-21 ブレークポイント設定方法及び障害解析装置

Publications (1)

Publication Number Publication Date
JP2001034503A true JP2001034503A (ja) 2001-02-09

Family

ID=16515895

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11205979A Pending JP2001034503A (ja) 1999-07-21 1999-07-21 ブレークポイント設定方法及び障害解析装置

Country Status (1)

Country Link
JP (1) JP2001034503A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100425690B1 (ko) * 2001-12-29 2004-04-01 엘지전자 주식회사 조건부 메모리 억세스 회로
JP2007080118A (ja) * 2005-09-16 2007-03-29 Nec Electronics Corp デバッガ装置及びそのデバッガ装置を使用したデバッグ方法
US7818620B2 (en) 2006-08-01 2010-10-19 Hitachi, Ltd. Program failure analysis system, failure analysis method, and emulator device
JP2011070256A (ja) * 2009-09-24 2011-04-07 Toshiba Corp デバッガおよびプログラム
JP2014146358A (ja) * 2008-04-07 2014-08-14 International Business Maschines Corporation デバッガ・データ・プロセシング・システム、デバッギング方法およびコンピュータ・プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100425690B1 (ko) * 2001-12-29 2004-04-01 엘지전자 주식회사 조건부 메모리 억세스 회로
JP2007080118A (ja) * 2005-09-16 2007-03-29 Nec Electronics Corp デバッガ装置及びそのデバッガ装置を使用したデバッグ方法
US7818620B2 (en) 2006-08-01 2010-10-19 Hitachi, Ltd. Program failure analysis system, failure analysis method, and emulator device
JP2014146358A (ja) * 2008-04-07 2014-08-14 International Business Maschines Corporation デバッガ・データ・プロセシング・システム、デバッギング方法およびコンピュータ・プログラム
JP2011070256A (ja) * 2009-09-24 2011-04-07 Toshiba Corp デバッガおよびプログラム

Similar Documents

Publication Publication Date Title
US7536605B2 (en) Injection of software faults into an operational system
US9342437B2 (en) Backward post-execution software debugger
US10191835B2 (en) Multi-threaded debugger support
JP3624119B2 (ja) コンピューティングシステムにおいてフォールトトレランスを提供する方法
US7721265B1 (en) Source code debugging method and apparatus for use in script testing environment
US8914777B2 (en) Forward post-execution software debugger
US6378124B1 (en) Debugger thread synchronization control points
US6077312A (en) Apparatus, program product and method of debugging utilizing a context sensitive breakpoint
US7653899B1 (en) Post-execution software debugger with performance display
US8201152B2 (en) Method and system for debugging a program in a multi-thread environment
US8584097B2 (en) Post-execution software debugger with event display
US6981248B2 (en) Conditional breakpoint encountered indication
KR20070109432A (ko) 커널 인지 디버깅 장치 및 방법
US8938718B2 (en) Managing window focus while debugging a graphical user interface program
US11422920B2 (en) Debugging multiple instances of code using thread patterns
US8015552B1 (en) Post-execution software debugger with coverage display
US6978399B2 (en) Debug thread termination control points
JPH09503084A (ja) 実行中のリアルタイムシステムにおけるエラー分析用トレーサシステム
JP2001034503A (ja) ブレークポイント設定方法及び障害解析装置
CN115878363A (zh) 用于解析处理器异常的方法、装置及计算机可读存储介质
KR100428712B1 (ko) 멀티 태스크 프로그램의 논스톱 디버깅을 위한트레이스포인트 설정 방법
Beranek Data race detection based on execution replay for parallel applications
Al-Sharif et al. Debugging with dynamic temporal assertions
Spinellis Debuggers and logging frameworks
US20050015677A1 (en) Method of executing a computer program