JP2006107430A - コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置 - Google Patents

コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置 Download PDF

Info

Publication number
JP2006107430A
JP2006107430A JP2005158820A JP2005158820A JP2006107430A JP 2006107430 A JP2006107430 A JP 2006107430A JP 2005158820 A JP2005158820 A JP 2005158820A JP 2005158820 A JP2005158820 A JP 2005158820A JP 2006107430 A JP2006107430 A JP 2006107430A
Authority
JP
Japan
Prior art keywords
timer
computer program
assert
section
computer
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
JP2005158820A
Other languages
English (en)
Inventor
Benjamin E Canning
イー.カンニング ベンジャミン
Christopher C White
シー.ホワイト クリストファー
Thomas S Coon
エス.クーン トーマス
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006107430A publication Critical patent/JP2006107430A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • G06F11/277Tester hardware, i.e. output processing circuits with comparison between actual response and known fault-free response
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0748Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a remote unit communicating with a single-box computer node experiencing an error/fault
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 コンピュータプログラムの無応答部分を識別すること。
【解決手段】 本発明の方法によれば、潜在的に無応答行動を生じる可能性のあるプログラムコードがタイマーにラップされる。タイマーは、プログラムコードのセクションの実行の初めに、バックグランドスレッド上で開始される。タイマーは、指定の閾値時間が経過した後、満了するようにセットされる。プログラムコードのセクションの実行の間に、タイマーが満了するかどうかについて判定がなされる。プログラムコードのセクションの実行の間に、タイマーが満了する場合、実行が中断されて、プログラムコードのセクションが無応答と識別され、コンピュータプログラムの診断および無応答の振る舞いの修復での使用のためにシステム状態の情報が格納される。格納される実際のシステム状態の情報は、リモート制御ファイルにより定義され、タイマー満了の時またはその前後に格納することができる。
【選択図】 図2

Description

本発明は、コンピュータプログラムの無応答部分を識別することに関する。
ソフトウエア開発サイクルで最も重要な段階の1つは、ソフトウエア製品が顧客に出荷された後に生じるデバッグの段階である。この段階が重要なのは、プログラムエラーを分離し、頻繁に使用される機能と希にしか使用されない機能を識別し、ソフトウエア製品を概ね改良し、安定させるために、ソフトウエア製品に関する顧客の実体験がこの段階の間に利用できるからである。
リリース後のデバッグ段階における解析の主な重点は、典型的に、最も頻繁に発生するプログラムエラー(「バグ」とも言う)を識別することである。最も頻繁に発生するバグを識別してそれを修復することにより、多数のユーザの使用感が改善される。しかし、以前のリリース後のデバッグシステムでは、一般に取り組まれていなかった解析の別のカテゴリがある。このカテゴリは、コンピュータの「ハング(hung)」の識別に関する。ハングは、ソフトウエアがユーザのソフトウエア入力に対する応答をやめ、表示画面の再ドローをやめる時間帯である。
ハングしたコンピュータプログラムは実行し続けるが、そのプログラムは典型的に、ユーザに対して無応答となる。というのは、入力が受取られず、ディスプレーが更新されないからである。これは、ユーザにとって極めてフラストレーションのたまる状態である。というのは、プログラムに回復不能の致命的なエラーが起こったのか、あるいはコンピュータはその処理を完了して再び入力を受け取り表示画面を更新するのかがユーザには不明確であるからである。無応答の期間が拡大すると、ユーザは、コンピュータプログラムが何か致命的なエラーに遭遇したと考え、プログラムを終了することを選ぶことがある。このようなやり方でハングしたプログラムを終了すると、結果としてデータの喪失および不安定なシステム状態を生じる可能性がある。
コンピュータプログラムの無応答の振る舞いが生じる部分を識別できれば、いくつかのステップのいずれか1つを行って、プログラムコードの応答性を改善することができる。例えば、無応答部分を書き直して、その処理を非同期的に行うか、バックグラウンドの処理スレッド上で行うことができる。あるいは、無応答性がプログラムの主メッセージループ上で処理を行うことにより生じている場合は、その処理をメッセージループの外に移動することができる。無応答の振る舞いを生じるコンピュータプログラムの部分が識別されると、プログラムに対する他の種類の変更を行ってコンピュータプログラムの応答性を改善することができる。このように、コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置が必要である。また、このような性能の問題を実際のユーザが遭遇するように監視する必要性と、アプリケーション性能またはユーザ体験を劣化しないように監視する必要性がある。
本発明の各種実施例は、こうした考慮事項およびその他に関してなされたものである。
本発明の一実施例によれば、コンピュータプログラムの無応答部分を識別するための方法および装置により、上述およびその他の課題が解決される。コンピュータプログラムの無応答部分を識別することにより、プログラムに対し変更を加えて、その結果、無応答プログラム状態が少なくなり、それによりそのコンピュータプログラムでの顧客満足度を増大することができる。
本発明の一態様によれば、コンピュータプログラムの無応答部分を識別する方法が提供される。その方法によれば、無応答の振る舞いを潜在的に生じる可能性のあるプログラムコードは、タイマーでラップされる。詳細には、プログラムコードのあるセクションの実行の開始時にタイマーをスタートさせる。タイマーは規定の閾値時間が満了した後、満了するようにセットされる。タイマーがプログラムコードのそのセクションの実行中に満了するとタイマーにより呼出されるバックグランドスレッドが実行される。
タイマーがプログラムコードのそのセクションの実行中に満了する場合、実行が中断され、そのイベントについてのデータが収集される。詳細には、プログラムコードのそのセクションが無応答であると識別され、コンピュータプログラムの診断とその無応答の振る舞いを修復するのに使用するために、システム状態の情報が格納される。そのプログラムセクションが実行を完了するときではなく、タイマーが満了したときのシステム状態をキャプチャするために、タイマーが満了する時またはその前後でシステム状態の情報が格納される。少量のデータを頻繁に収集することができ、ある特定の性能の問題によりさらなる調査が必要とされるときは、より多くの情報を収集することができる。
本発明の一態様により、タイマーの満了が、別の原因ではなく、実際にプログラムコードのセクションが閾値時間内での実行に失敗したことにより生じていることを確実にするために、処理を実行することができる。例えば、プログラムコードのセクションが、メインメモリからバッキングストアにスワップされる場合、プログラムコードのセクションが閾値期間の時間だけ実行していなかったとしても、タイマーは満了することがある。同様に、モーダルダイアログボックスが存在すると、コードのセクションが実行されず、タイマーが満了することがある。これらの状態によりタイマーの満了が生じるのを防止するために、コンピュータプログラムを実行するのに実際に費やした時間の量が、タイマーに関連付けられた閾値より小さいか判定する。実行時間が閾値より小さければ、タイマーは、タイマーの閾値からプログラムコードのセクションを実行するのに実際に費やした時間量を差し引いた量に等しい時間量にリセットすることができる。そしてプログラムコードのセクションの実行が再開される。
本発明の他の態様によれば、タイマーはネストした様式でプログラムコードのセクションに挿入することができる。このようにして、タイマーは、親タイマーまたは子タイマーを有することがある。1つのタイマーの満了により、その親タイマーまたは子タイマーの満了をも生じさせるのを防止するために、一実施例において、各タイマーは、満了した時をその親タイマーまたは子タイマーに通知して、親タイマーまたは子タイマーの誤った満了が生じないようにすることができる。さらに具体的には、子タイマーは、親タイマーに子タイマーが掛けた時間を通知して、親タイマーがその時間を親タイマーが掛けた時間の総量から引くことができるようにする。例えば、親タイマーが、処理するのに5秒掛ける子タイマーを1つ有し、親タイマーは全体で10秒掛けるとすると、2つのアラートが生成されることになる。1つのアラートは、子タイマーについて5秒のときに発生されることなる。もう1つのアラートは、親タイマーについて発生されることになり、これは親タイマーが子タイマーが掛けた時間を差し引いた後でも5秒掛かったからである。逆に、親タイマーが全体で5.5秒しか掛からなかったのであれば、アラートは子タイマーについてのみ発生され、親タイマーについては発生されないであろう(1秒のタイマー閾値を仮定した場合)。
本発明の別の態様によれば、限定数のタイマーを割当てるように動作するタイマープールを使用することができる。十分なレベルの性能を維持するために、タイマープールは、タイマーを割当てる要求に応答し、タイマーがプールの中にあるときのみタイマーの割当てを可能にする。タイマーがプールの中で利用可能でなければ、タイマーは割当てられないことになる。タイマーの使用が完了すると、タイマーはプールに返すことができる。
本発明を特徴付けるこれらおよびその他の特性並びに利点は、以下の詳細な説明を読み、関連の図面を検討することにより明らかとなろう。
ここで図面を参照して、本発明の各種態様を説明する。図面において、類似の番号は類似の要素を表す。詳細には、図1およびそれに対応する検討は、本発明の実施例を実装することができる適したコンピューティング環境の簡単で一般的な説明を提供することを意図したものである。本発明は、パーソナルコンピュータのオペレーティングシステム上で稼働するプログラムモジュールと共に実行する一般的な関連で説明されることになるが、当業者は、本発明が他のタイプのコンピュータシステムおよびプログラムモジュールと組合せて実装できることを認めるであろう。
一般的に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造、および、特定のタスクを実行するか、特定の抽象データ型を実装するその他のタイプの構造が含まれる。さらに、当業者は、本発明が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な民生電子機器、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施され得ることを理解するであろう。また、本発明は、通信ネットワークを通じてリンクされたリモート処理デバイスによりタスクを実行する分散コンピューティング環境においても、実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートの両メモリ記憶デバイスに置くことができる。ここで図面を参照して、本発明の態様および例示的運用環境を説明する。図面では、いくつかの図面を通じて類似の番号は類似の要素を表す。
図1は、本発明の各種実施例のための動作環境を示す。図1に示すように、クライアントコンピュータ2は、本発明の各種実施例で使用される。クライアントコンピュータは、1つまたは複数のプログラムモジュールを実行するのに使用することができる標準的なデスクトップコンピュータまたはサーバコンピュータを備える。クライアントコンピュータ2は、クライアントコンピュータで実行中のアプリケーションプログラムの性能を監視するためと、アプリケーションプログラムの応答性を判定するためのプログラムモジュールをも装備している。以下に詳細をより詳しく説明するように、クライアントコンピュータ2は、アプリケーションプログラムが無応答になるアプリケーションコードの部分を識別するためのコードを実行するよう動作する。無応答コンピュータプログラムは、処理の実行中にユーザ入力を受取らないか、または表示画面を更新しないプログラムを包含する。
無応答であるプログラムを識別し、無応答の振る舞いを修復するために、クライアントコンピュータ2は、エラー報告サーバ(「ERS」)コンピュータ10とインターフェースすることができる。エラー報告サーバコンピュータ10は、LAN4またはインターネット8を通じて維持されアクセス可能な従来のサーバコンピュータを備える。ERS10は、典型的に、応答性について監視するためにアプリケーションソフトウエアの開発者によって運用される。クライアントコンピュータ10は、プログラムが無応答コードを含むと識別されたときか、または他のタイプのエラー状態に遭遇したときに、エラーをERS10に報告するように動作することができる。ERS10に報告された情報を通じて、開発者はプログラムコードを修正して、無応答プログラム状態を除去するか、またはプログラムの別の不備を訂正することができる。修正されたプログラムコードは、将来の更新でエンドユーザに送信することができる。
無応答であるプログラムコードの識別を援助するために、クライアントコンピュータ2は、定期的にERS10からリモート制御ファイルを受取る。リモート制御ファイルは、不具合を記録すべき条件を定義する情報を含む。詳細には、リモート制御ファイルは、プログラムが無応答であるかどうかを判定するための時間閾値を含むことができる。リモート制御ファイルは、プログラムの一部が無応答であると識別されるときシステム情報が収集されるべきか、そして収集されるべき情報の種類についての情報を含むこともできる。リモート制御ファイルの内容および使用法に関する追加の詳細は下記で提供されるであろう。
ここで図2を参照して、クライアントコンピュータ2について例示的なコンピュータアーキテクチャを説明することができる。図2に示すコンピュータアーキテクチャは、従来のデスクトップまたはラップトップコンピュータを示し、中央演算処理装置5(「CPU」)、ランダムアクセスメモリ9(「RAM」)および読み出し専用メモリ([ROM])11を含むシステムメモリ7、およびメモリをCPU5に結合するシステムバス12を含む。起動中などに、コンピュータ内の要素間で情報を伝送するのを助ける基本的なルーチンが入った基本入力/出力システムはROM11に格納されている。コンピュータ2はさらに、オペレーティングシステム16、アプリケーションプログラム18、およびその他のプログラムモジュールを格納するための大容量記憶装置14を含み、これらについては下記に詳細を記述する。
大容量記憶装置14は、バス12に接続される大容量記憶コントローラ(図示せず)を通じてCPU5に接続される。大容量記憶装置14およびそれに関連するコンピュータ読取可能媒体は、コンピュータ2の不揮発性ストレージを提供する。ここに含まれたコンピュータ読取可能媒体の記述は、ハードディスクドライブまたはCD−ROMドライブなどの大容量記憶装置を指すが、当業者であれば、コンピュータ読取可能媒体は、コンピュータ2によってアクセスすることのできる任意の利用可能な媒体とすることができることを理解するであろう。
一例として、限定ではなく、コンピュータ読取可能媒体は、コンピュータ記憶媒体および通信媒体を備えてもよい。コンピュータ記憶媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールまたはその他のデータなどの情報の格納のために任意の方法または技術で実装された揮発性および不揮発性の媒体、リムーバブルおよび非リムーバブルの媒体を含む。コンピュータ記憶媒体には、これに限定されないが、RAM、ROM、EPROM、EEPROM、フラッシュメモリもしくはその他の固体メモリ技術、CD−ROM、デジタル多用途ディスク(「DVD」)もしくは他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくはその他の磁気記憶装置、または所望の情報を格納するため使用することができ、コンピュータ2によってアクセスすることのできる他の任意の媒体が含まれる。
本発明の各種実施例によれば、コンピュータ2は、インターネットなどのネットワーク8を通じて、リモートコンピュータに対する論理接続を用いてネットワーク化された環境で動作することができる。クライアントコンピュータ2は、バス12に接続されたネットワークインターフェースユニット20を介して、ネットワーク8に接続することができる。ネットワークインターフェースユニット20は、その他の種類のネットワークおよびリモートコンピュータシステムへ接続するのに使用できることが理解される筈である。また、コンピュータ2は、キーボード、マウスまたは電子スタイラス(図1には図示せず)を含むいくつかの他の装置から入力を受取り、処理するため入出力制御装置22を含むこともできる。同様に、入出力制御装置22は、表示画面、プリンタ、またはその他の種類の出力装置に出力を提供することもできる。
上に簡単に記述したように、いくつかのプログラムモジュールおよびデータファイルをコンピュータ2の大容量記憶装置14およびRAM9に格納することができ、それらには、ワシントン州レドモンドのマイクロソフト社のオペレーティングシステムWINDOWS(登録商標) XPなど、ネットワーク化されたパーソナルコンピュータの動作の制御に適したオペレーティングシステム16が含まれる。また、大容量記憶装置14およびRAM9は、1つまたは複数のプログラムモジュールを格納することもできる。詳細には、大容量記憶装置14およびRAM9は、1つまたは複数のアプリケーションプログラム18を格納するもできる。大容量記憶装置14およびRAM9はまた、アプリケーション性能モニタアプリケーションプログラム24を格納することもできる。ここでさらに詳細に記述するように、アプリケーション性能モニタ24は、アプリケーションプログラムの動作を監視し、そのアプリケーションプログラムの部分が無応答であるかどうかを判定するよう動作する。アプリケーションプログラムが無応答であれば、アプリケーション性能モニタ24はさらに、無応答の振る舞いを診断し、修復するためのシステム状態の情報を格納するように動作する。システム状態の情報は、このアプリケーションプログラムの開発者による使用のためにERS10へ送信することができる。
また、大容量記憶装置14およびRAM9は、リモート制御ファイル26を格納することもできる。リモート制御ファイル36の内容を定期的に更新し、ERS10からクライアントコンピュータ2に対して送信することもできる。上に簡単に記述したように、リモート制御ファイル36は、不具合が記録されるべき条件を定義するデータを格納することもできる。詳細には、リモート制御ファイルは、プログラムが無応答であるかを判定するための時間閾値を含むこともできる。また、リモート制御ファイルは、プログラムのある部分が無応答であると識別するときにシステム情報を収集すべきかどうかについての情報と、収集すべき情報の種類に関する情報を含むこともできる。リモート制御ファイル36は他のデータを格納することもでき、また、クライアントコンピュータ2の動作を別の方法で制御するのに使用することができることを理解されたい。リモート制御ファイルの内容および使用に関するさらなる情報は、「コンピュータシステム内で発生するイベントの報告をリモート制御するための方法およびシステム(Method and System for Remotely Controlling the Reporting of Events Occurring within a Computer System)」と題され、参照によってここに組込まれる同時係属の米国特許出願番号10/304,282号に見出すことができる。アプリケーション性能モニタ24の動作に関する追加の詳細は、図3−5に関して以下に提供されることになろう。
ここで図3を参照して、アサートタイマーをコンピュータプログラムの各種セクションに付加するためのプロセスを示すプログラムコードダイアグラムについて説明する。図3に示すように、コンピュータプログラムのセクション40は、プログラムコードの各種セクションを備えることができる。例えば、図3に示すように、セクション40は、プログラムコードセクション46A−46Dから構成されている。これらのセクションは、各種のルーチン、サブルーチン、ファンクション、スレッド、プロセスまたはプログラムコードの任意の部分を備えることができる。
プログラムコードの各種セクションの応答性を判定するために、タイマー(ここでは「アサートタイマー」とも呼ぶ)を作成し、処分するための追加のプログラムコードが、プログラムコードに挿入される。例えば、図3に示すように、アサートタイマーコンストラクタ48Aが、プログラムコードに挿入されている。コンストラクタ48Aはタイマーを作成し、スタートさせる。下記に詳述するように、バックグラウンドプロセスが、タイマーを監視し、タイマーに関連付けられた時間の閾値が満了したかどうかを判定する。プログラムコードの実行によりコンストラクタ48Aに関連付けられたアサートタイマーデストラクタ50Aに達する前にタイマーが満了する場合、バックグランドスレッドがタイマー満了をキャプチャし、システム状態の情報を収集して、タイマーが満了する前にプログラムコードが実行を終了しなかった理由を判定するのを助けることができる。プログラムコードの実行が、タイマーの満了前にデストラクタ50Aに達する場合は、デストラクタ50Aはタイマーを解放する。
図3に示すように、タイマーは、ネストした方法でプログラムのセクションに挿入することができる。例えば、図3に示すように、第1タイマーは、コンストラクタ48Aとデストラクタ50Bの使用を通じてプログラムコードのセクション44の辺りに配置されている。第2タイマーは、コンストラクタ48Bとデストラクタ50Aの使用を通じてプログラムコードのセクション42の辺りに配置されている。第1タイマーは、第2タイマーを完全に包含しているので、第1タイマーは第2タイマーの「親」タイマーと考えることができる。同様に、第2タイマーは、第1タイマーの「子」タイマーと考えることができる。下記に詳述するように、1つのタイマーの満了により親または子のタイマーの満了をも引き起こすことから守るために、各タイマーは、満了した時にその親タイマーまたは子タイマーに通知するように動作することができる。満了したタイマーは、閾値を超えて費やした時間量についての指示を提供することができる。通知されたタイマーは、それで、親タイマーまたは子のタイマーの満了の結果、偽の満了が生じないように、その時間量をその閾値から差し引くことができる。
ここで図4を参照して、コンピュータプログラムの無応答部分を識別するために実行されるプロセスを示す例示的なルーチン400を説明する。ここに提示したルーチンの説明を読む場合に、本発明の各種実施例の論理動作は、(1)コンピュータシステム上で走る一連のコンピュータ実装のアクトまたはプログラムモジュールとして、そして/または(2)コンピュータシステム内の相互接続されたマシン論理回路または回路モジュールとして、実施されることを理解されたい。実装は、本発明を実施するコンピューティングシステムの性能要件に依存した選択の問題である。したがって、図4−5に示す論理動作、およびここに記述した本発明の実施例の構成は、操作、構造デバイス、アクトまたはモジュールとして様々に呼ばれる。当業者であれば、これらの操作、構造デバイス、アクトまたはモジュールは、ソフトウエア、ファームウエア、特別な目的のデジタルロジック、およびそれらの任意の組合せで、ここに記載の請求項に列挙した本発明の精神と範囲から逸脱することなく、実施できることを認識するであろう。
ルーチン400は、オペレーション420で開始し、いくつかの初期化ステップが行われる。詳細には、オペレーション422において、アサートタイマーバックグランドスレッドが作成される。アサートバックグランドスレッドは、タイマーの満了を捕捉し、タイマーの満了に応答して一定の処理を行うように動作する。このように、アサートタイマーバックグランドスレッドは、オペレーション428において初期化され、次いでオペレーション430において待機を開始する。タイマーが満了すると、アサートタイマーバックグランドスレッドはオペレーション432に継続し、ここでタイマーの満了が処理される。タイマーの満了を処理するための例示的なプロセス500は、図5との関連で下記に記述する。オペレーション434から、アサートタイマーバックグランドスレッドはオペレーション434に移動し、ここで待機ループが終了する。
アサートタイマープールもオペレーション424において開始される。アサートタイマープール28(「プール」)は、限定数のタイマー30A−30Hの1つを呼出オブジェクトに割当てるように認可されるオブジェクトを備える。タイマーがプールの中で利用可能な場合は、それが呼出オブジェクトに割当てられる。利用可能なタイマーがない場合は、割当てられないことになる。限定数のタイマーを割当てることにより、多数のタイマーの同時割当てについて考えられうる性能の影響を低減することができる。タイマーの構築に際してタイマーがプールから割当てられ、タイマーの処分に際してプールに戻されることを理解されたい。
無応答性について監視されており、タイマーと共にコード化されたプログラムの実行を、オペレーション402−418に示す。詳細には、オペレーション402において、アサートタイマーのためのコンストラクタに遭遇し、実行される。タイマーを構成するために、いくつかのパラメータを渡すことができる。詳細には、アサートタグ識別子を渡すことができ、これは特定のタイマーを一義的に識別する。タイマー型パラメータも渡すことができ、これはタイマーのために行うタイミングの型、およびそのタイマーに関連付けられたデフォルトの閾値時間を判定する。詳細には、プロセスの実行時間に対して計時するプロセスタイミングを指定することができる。あるいは、呼出スレッドの実行時間に対して計時するスレッドタイミングを指定することもできる。
タイマーが構築され次第、ルーチン400はオペレーション404へと続き、ここで追加の呼出を行ってタイマー方法をリセットして、稼動中のアサートタイマーオブジェクトに実際に戻す。稼動中のアサートタイマーオブジェクトは、リモート制御ファイルをチェックして、オペレーション436において異なる閾値を使用すべきかどうかを判定する。実行の間、稼動中のアサートタイマーオブジェクトは、デストラクタが呼出され、処理される前に閾値時間が遅らされる場合、アラートとともにアサートタイマーバックグランドを呼出すように動作する。このプロセスをオペレーション440に示す。
オペレーション404においてタイマーが稼動し始めると、ルーチン404はオペレーション406へと続き、ここで応答性についてテストされるべきプログラムコードのセクションが実行される。オペレーション406で、計時コード部分の実行の完了に先立って、タイマーが満了する場合、タイマーはアサートタイマーバックグランドスレッドを呼出し、図5に関連して下記に記述する処理が発せられる。そうでなければ、ルーチン400はオペレーション408へと続き、ここでデストラクタ32が処理される。詳細には、オペレーション408で、タイマーが解放されアサートタイマープール28に戻される。
オペレーション408から、ルーチン400はオペレーション410に続き、ここでタイマーが閾値時間に達したことを示すアラートをすでに発したかについて判定が行われる。アラートがすでに発せられているのであれば、ルーチン400はオペレーション416に分岐し、ここでアサートがデバッグモードで発せられる。これは典型的に、条件の発生をアプリケーションの開発者に通知するので、彼らのためにのみ発生される。
オペレーション410において、アラートは発せられていないと判定される場合、ルーチン400はオペレーション412へと続き、ここでタイマーが満了したかどうかについての判定がなされる。タイマーが満了したのであれば、ルーチン400は、オペレーション418に分岐し、ここでルーチンが終了し、アプリケーションプログラムの実行が継続する。オペレーション412で、タイマーが満了したと判定されるのであれば、ルーチン400は、オペレーション414へと続き、ここでアサートタイマーの満了が、図5に関して下記で記述する方法で処理される。この条件は、例えば、タイマーは満了したが、バックグランドスレッドはまだタイマーの満了を処理する機会を得ていない場合に生じる。この場合、デストラクタは、図5に関して下記に説明する満了したタイマーを取扱うためのプロセスを開始する。オペレーション414から、ルーチン400はオペレーション416へと続き、ここで上述のようにアサートがデバッグモードで発せられる。ルーチン400は、次いでオペレーション418へと続き、ここでルーチンは終了し、アプリケーションプログラムの実行が継続する。
ここで図5を参照して、タイマーの満了を処理するための例示的なルーチン500を説明する。ルーチン500はオペレーション502で開始され、ここで、監視しているプログラムセクションの実際の実行時間が、タイマーに関連付けられた閾値より小さいかどうかについて判定がなされる。この計算は、タイマーの満了が、別の原因によるのではなく、プログラムコードのセクションが閾値時間内に実行を完了するのに失敗したことにより実際に生じたことを確実にするために行われる。例えば、プログラムコードのセクションが、メインメモリからバックアップストアにスワップされると、プログラムコードのセクションが閾値時間だけ実行しなかったとしても、タイマーは満了することがある。同様に、モーダルダイアログボックスの存在により、コードのセクションが実行されず、タイマーが満了する原因になることがある。これらの状況がタイマーの満了を生じるのを防止するために、コンピュータプログラムを実行するのに実際に費やされた時間量が、タイマーに関連付けられた閾値より小さいかどうかについて、オペレーション502において、判定がなされる。加えて、モーダルダイアログボックスがユーザに対し表示され、入力を待っているかどうかについて判定を行うことができる。モーダルダイアログボックスが存在する場合、ユーザがダイアログボックスを終了するのを待つのに費やした時間を、実行時間から差し引くことができる。これは、ダイアログボックスがコードの実行を妨げないが、ダイアログボックスが表示されている間、アプリケーションはユーザを待っており、ユーザを待っている間の実行時間は無視されるべきであるという事実のためである。
オペレーション502において、実行時間が閾値より大きいと判定される場合、ルーチン500はオペレーション504に分岐する。オペレーション504で、タイマーに関連付けられたデストラクタが現在実行されているかどうかについて判定がなされる。デストラクタが現在実行されている場合、ルーチン500はオペレーション520に分岐し、そこでタイマーはプール28に返される。デストラクタが実行されていない場合、ルーチン500はオペレーション506へと続き、そこでタイマーのための閾値が、タイマーの閾値からプログラムコードのセクションを実行するのに実際に費やされた時間量を差し引いた量に等しい時間量にリセットされる。次いで、オペレーション508において、プログラムコードのセクションの実行が再開される。
オペレーション502で、実行時間が閾値より小さいと判定される場合、ルーチン500はオペレーション510に分岐し、ここで無応答状態を生じるプログラムコードの診断において役立てるためにメモリダンプが収集されるべきかどうかについて判定が行われる。ダンプが収集されるべきかどうか、またそうであれば、収集されるべきダンプの型はリモート制御ファイル26の中で指定することができる。例えば、多くの場合に、タイマーが満了するとき、イベントのIDおよび非常に基本的なシステム情報など、少量の情報を収集するのみであることが望ましい。これにより、高い頻度で発生するイベントの迅速な判定が可能になる。イベントがさらなる調査を必要とするときは、リモート制御ファイル26の内容を、特定の不具合については完全なメモリダンプを収集するように定義することができる。このようにして、軽量の報告と重量の報告との間での切替が非常に簡単になる。タイマーは、閾値時間を経過した後に直ちに満了するので、ダンプは、監視されているプログラムコードのセクションがその実行を完了したときではなく、満了の時またはその前後に収集されることを理解されたい。
ダンプが収集されない場合、ルーチン500は、オペレーション512からオペレーション512に分岐する。ダンプが収集される場合、ルーチン500はオペレーション512へと続き、そこでメモリダンプが収集される。ルーチン500は次いでオペレーション514へと続き、リモート制御ファイル26の内容を更新するのに使用される情報が更新される。オペレーション514から、ルーチンはオペレーション516へと続き、ここで、メモリダンプが収集されたことを示すフラッグがセットされる。
オペレーション516から、ルーチン500はオペレーション518へと続き、ここで、満了したタイマーの親タイマーおよび子タイマーが、満了について上述の方法で通知される。次いで、ルーチンはオペレーション520へと続き、ここで、タイマーはアサートタイマープール28に返される。ルーチン500は次いでオペレーション522へと続き、ここで終了する。
以上に基づいて、本発明の各種実施例には、コンピュータプログラムの無応答部分を識別するための方法、システム、装置およびコンピュータ読取可能媒体が含まれることを理解されたい。上記の仕様、例およびデータは、本発明の構成の作成および使用について完全な記述を提供している。本発明の精神と範囲を逸脱することなく本発明の多くの実施例を実現することができるので、本発明は、ここに添付する特許請求の範囲に属する。
本発明の各種態様を具体化するために使用されるコンピュータネットワークの態様を示すネットワークの図である。 本発明の各種実施例で使用され、それらにより提供されるコンピュータシステムを示すコンピュータシステムアーキテクチャの図である。 本発明の実施例によるコンピュータプログラムの各種セクションにアサートタイマーを追加するためのプロセスを示すプログラムコードの図である。 コンピュータプログラムの無応答部分を識別するための本発明の各種実施例により提供され、それらで使用されるプロセスを示すフロー図である。 コンピュータプログラムの無応答部分を識別するための本発明の各種実施例により提供され、それらで使用されるプロセスを示すフロー図である。
符号の説明
2 クライアントコンピュータ
5 中央演算処理装置
7 システムメモリ
8 ネットワーク/インターネット
9 ランダムアクセスメモリ
10 エラーを報告するサーバコンピュータ
11 読み出し専用メモリ
12 システムバス
14 大容量記憶装置
16 オペレーティングシステム
18 アプリケーションプログラム
20 ネットワークインターフェースユニット
22 入出力制御装置
24 アプリケーション性能モニタ
26 リモート制御ファイル
40 コンピュータプログラムのセクション
42 コンピュータプログラムのセクション
44 コンピュータプログラムのセクション
46A プログラムコード
46B プログラムコード
46C プログラムコード
46D プログラムコード
48A アサートタイマーコンストラクタ(タイマー1)
48B アサートタイマーコンストラクタ(タイマー2)
50A アサートタイマーデストラクタ(タイマー1)
50B アサートタイマーデストラクタ(タイマー2)

Claims (21)

  1. コンピュータプログラムの無応答部分を識別するための方法であって、
    コンピュータプログラムのセクションの実行の初めにタイマーをスタートさせることと、
    前記コンピュータプログラムのセクションの実行中に前記タイマーが満了するかどうかを判定することと、
    前記コンピュータプログラムのセクションの実行中に前記タイマーが満了することに応答して、前記コンピュータプログラムのセクションを無応答と識別し、前記コンピュータプログラムの診断での使用のためにシステム状態情報を格納することと
    を備えることを特徴とする方法。
  2. 前記システム状態情報は、前記タイマーが満了する時またはその前後に格納されることを特徴とする請求項1に記載の方法。
  3. 前記コンピュータプログラムのセクションを無応答と識別し、システム状態情報を格納することに先立って、
    前記コンピュータプログラムのセクションを実行するのに費やされた時間量が、タイマーに関連付けられた閾値より小さいかどうかを判定することと、
    前記コンピュータプログラムのセクションを実行するのに費やされた時間量が閾値より小さいと判定することに応答して、閾値からコンピュータプログラムを実行するのに費やされた時間量を差し引いた量に等しい時間量の満了の後に満了するように前記タイマーをリセットすることと
    をさらに備えることを特徴とする請求項2に記載の方法。
  4. 前記コンピュータプログラムのセクションを無応答と識別し、システム状態情報を格納することに先立って、
    前記コンピュータプログラムのセクションの実行中にモーダルダイアログボックスが表示されたかどうかを判定することと、
    前記モーダルダイアログボックスが表示されたと判定することに応答して、閾値からモーダルダイアログボックスが表示された時間量を差し引いた量に等しい時間量の満了の後に満了するように前記タイマーをリセットすること
    をさらに備えることを特徴とする請求項2に記載の方法。
  5. 前記タイマーは、1つまたは複数の親タイマーを有し、前記方法は、コンピュータプログラムのセクションの実行中に前記タイマーが満了したと判定することに応答して、前記親タイマーに満了について通知することをさらに備えることを特徴とする請求項2に記載の方法。
  6. 前記タイマーは、1つまたは複数の子タイマーを有し、前記方法は、コンピュータプログラムのセクションの実行中に前記タイマーが満了したと判定することに応答して、前記子タイマーに満了について通知することをさらに備えることを特徴とする請求項5に記載の方法。
  7. 前記タイマーを、限定数のタイマーを割当てるように認可されたタイマープールから得ることをさらに備えることを特徴とする請求項6に記載の方法。
  8. コンピュータプログラムの診断での使用のために格納される前記システム状態情報は、リモート制御ファイルの内容に基づくことを特徴とする請求項1に記載の方法。
  9. 前記リモート制御ファイルは、最小限のデータ収集を行うべきかまたは完全なメモリダンプを行うべきかを定義することを特徴とする請求項8に記載の方法。
  10. コンピュータプログラムの無応答部分を識別するための方法であって、
    アサートタイマーコンストラクタを、応答性についてテストされるべきコンピュータプログラムの部分の前に挿入することと、
    アサートタイマーデストラクタを、応答性についてテストされるべき前記コンピュータプログラムの部分に続いて挿入することと、
    前記コンストラクタを実行してタイマーを得ることと、
    前記タイマーをインスタンス化することと、
    応答性についてテストされるべき前記コンピュータプログラムの部分の実行を始めることと、
    前記コンピュータプログラムの部分の実行の完了に先立って、前記タイマーが満了したかどうかを判定することと、
    前記デストラクタを実行して、前記タイマーを解放することと、
    前記コンピュータプログラムの部分の実行の完了に先立って、前記タイマーが満了したと判定することに応答して、前記コンピュータプログラムのセクションを無応答と識別し、前記コンピュータプログラムの診断での使用のためにシステム状態情報を格納することと
    を備えることを特徴とする方法。
  11. 前記システム状態情報は、前記タイマーが満了する時またはその前後に格納されることを特徴とする請求項10に記載の方法。
  12. 前記タイマーが満了しなかったと判定することに応答して、前記デストラクタを実行して前記タイマーを解放し、前記コンピュータプログラムの実行を継続することをさらに備えることを特徴とする請求項10に記載の方法。
  13. 前記コンストラクタを実行してタイマーを得ることに先立って、限定数のタイマーを割当てるように認可されたタイマープールを初期化し、前記プールから割当てられたタイマーが満了したかどうかを監視し、タイマーが満了したと判定することに応答して満了ルーチンを呼出すためにアサートタイマースレッドをスタートさせることをさらに備えることを特徴とする請求項10に記載の方法。
  14. タイマーを得ることは、前記イベントタイマープールからタイマーを得ることを備えることを特徴とする請求項13に記載の方法。
  15. 前記コンピュータプログラムのセクションを無応答と識別し、システム状態情報を格納することに先立って、
    前記コンピュータプログラムのセクションを実行するのに費やされた時間量が、前記タイマーに関連付けられた閾値より小さいかどうかを判定することと、
    前記コンピュータプログラムのセクションを実行するのに費やされた時間量が、閾値より小さいと判定することに応答して、閾値からコンピュータプログラム実行に費やされた時間量を差し引いた量に等しい時間量の満了の後に満了するように前記タイマーをリセットすることをさらに備えることを特徴とする請求項14に記載の方法。
  16. 前記タイマーは、1つまたは複数の親バックグランドタイマーを有し、前記方法は、前記コンピュータプログラムのセクションの実行中にタイマーが満了したと判定することに応答して、前記親タイマーに満了について通知することをさらに備えることを特徴とする請求項15に記載の方法。
  17. 前記タイマーは、1つまたは複数の子タイマーを有し、前記方法は、前記コンピュータプログラムのセクションの実行中にタイマーが満了したと判定することに応答して、前記子タイマーに満了について通知することをさらに備えることを特徴とする請求項16に記載の方法。
  18. コンピュータ実行可能命令を格納したコンピュータ読取可能媒体であって、コンピュータによって実行されると、
    限定数の待機可能タイマーを割当てるように動作するアサートタイマープールを初期化することと、
    1つまたは複数のアサートタイマーの動作をバックグランドスレッド上で監視し、アサートタイマーが満了したと判定することに応答して、アサートタイマー満了ルーチンを呼出すように動作するアサートタイマースレッドを初期化することと、
    アサートタイマーコンストラクタを呼出して、前記アサートタイマープールからアサートタイマーを得て、前記アサートタイマーをリセットしてアサートタイマーの実行を開始することと、
    前記コンピュータプログラム内のプログラムコードを実行することと、
    前記アサートタイマースレッドにより、前記アサートタイマーが前記プログラムコードの実行中に満了したかどうかを判定することと、
    前記アサートタイマーが前記プログラムコードの実行中に満了したと判定することに応答して、前記アサートタイマー満了ルーチンを呼出すことと
    を前記コンピュータにさせることを特徴とするコンピュータ読取可能媒体。
  19. 前記アサートタイマー満了ルーチンの実行は、
    前記プログラムコードの実行に費やされた時間量が、アサートタイマーに関連付けられた閾値より小さいかどうかを判定することと、
    前記プログラムコードの実行に費やされた時間量が、閾値より小さいと判定することに応答して、閾値から前記プログラムコードの実行に費やされた時間量を差し引いた量に等しい時間量の満了の後に満了するように前記アサートタイマーをリセットすることを備えたことを特徴とする請求項18に記載のコンピュータ読取可能媒体。
  20. 前記アサートタイマー満了ルーチンの実行は、
    前記プログラムコード実行中に費やされた時間量が、閾値より小さくないと判定することに応答して、前記プログラムコードを無応答であると識別し、前記コンピュータプログラムの診断での使用のためにシステム状態情報を格納することをさらに備えたことを特徴とする請求項19に記載のコンピュータ読取可能媒体。
  21. 前記アサートタイマー満了ルーチンの実行は、割当られたアサートタイマーを前記アサートタイマープールに戻すことをさらに備えたことを特徴とする請求項20に記載のコンピュータ読取可能媒体。
JP2005158820A 2004-09-30 2005-05-31 コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置 Pending JP2006107430A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/955,365 US7383470B2 (en) 2004-09-30 2004-09-30 Method, system, and apparatus for identifying unresponsive portions of a computer program

Publications (1)

Publication Number Publication Date
JP2006107430A true JP2006107430A (ja) 2006-04-20

Family

ID=35840052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005158820A Pending JP2006107430A (ja) 2004-09-30 2005-05-31 コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置

Country Status (5)

Country Link
US (1) US7383470B2 (ja)
EP (1) EP1650661A3 (ja)
JP (1) JP2006107430A (ja)
KR (1) KR20060046281A (ja)
CN (1) CN100481021C (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8842555B2 (en) 2005-10-21 2014-09-23 Qualcomm Incorporated Methods and systems for adaptive encoding of real-time information in packet-switched wireless communication systems
US7640412B2 (en) * 2007-01-04 2009-12-29 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for improving the reliability of file systems
US7979674B2 (en) * 2007-05-16 2011-07-12 International Business Machines Corporation Re-executing launcher program upon termination of launched programs in MIMD mode booted SIMD partitions
US7814295B2 (en) * 2007-05-18 2010-10-12 International Business Machines Corporation Moving processing operations from one MIMD booted SIMD partition to another to enlarge a SIMD partition
US7953728B2 (en) * 2007-05-18 2011-05-31 Oracle International Corp. Queries with soft time constraints
US8015180B2 (en) * 2007-05-18 2011-09-06 Oracle International Corp. Queries with hard time constraints
US7831803B2 (en) * 2007-07-19 2010-11-09 International Business Machines Corporation Executing multiple instructions multiple date (‘MIMD’) programs on a single instruction multiple data (‘SIMD’) machine
US8166464B2 (en) * 2008-06-27 2012-04-24 Microsoft Corporation Analysis and detection of soft hang responsiveness program errors
JP5335552B2 (ja) * 2009-05-14 2013-11-06 キヤノン株式会社 情報処理装置、その制御方法、及びコンピュータプログラム
KR101674934B1 (ko) * 2009-07-07 2016-11-10 엘지전자 주식회사 오류 보고 방법 및 장치
US20130096878A1 (en) * 2010-06-24 2013-04-18 Valtion Teknillinen Tutkimuskeskus State inference in a heterogeneous system
US8639991B2 (en) * 2010-12-17 2014-01-28 Sap Ag Optimizing performance of an application
US8549360B2 (en) * 2011-01-07 2013-10-01 International Business Machines Corporation Early collection of diagnostic information
US9389936B2 (en) 2011-09-23 2016-07-12 Microsoft Technology Licensing, Llc. Monitoring the responsiveness of a user interface
KR101338150B1 (ko) * 2011-11-14 2013-12-06 (주)네오위즈게임즈 프로그램의 비정상적 종료에 대한 데이터 제공 및 수집 방법과 그 장치
CN103135518B (zh) * 2011-12-02 2019-11-12 费希尔控制国际公司 程序流控制监控例程、与之相关的方法以及系统
JP6035909B2 (ja) * 2012-06-29 2016-11-30 富士通株式会社 ストレージシステムおよびストレージシステムの制御方法
US9910684B2 (en) * 2013-03-25 2018-03-06 Hewlett Packard Enterprise Development Lp Extensible firmware abstraction
CN103150226A (zh) * 2013-04-01 2013-06-12 山东鲁能软件技术有限公司 计算机模型异常转储与恢复系统及其转储与恢复方法
US9747082B2 (en) * 2014-12-18 2017-08-29 International Business Machines Corporation Optimizing program performance with assertion management
US9823904B2 (en) 2014-12-18 2017-11-21 International Business Machines Corporation Managed assertions in an integrated development environment
US9703552B2 (en) 2014-12-18 2017-07-11 International Business Machines Corporation Assertions based on recently changed code
US9678855B2 (en) 2014-12-30 2017-06-13 International Business Machines Corporation Managing assertions while compiling and debugging source code
US10798146B2 (en) * 2015-07-01 2020-10-06 Oracle International Corporation System and method for universal timeout in a distributed computing environment
US10719427B1 (en) * 2017-05-04 2020-07-21 Amazon Technologies, Inc. Contributed test management in deployment pipelines
CN108363580A (zh) * 2018-03-12 2018-08-03 平安普惠企业管理有限公司 应用程序安装方法、装置、计算机设备和存储介质
US11138198B2 (en) * 2018-10-19 2021-10-05 Oracle International Corporation Handling of unresponsive read only instances in a reader farm system
CN115017004B (zh) * 2021-12-27 2023-07-07 荣耀终端有限公司 进程监控方法及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58192152A (ja) * 1982-05-07 1983-11-09 Hitachi Ltd プロセスの終了監視方式
JPH0271338A (ja) * 1988-09-07 1990-03-09 Nec Corp 情報処理装置
JPH0395634A (ja) * 1989-09-08 1991-04-22 Oki Electric Ind Co Ltd 計算機システム再起動制御方式
JPH03246638A (ja) * 1990-02-23 1991-11-05 Fujitsu Ltd プログラム暴走検出方式
JPH09212389A (ja) * 1996-01-31 1997-08-15 Sumitomo Electric Ind Ltd コンピュータシステムの異常状態検出方法および装置
JPH11272513A (ja) * 1998-03-20 1999-10-08 Fujitsu Ltd ネットワークコンピューティング環境におけるトラブルシューティング装置及びトラブルシューティング方法並びにトラブルシューティングプログラムを記録した記録媒体
JP2002132541A (ja) * 2000-10-25 2002-05-10 Nippon Signal Co Ltd:The 演算処理装置
JP2002215433A (ja) * 2001-01-19 2002-08-02 Mitsubishi Electric Corp メモリダンプ装置

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6133552A (ja) * 1984-07-25 1986-02-17 Nec Corp 情報処理装置
US5341497A (en) * 1991-10-16 1994-08-23 Ohmeda Inc. Method and apparatus for a computer system to detect program faults and permit recovery from such faults
JPH05108418A (ja) * 1991-10-21 1993-04-30 Toshiba Corp プログラム異常検出方式
DE69418916T2 (de) * 1993-02-26 2000-03-23 Denso Corp Multitaskingverarbeitungseinheit
US5485574A (en) * 1993-11-04 1996-01-16 Microsoft Corporation Operating system based performance monitoring of programs
US5590277A (en) * 1994-06-22 1996-12-31 Lucent Technologies Inc. Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US6067412A (en) * 1995-08-17 2000-05-23 Microsoft Corporation Automatic bottleneck detection by means of workload reconstruction from performance measurements
US5812780A (en) * 1996-05-24 1998-09-22 Microsoft Corporation Method, system, and product for assessing a server application performance
JPH1063544A (ja) * 1996-08-20 1998-03-06 Toshiba Corp タイムアウト監視方式
EP1012722B1 (en) * 1997-05-14 2002-08-07 Compuware Corporation Accurate profile and timing information for multitasking systems
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US6205561B1 (en) * 1997-12-11 2001-03-20 Microsoft Corporation Tracking and managing failure-susceptible operations in a computer system
US6425093B1 (en) * 1998-01-05 2002-07-23 Sophisticated Circuits, Inc. Methods and apparatuses for controlling the execution of software on a digital processing system
US6633908B1 (en) * 1998-05-20 2003-10-14 International Business Machines Corporation Enabling application response measurement
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6467052B1 (en) * 1999-06-03 2002-10-15 Microsoft Corporation Method and apparatus for analyzing performance of data processing system
JP2001101033A (ja) * 1999-09-27 2001-04-13 Hitachi Ltd オペレーティングシステム及びアプリケーションプログラムの障害監視方法
US6665758B1 (en) * 1999-10-04 2003-12-16 Ncr Corporation Software sanity monitor
US6745383B1 (en) * 1999-12-29 2004-06-01 Veritas Operating Corporation Early warning mechanism for enhancing enterprise availability
US6618825B1 (en) * 2000-04-20 2003-09-09 Hewlett Packard Development Company, L.P. Hierarchy of fault isolation timers
US6754612B1 (en) * 2000-06-29 2004-06-22 Microsoft Corporation Performance markers to measure benchmark timing of a plurality of standard features in an application program
US6789046B1 (en) * 2000-12-05 2004-09-07 Microsoft Corporation Performance logging solution
US6961928B2 (en) * 2001-10-01 2005-11-01 International Business Machines Corporation Co-ordinate internal timers with debugger stoppage
AU2002351911A1 (en) * 2001-11-07 2003-05-19 Harald Kuck Providing isolation through process attachable virtual machines
US6892331B2 (en) * 2002-01-17 2005-05-10 International Business Machines Corporation Method and system for error detection in a managed application environment
US20030226062A1 (en) * 2002-06-03 2003-12-04 Gender Thomas K. System and method for testing response to asynchronous system errors
US20040040013A1 (en) * 2002-08-26 2004-02-26 Mohit Kalra Time-based breakpoints in debuggers
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7702957B2 (en) * 2004-05-21 2010-04-20 Bea Systems, Inc. Systems and methods for timer service

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58192152A (ja) * 1982-05-07 1983-11-09 Hitachi Ltd プロセスの終了監視方式
JPH0271338A (ja) * 1988-09-07 1990-03-09 Nec Corp 情報処理装置
JPH0395634A (ja) * 1989-09-08 1991-04-22 Oki Electric Ind Co Ltd 計算機システム再起動制御方式
JPH03246638A (ja) * 1990-02-23 1991-11-05 Fujitsu Ltd プログラム暴走検出方式
JPH09212389A (ja) * 1996-01-31 1997-08-15 Sumitomo Electric Ind Ltd コンピュータシステムの異常状態検出方法および装置
JPH11272513A (ja) * 1998-03-20 1999-10-08 Fujitsu Ltd ネットワークコンピューティング環境におけるトラブルシューティング装置及びトラブルシューティング方法並びにトラブルシューティングプログラムを記録した記録媒体
JP2002132541A (ja) * 2000-10-25 2002-05-10 Nippon Signal Co Ltd:The 演算処理装置
JP2002215433A (ja) * 2001-01-19 2002-08-02 Mitsubishi Electric Corp メモリダンプ装置

Also Published As

Publication number Publication date
EP1650661A2 (en) 2006-04-26
US7383470B2 (en) 2008-06-03
US20060075304A1 (en) 2006-04-06
CN100481021C (zh) 2009-04-22
EP1650661A3 (en) 2009-09-09
CN1755648A (zh) 2006-04-05
KR20060046281A (ko) 2006-05-17

Similar Documents

Publication Publication Date Title
JP2006107430A (ja) コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置
US7908521B2 (en) Process reflection
US10061631B2 (en) Detecting unresponsiveness of a process
JP5341295B2 (ja) プログラム実行の不安定の状態に基づくソフトウェアプログラムのカスタム製品のサポートを提供する方法、システムおよび装置
US7716520B2 (en) Multi-CPU computer and method of restarting system
JP4562568B2 (ja) 異常検出プログラムおよび異常検出方法
JP2007157131A (ja) ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス
CN111324423B (zh) 容器内进程的监控方法、装置、存储介质和计算机设备
JP2010086364A (ja) 情報処理装置、動作状態監視装置および方法
JP5623557B2 (ja) 診断データを収集するためのマルチスレッド化コンピューティング環境における方法、装置、およびコンピュータ・プログラム
US20050033952A1 (en) Dynamic scheduling of diagnostic tests to be performed during a system boot process
JP4992740B2 (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
US9348728B2 (en) Trace capture of successfully completed transactions for trace debugging of failed transactions
CN114048099A (zh) Java应用监控方法及装置、存储介质及电子设备
CN115599645B (zh) 一种linux驱动模块稳定性测试方法及装置
JP5133649B2 (ja) 電子機器およびメモリ管理プログラム
CN105589787A (zh) 应用程序的健康检查方法及健康检查系统
JP2002215428A (ja) タスク監視装置、タスク監視方法及びこの方法を記録した記録媒体
CN113704088B (zh) 一种进程追溯方法、进程追溯系统及相关装置
JP2004070458A (ja) 自己診断機能を持つプログラムと、プログラム監視装置及びその方法と、プログラム監視機能を持つプログラム
JP6024742B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体
JP2998793B2 (ja) 情報処理装置の試験方式
JP2002007172A (ja) ストール監視装置及びストール監視方法並びにストール監視プログラムを記録した記録媒体
JP4618245B2 (ja) 予兆診断装置、予兆診断プログラム
JP2006350653A (ja) リアルタイムos

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110506

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110713

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120106