JP2004185345A - デバッグ方法およびシステム - Google Patents

デバッグ方法およびシステム Download PDF

Info

Publication number
JP2004185345A
JP2004185345A JP2002351924A JP2002351924A JP2004185345A JP 2004185345 A JP2004185345 A JP 2004185345A JP 2002351924 A JP2002351924 A JP 2002351924A JP 2002351924 A JP2002351924 A JP 2002351924A JP 2004185345 A JP2004185345 A JP 2004185345A
Authority
JP
Japan
Prior art keywords
dump
program
information
execution
under test
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
JP2002351924A
Other languages
English (en)
Inventor
Norimitsu Hayakawa
典充 早川
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2002351924A priority Critical patent/JP2004185345A/ja
Publication of JP2004185345A publication Critical patent/JP2004185345A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】障害発生条件を特定するには障害を発生した計算機のメモリダンプから充分な情報が得られない場合には、幾度かの再現確認が必要となるが、この作業は多大な工数を要する場合が発生する。
【解決手段】被テストプログラムを実行中に分岐命令が発生した場合、
プログラムカウンタを取得する。分岐命令から次の分岐命令までは実行したと見なし、プログラムの実行回数の履歴管理する事で運用プログラムの実行パターンを学習し、当該実行パターンと異なる分岐先への遷移履歴が無い、もしくは他の遷移先と比較して極小の場合には障害発生の可能性があるものと見なし、ダンプの差分情報を取得し、実際に障害が発生した場合に障害発生時より幾分以前のダンプ情報を提供し得ることを特徴とするデバッグ装置
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明はプログラムのデバッグ作業における再現性を確保するための技術に関する。
【0002】
【従来の技術】
障害が発生した場合、エラー発生原因、および発生箇所を調査するたには、デバッガでのステップ実行、障害発生時に取得されるメモリダンプ情報を基にプログラマはデバッグを行う。特開平5−250208号に開示されているようなデバッグ技術では、プログラムのデバッグの状態を外部記憶装置へ退避させておきその状態からのデバッグ作業を幾度となく実行することができることが記載されている。
【0003】
【特許文献1】
特開平5−250208号
【0004】
【発明が解決しようとする課題】
従来の技術におけるデバッガは何れも障害発生条件を特定でき、再現方法を確立した場合において、被テストプログラムを改めてデバッガを用いて解析する場合に非常に有用である。しかし、障害発生条件を特定するには障害を発生した計算機のメモリダンプから充分な情報が得られる必要があり、充分な情報が得られない場合には、幾度かの再現確認が必要となる。また、この作業は本来行うべきデバッグ作業以上に工数を要する場合が発生する。このような課題は開発初期段階ではなく実稼動するようなプログラムにおいて顕著である。
【0005】
本発明は前記課題に鑑みてなされたもので高確率な再現性を有する状態から再現確認することを目的とし、障害発生時より幾分か以前のダンプに対して解析可能とすることでプログラマのデバッグ作業の負担を軽減するデバッグ方法およびシステムを提供することである。
【0006】
【課題を解決するための手段】
本発明では、上記の課題を改善するために次のような方法を採用する。
被テストプログラムの実行を開始する際初期ダンプ情報を取得する。この情報に対し任意の状態におけるダンプの差分情報を収集する。
【0007】
差分情報を取得する手順は、まず実行する被テストプログラム実行中の分岐命令のプログラムカウンタ情報を取得する。取得したプログラムカウンタを別の計算機で処理する。
被テストプログラム実行中に当該実行箇所がプログラマの経験則によるチェックポイントや特定命令、或いはタイマ等の事前に指定した条件に一致する場合には本状態におけるダンプを取得する。
前記のように障害の発生を経験則のみで予測することは非常に困難である。そのため分岐命令等に関しては分岐箇所での遷移を学習し、遷移確率が極めて低い場合には何らかの異常な状態になり得ることを想定しダンプを取得する。このことで、経験則のみでは判別できない部分を被テストプログラム実行中に変動する遷移確率により補う。
【0008】
【発明の実施の形態】
以下、本発明の実施例を図面に基づいて詳細に説明する。図1は情報処理装置を利用して実現した一実施例である。1はプロセッサであり、本プロセッサは被テストプログラムを実行中に分岐命令を実行しようとする場合に割り込みを発生する。2は主記憶装置であり、被テストプログラム(3)をロードする領域(21)、および本装置によってダンプを取得する際に使用する一時的なダンプ格納領域(22)を有する。4はプログラムカウンタキューであり、プロッセサ(1)での割り込み処理発生時のプログラムカウンタを格納する箇所である。5は実行履歴監視部(プログラムでも実現可能である)であり被テストプログラムの実行履歴を監視する。6はダンプ出力部(プログラムでも実現可能である)であり被テストプログラムロード時、および前記5からのダンプ出力要請発生時に前記22のダンプを取得する。7はダンプ蓄積部(プログラムでも実現可能である)であり6により出力されるダンプの情報(71)、および差分(72)を格納しておく外部記憶装置である。なお、図1における5、6、7は被テストプログラムを実行するプロセッサとは他のプロセッサにて処理することもできる。
【0009】
図2は、プログラムカウンタキュー(4)である。プログラムカウンタキュー(4)は図2のようなキューの構造をしている。分岐命令によるプロセッサ(1)での割り込み発生時には本時点でのプログラムカウンタを蓄積していく。また、プログラムカウンタ(41)は次に実行する命令のアドレスを保持している。
【0010】
図3は本実施例における被テストプログラムを実行する際のフローチャートである。初めに被テストプログラム(3)を主記憶装置(2)にロードする(301)。当該領域を被テストプログラムロード領域(21)とする。次にダンプの初期状態を保持するためにダンプ出力部(6)へダンプ出力要請を行う(302)。ダンプ出力部は被テストプログラムロード領域(21)を初期ダンプ情報(71)として保持する。プロセッサ(1)は被テストプログラム(21)を実行するが、その際事前に設定したダンプ取得条件と一致する場合(303)にはダンプ出力部へダンプの出力を要求する(304)。また、被テストプログラム実行中に分岐命令が発生した場合割り込みを発生させる(305)(306)。割り込みが発生した場合プログラムカウンタ(41)をプログラムカウンタキューに蓄積する(307)。その後プロセッサ(1)は通常通りに命令を実行する(308)。プログラムが終了するまで本処理の303〜309を繰り返す。当該303〜309の処理は被テストプログラムを実行するプロセッサが実行する。
【0011】
図4はプログラムカウンタがキューイングされてからダンプを出力するまでの処理についてのフローチャートである。まず前記1のプロセッサにより4にプログラムカウンタがキューイングされた場合、実行履歴監視部(5)がキューから分岐命令のプログラムカウンタを読み込む(401)。さらに分岐命令発生箇所の主記憶装置(2)上でのアドレスを特定する(402)。実行履歴監視部(5)のダンプ取得条件に合致する場合(403)には、ダンプ出力部(6)へダンプの出力を要求し(404)、ダンプ出力部はダンプを主記憶装置(2)上のダンプ情報一時格納領域(22)に出力する。その後実行履歴監視部(5)は実行履歴情報(52)を更新する(405)。なお、本一連の処理は前記プロッセサ(1)とは異なるプロッセサが処理する。
図5は実行履歴監視部(5)の処理方式を示すフローチャートであり、図6は実行履歴情報である。実行履歴監視部(5)は被テストプログラムの開始アドレス(601)から終了アドレス(604)までのアドレスへのアクセス回数を管理している。本実行履歴情報は、被テストプログラムの典型的な処理パターンを運用する以前のテスト工程等にて実行しておく必要がある。
【0012】
その上で、実行履歴部(5)は4にキューイングされているプログラムカウンタを読み出し、読み出したプログラムカウンタから当該アドレス位置を特定する(502)。特定したアドレスからの遷移先である分岐命令アドレス(602)と分岐先アドレス(603)との実行回数を比較し実行回数の比率が任意の閾値を超える場合、もしくは実行履歴が無い場合(503)にはユーザが設定したダンプ取得条件(303)に一致しない場合でもダンプ出力部(6)へダンプ出力を要求する(504)。最後に実行履歴監視部(5)は前回の分岐命令箇所から今回の分岐命令箇所までのアドレスは全て実行したものとして実行履歴情報(52)を更新する(505)。なお本実行履歴情報は被テストプログラムが実行中に「経験」として蓄積されることで、本装置は被テストプログラムの実行パターンを学習する。
【0013】
図7はダンプ出力部(6)に関するフローチャートである。実行履歴監視部(5)よりダンプ出力要求が発生するとダンプ出力部は主記憶装置(2)上のダンプ情報一時格納領域(22)にダンプを出力する(701)。ダンプ出力部は前回出力時のダンプ情報(63)を保持しており、701において出力したダンプと前回のダンプ(63)とを比較し差分のみを出力する(702)(703)。差分情報を出力した後保持しているダンプ情報を更新する(704)。
【0014】
以上により、プログラマの経験則に加え被テストプログラムが分岐命令において常に実行する箇所を「正常処理」、極稀もしくは未実行の箇所を「障害予備群」として捕らえ後者の場合にダンプを取得する。これにより実際に障害が発生した場合にプログラマに充分な情報を与え得ることができ、また当該ダンプ情報を用いる事で再現確認が可能になり得ることができ、プログラマのデバッグ作業を支援することができる。
また、ダンプの差分情報のみを蓄積していく事で資源をより有効に活用することができる。
また、被テストプログラムを実行するプロッセサと実行履歴の監視とを別プロッセサで処理する事で被テストプログラムの実行へ高負荷を掛けることを回避できる。
【0015】
【発明の効果】
本発明によれば、障害発生時より幾分か以前のダンプに対して解析可能とすることでプログラマのデバッグ作業の負担を軽減することができる。
【図面の簡単な説明】
【図1】本発明の実施形態にかかるデバッグ装置を示す図である
【図2】プログラムカウンタキューの形式とプログラムカウンタの内容を示す図である。
【図3】被テストプログラム実行プロッセサ側のフローチャートである。
【図4】本デバッグ装置実行プロッセサ側のプロッセサのフローチャートである。
【図5】実行履歴監視部のフローチャートである。
【図6】実行履歴情報のデータ構成図である。
【図7】ダンプ出力部のフローチャートである。
【符号の説明】
1 被テストプログラムを実行するプロセッサ
2 主記憶装置
3 被テストプログラム
4 プログラムカウンタキュー
5 実行履歴監視部
6 ダンプ出力部
7 ダンプ蓄積部
21 被テストプログラムロード領域
22 ダンプ情報一時格納領域
41 プログラムカウンタ
51 実行箇所管理機能
52 実行履歴情報
61 ダンプ収集機能
62 ダンプ差分検出機能
63 前ダンプ情報
71 初期状態ダンプ情報
72 ダンプ差分情報
301 被テストプログラムロード指示
302 初期状態ダンプ情報取得
303 事前ダンプ取得条件確認
304 ダンプ出力要求
305 分岐命令確認
306 分岐命令割り込み指示
307 プログラムカウンタ格納指示
308 被テストプログラム実行機能
309 プログラム終了確認
401 プログラムカウンタ読み込み指示
402 実行位置特定機能
403 実行履歴監視部ダンプ取得指示
404 ダンプ出力要求
405 実行履歴情報更新機能
501 実行位置特定機能
502 実行履歴比較指示
503 実行履歴監視部ダンプ取得指示機能
504 ダンプ出力要求
505 実行履歴情報更新機能
601 実行履歴情報被テストプログラム開始アドレス
602 実行履歴情報被テスト分岐命令アドレス
603 実行履歴情報被テスト分岐先アドレス
604 実行履歴情報被テスト終了アドレス
701 ダンプ格納機能
702 差分検出機能
703 差分出力機能
704 保持ダンプ情報更新機能

Claims (5)

  1. 被テストプログラムの実行を開始する際、初期ダンプ情報を取得し、該ダンプ情報に対し任意の状態におけるダンプの差分情報を記憶し、
    前記差分情報は、まず実行する前記被テストプログラム実行中の分岐命令のプログラムカウンタ情報を取得し、該取得したプログラムカウンタを他の計算機で処理し、
    前記被テストプログラム実行中に当該実行箇所がプログラマの経験則によるチェックポイントと特定命令とタイマについて指定した条件に一致する場合は該被テストプログラム実行中におけるダンプを取得し、
    分岐命令等については分岐箇所での遷移回数を記憶し、遷移確率が所定遷移確率以下の場合は、ダンプを取得することを特徴とするデバッグ方法。
  2. 被テストプログラムの初期ダンプ情報、および同プログラムのプログラムカウンタ情報を収集し、被テストプログラム実行時に事前に設定した条件を満たした場合にダンプを取得し、障害発生時にプログラマへデバッグ支援となり得る本情報を提供することを特徴とするデバッグ方法。
  3. 請求項1記載のデバッグ方法において、前回取得した前記ダンプとの差分を蓄積しておくことを特徴とするデバッグ方法。
  4. 請求項1記載のデバッグ方法において、前記プログラムカウンタを複数のスタックに蓄積することにより、該他のプログラムカウンタを使用した他のプログラムにて実行することを特徴とするデバッグ方法。
  5. 被テストプログラムの実行を開始する際、初期ダンプ情報を取得し、該ダンプ情報に対し任意の状態におけるダンプの差分情報を記憶する手段と、
    前記差分情報は、まず実行する前記被テストプログラム実行中の分岐命令のプログラムカウンタ情報を取得し、該取得したプログラムカウンタを他の計算機で実行する手段と、
    前記被テストプログラム実行中に当該実行箇所がプログラマの経験則によるチェックポイントや特定命令またはタイマなどの事前に指定した条件に一致する場合は該実行中におけるダンプを取得する手段と、
    分岐命令等については分岐箇所での遷移回数を記憶し、遷移確率が所定遷移確率以下の場合は、ダンプを取得する手段とを備えたことを特徴とするデバッグシステム。
JP2002351924A 2002-12-04 2002-12-04 デバッグ方法およびシステム Pending JP2004185345A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002351924A JP2004185345A (ja) 2002-12-04 2002-12-04 デバッグ方法およびシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002351924A JP2004185345A (ja) 2002-12-04 2002-12-04 デバッグ方法およびシステム

Publications (1)

Publication Number Publication Date
JP2004185345A true JP2004185345A (ja) 2004-07-02

Family

ID=32753678

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002351924A Pending JP2004185345A (ja) 2002-12-04 2002-12-04 デバッグ方法およびシステム

Country Status (1)

Country Link
JP (1) JP2004185345A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268775A (ja) * 2005-03-25 2006-10-05 Ntt Docomo Inc ソフトウェア動作モデル化装置及びソフトウェア動作監視装置
GB2507505A (en) * 2012-10-31 2014-05-07 Ibm Recording dump data of a computer process which provides trace data
CN104346248A (zh) * 2014-10-17 2015-02-11 浪潮电子信息产业股份有限公司 一种基于history命令的审计功能实现方法
US9128832B2 (en) 2012-12-14 2015-09-08 International Business Machines Corporation Performing diagnostic tracing of an executing application to identify suspicious pointer values
US9606872B2 (en) 2014-09-12 2017-03-28 Fuji Xerox Co., Ltd. Virtual computer system, printer control system, virtual computation method, printer control method, and storage media
CN107807868A (zh) * 2017-10-13 2018-03-16 郑州云海信息技术有限公司 一种双控存储系统故障转储测试方法及系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268775A (ja) * 2005-03-25 2006-10-05 Ntt Docomo Inc ソフトウェア動作モデル化装置及びソフトウェア動作監視装置
GB2507505A (en) * 2012-10-31 2014-05-07 Ibm Recording dump data of a computer process which provides trace data
US9372783B2 (en) 2012-10-31 2016-06-21 International Business Machines Corporation Recording the core data of a computer process which provides trace data
US9128832B2 (en) 2012-12-14 2015-09-08 International Business Machines Corporation Performing diagnostic tracing of an executing application to identify suspicious pointer values
US9164821B2 (en) 2012-12-14 2015-10-20 International Business Machines Corporation Performing diagnostic tracing of an executing application to identify suspicious pointer values
US10423474B2 (en) 2012-12-14 2019-09-24 International Business Machines Corporation Performing diagnostic tracing of an executing application to identify suspicious pointer values
US9606872B2 (en) 2014-09-12 2017-03-28 Fuji Xerox Co., Ltd. Virtual computer system, printer control system, virtual computation method, printer control method, and storage media
CN104346248A (zh) * 2014-10-17 2015-02-11 浪潮电子信息产业股份有限公司 一种基于history命令的审计功能实现方法
CN107807868A (zh) * 2017-10-13 2018-03-16 郑州云海信息技术有限公司 一种双控存储系统故障转储测试方法及系统

Similar Documents

Publication Publication Date Title
US7991961B1 (en) Low-overhead run-time memory leak detection and recovery
CN108399132B (zh) 一种调度测试方法、装置及存储介质
JP2006277115A (ja) 異常検出プログラムおよび異常検出方法
CN110543427B (zh) 测试用例存储方法、装置、电子设备及存储介质
JP2002342114A (ja) トレースデータ採取可能なプロセッサ
JP2004185345A (ja) デバッグ方法およびシステム
US7475386B1 (en) Mechanism for disjoint instrumentation providers in a tracing framework
JPH09212385A (ja) 並列プログラムデバッグ装置
JP2010102454A (ja) 情報処理装置、情報処理プログラム
CN116126832A (zh) 数据库切换方法、切换装置、电子设备及存储介质
JP5365273B2 (ja) 情報処理システム、監視方法及び監視プログラム
CN115237728A (zh) 一种实时操作系统运行状态的可视化监视方法
JP5024252B2 (ja) トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法
US20220156074A1 (en) Electronic device and multiplexing method of spatial
CN113703874A (zh) 一种数据流处理方法、装置、设备及可读存储介质
JPH08286950A (ja) 情報処理装置及びトレース情報格納方法
JPH10198578A (ja) デバッグ方式およびデバッグ方法
JP2001166966A (ja) デバッガにおける被テストプログラムの実行環境管理方法
JPH04365140A (ja) 情報処理装置の再起動方式
JP2000259213A (ja) プログラマブルコントローラ
JPH11119992A (ja) ファームウェアのトレース制御装置
JP2002251299A (ja) プログラムトレース装置
JP2019125134A (ja) 検証支援プログラム、検証支援方法、および情報処理装置
JPH10171683A (ja) 故障情報管理装置
JP2009211416A (ja) プロセッサキャッシュ制御装置、方法、プロセッサ及びコンピューター