(57)【特許請求の範囲】
【請求項１】
複数の呼び出し単位から構成されるアプリケーションプログラムの動作状況を解析する解析装置において、
所定の周期で割り込みが発生するように制御部を設定する割り込み設定手段と、
対象となる前記アプリケーションプログラムの実行を開始するアプリケーションプログラム実行手段と、
前記アプリケーションプログラムを実行中に前記割り込み設定手段で設定した割り込みが発生した場合には、割り込み発生時、実行中の前記呼び出し単位が呼び出されるまでに経由した全ての前記呼び出し単位を特定する呼び出し情報を前記制御部が備えるメモリのスタックから取得し、既に記憶している前記呼び出し情報と同一のものが存在する場合には既に記憶している前記呼び出し情報を同一パターンにまとめて記憶し、存在しない場合には新たなパターンとして記憶する呼び出し情報取得手段と、
前記アプリケーションプログラムの動作が終了した場合に、前記呼び出し情報取得手段が記憶した前記呼び出し情報で示された全ての前記呼び出し単位の累積的な呼び出し回数を累積カウント数として集計し、前記呼び出し情報で示された最も深いネストに該当する前記呼び出し単位の呼び出し回数を実カウント数として集計する集計手段と、
前記集計手段によって得られた前記各呼び出し単位の名称、前記累積カウント数、および、前記実カウント数を関連付けて表示させる表示手段と、
を備えることを特徴とする解析装置。
【請求項２】
前記表示手段は、前記各呼び出し単位の前記ネストの深さに応じてインデントを行い、前記各呼び出し単位の名称、前記累積カウント数、および、前記実カウント数を関連付けて表示させることを特徴とする請求項１記載の解析装置。
【請求項３】
前記表示手段は、所定の前記ネストよりも浅い前記呼び出し単位に関する情報のみを表示させることを特徴とする請求項２記載の解析装置。
【請求項４】
前記表示手段は、前記累積カウント数または前記実カウント数が所定の値よりも大きい前記呼び出し単位に関する情報のみを表示させることを特徴とする請求項２記載の解析装置。
【請求項５】
所定の情報が入力される入力手段を更に有し、
前記入力手段から、表示が省略された部分を指定する入力があった場合には、前記表示手段は、指定された部分に対応する情報を表示させることを特徴とする請求項３または請求項４記載の解析装置。
【請求項６】
複数の呼び出し単位から構成されるアプリケーションプログラムの動作状況を解析するプログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータを、
所定の周期で割り込みが発生するように制御部を設定する割り込み設定手段、
対象となる前記アプリケーションプログラムを実行中に前記割り込み設定手段で設定した割り込みが発生した場合には、割り込み発生時、実行中の前記呼び出し単位が呼び出されるまでに経由した全ての前記呼び出し単位を特定する呼び出し情報を前記制御部が備えるメモリのスタックから取得し、既に記憶している前記呼び出し情報と同一のものが存在する場合には既に記憶している前記呼び出し情報を同一パターンにまとめて記憶し、存在しない場合には新たなパターンとして記憶する呼び出し情報取得手段、
前記アプリケーションプログラムの動作が終了した場合に、前記呼び出し情報取得手段が記憶した前記呼び出し情報で示された全ての前記呼び出し単位の累積的な呼び出し回数を累積カウント数として集計し、前記呼び出し情報で示された最も深いネストに該当する前記呼び出し単位の呼び出し回数を実カウント数として集計する集計手段、
前記集計手段によって得られた前記各呼び出し単位の名称、前記累積カウント数、および、前記実カウント数を関連付けて表示させる表示手段、
として機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は解析装置および記録媒体に関し、特に、複数の呼び出し単位から構成されるアプリケーションプログラムの動作状況を解析する解析装置およびそのような解析処理をコンピュータに実行させるプログラムが記録されたコンピュータ読み取り可能な記録媒体に関する。
【０００２】
【従来の技術】
近年、コンピュータ等の情報処理装置のハードウエアの進歩に伴って、ハードウエアを動作させるためのソフトウエアも複雑高度化しており、そのデバッグや最適化に必要な労力も増大の一歩を辿っている。
【０００３】
このようなソフトウエア開発を援助するツールとして、ハードウエアやソフトウエアの構成単位にかかる負荷を解析する負荷解析ツールがいくつか存在しているが、これらは大別すると、（１）サンプリングに基づくツールと（２）関数やオブジェクト等の呼び出し単位の呼び出し系列に基づくツールの２種類となる。
【０００４】
前者のサンプリングに基づくツールは、解析対象となるアプリケーションプログラムの実行中に、所定の周期で割り込みを発生し、割り込みが発生した時点で実行中であったアプリケーションプログラムのアドレス情報を取得する。そして、このアドレス情報から実行中の関数を割り出すことにより、各関数がどのような頻度で実行されているかを表示する。
【０００５】
また、後者の呼び出し単位の呼び出し系列に基づくものは、呼び出し単位が例えば関数であるとすると、ある関数が呼び出されてから、その関数の処理を終了して呼び出しを行った他の関数に復帰するまでの時間を計測することにより、各関数の実際の実行時間を表示する。
【０００６】
【発明が解決しようとする課題】
しかし、前者のサンプリングに基づくツールでは、各関数の実行回数を示す情報のみしか得られないため、例えば、所定の関数の実行回数が多い（負荷が高い）場合に、どのような局面において負荷が高くなるかを知ることができず、最適化を行うことが困難であるという問題点があった。
【０００７】
また、後者の関数の呼び出し系列に基づくツールでは、関数が呼び出される度に割り込みを発生して負荷解析のための処理を実行する必要があることから、この処理が大きなオーバーヘッドとなって誤差の原因となるため、正確な測定が困難であるという問題点があった。
【０００８】
本発明はこのような点に鑑みてなされたものであり、必要な情報を収集してユーザに提供することにより、アプリケーションプログラムの最適化等を円滑に行うことを可能とする解析装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明では上記課題を解決するために、複数の呼び出し単位から構成されるアプリケーションプログラムの動作状況を解析する解析装置において、所定の周期で割り込みが発生するように制御部を設定する割り込み設定手段と、対象となる前記アプリケーションプログラムの実行を開始するアプリケーションプログラム実行手段と、前記アプリケーションプログラムを実行中に前記割り込み設定手段で設定した割り込みが発生した場合には、割り込み発生時、実行中の前記呼び出し単位が呼び出されるまでに経由した全ての前記呼び出し単位を特定する呼び出し情報を前記制御部が備えるメモリのスタックから取得し、既に記憶している前記呼び出し情報と同一のものが存在する場合には既に記憶している前記呼び出し情報を同一パターンにまとめて記憶し、存在しない場合には新たなパターンとして記憶する呼び出し情報取得手段と、前記アプリケーションプログラムの動作が終了した場合に、前記呼び出し情報取得手段が記憶した前記呼び出し情報で示された全ての前記呼び出し単位の累積的な呼び出し回数を累積カウント数として集計し、前記呼び出し情報で示された最も深いネストに該当する前記呼び出し単位の呼び出し回数を実カウント数として集計する集計手段と、前記集計手段によって得られた前記各呼び出し単位の名称、前記累積カウント数、および、前記実カウント数を関連付けて表示させる表示手段と、を備えることを特徴とする解析装置が提供される。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の実施の形態の構成例を示すブロック図である。この図に示すように、本発明に係る解析装置１は、割り込み設定手段１ａ、アプリケーションプログラム実行手段１ｂ、記録装置１ｃ、呼び出し情報取得手段１ｄ、集計手段１ｅ、表示手段１ｇ、入力手段１ｆ、および、制御部１ｈによって形成されている。また、解析装置１の外部には、ＣＲＴ（Cathode Ray Tube）モニタ２が接続されている。
【００１２】
割り込み設定手段１ａは、解析対象となるアプリケーションプログラムを実行する際に、所定の周期で割り込みが発生するように制御部１ｈを設定する。
制御部１ｈは、例えば、ＣＰＵ（Central Processing Unit）やメモリ等によって構成されており、アプリケーションプログラムを実際に実行するとともに、装置の各部を制御する。
【００１３】
記録装置１ｃは、解析の対象となるアプリケーションプログラムやオペレーティングシステム（ＯＳ）を記録しており、アプリケーションプログラム実行手段１ｂからの要求に応じて所定の情報を読み出して供給する。また、必要に応じて所定のデータ等を記録する。
【００１４】
アプリケーションプログラム実行手段１ｂは、解析の対象となるアプリケーションプログラムを記録装置１ｃから読み出してその実行を開始する。
呼び出し情報取得手段１ｄは、アプリケーションプログラムが実行されている場合において、このアプリケーションプログラムを構成する呼び出し単位（例えば、関数、オブジェクト、手続、または、サブルーチン等）が呼び出されたときに、制御部１ｈの内部のメモリにスタックされている呼び出し情報を取得する。
【００１５】
なお、この呼び出し情報は、例えば、呼び出し単位が関数である場合には、割り込みが発生した時点において実行中であった関数に至るまでにメイン関数から経由した全ての関数のアドレス情報と、各関数が呼び出された時点の時間を示すタイムスタンプ等によって構成されている。
【００１６】
集計手段１ｅは、呼び出し情報取得手段１ｄが取得した情報を、呼び出しパターン毎に集計する。
入力手段１ｆは、例えば、キーボード等からの情報の入力を受ける。この入力手段１ｆからは、解析の対象となるアプリケーションプログラムを指定するための情報や、ＣＲＴモニタ２の表示形態を変更するための情報が入力される。
【００１７】
表示手段１ｇは、集計手段１ｅによって集計された呼び出し情報を、入力手段１ｆから入力された情報に基づいた所定の表示形式により表示装置２に表示させる。
【００１８】
次に、以上の実施の形態の動作について説明する。
いま、入力手段１ｆから、解析の対象となるアプリケーションプログラムを特定するための情報が入力されたとすると、アプリケーションプログラム実行手段１ｂは、記録装置１ｃから該当するアプリケーションプログラムを取得する。
【００１９】
このとき、割り込み設定手段１ａは、所定の周期（例えば、５００ｍｓｅｃ周期）で割り込みが発生するように制御部１ｈを設定する。その結果、アプリケーションプログラムの実行が開始されると、所定の周期で割り込みが発生することになる。
【００２０】
割り込みが発生すると、呼び出し情報取得手段１ｄは、制御部１ｈの内部にあるメモリ等にスタックされている呼び出し情報を取得する。なお、呼び出し情報は、前述したように、割り込み発生時に実行中の関数が呼び出されるまでにメイン関数から経由した全ての関数のアドレス情報である。例えば、現在、関数「ｓｕｂ７」が実行中であり、この関数に至るまでにメイン関数から経由した関数が、「ｍａｉｎ」、「ｓｕｂ２」、「ｓｕｂ３」、および、「ｓｕｂ５」であるとすると、これら全ての関数に対応するアドレスが呼び出し情報として取得されることになる。なお、このとき、各関数が呼び出された時間を示すタイムスタンプも同時に取得される。
【００２１】
集計手段１ｅは、取得された呼び出し情報を、そのパターンに応じて分類する。即ち、関数の呼び出しパターンの種類はある程度限られているので、呼び出し情報をパターン毎に分類することにより情報量を減少させる。
【００２２】
例えば、現在実行中の関数（割り込みが発生した関数）が「ｓｕｂ５」である場合に、この関数に至るまでにメイン関数から経由した関数が、「ｍａｉｎ」、「ｓｕｂ２」、および、「ｓｕｂ３」である場合には、前述した呼び出し情報の場合と比較すると「ｓｕｂ５」が含まれていないことになるが、この「ｓｕｂ５」の処理前（または、「ｓｕｂ５」の処理後）に割り込みが発生したと考えられることから、前述の場合と同様のパターンであると判定されることになる。
【００２３】
以上のような処理は、制御部１ｈがアプリケーションプログラムを実行している間中繰り返し実行される。
そして、制御部１ｈによるアプリケーションプログラムの実行が終了すると、割り込み設定手段１ａは、割り込みの発生を停止させる。また、集計手段１ｅは、パターン毎に分類された呼び出し情報に含まれているアドレス情報を参照して、各関数の累積的な呼び出し回数である累積カウント数と、各関数が各呼び出し情報の最後に含まれている回数である実カウント数とを算出する。
【００２４】
例えば、ある呼び出し情報に含まれている関数が「ｍａｉｎ」、「ｓｕｂ２」、および、「ｓｕｂ３」であるとし、これらの関数の累積カウント数をそれぞれ、ａｃｍ、ａｃ２、および、ａｃ３とし、また、これらの関数の実カウント数をそれぞれｒｃｍ、ｒｃ２、および、ｒｃ３とすると、以上の呼び出し情報に対する累積カウント数と実カウント数は、ａｃｍ＝ａｃ１＝ａｃ２＝ａｃ３＝１となり、ｒｃｍ＝ｒｃ１＝ｒｃ２＝０となり、また、ｒｃ３＝１となる。
【００２５】
集計手段１ｅは、以上のような処理を繰り返すことにより、各関数の累積カウント数および実カウント数を算出する。
表示手段１ｇは、集計手段１ｅによって集計された各関数に対する累積カウント数と、実カウント数とを取得するとともに、その関数の関数名を記録装置１ｃから取得して、これらを関連づけする。
【００２６】
関連づけが終了すると、表示手段１ｇは、各パターンをそのネストの深さに応じてインデントしつつ、ＣＲＴモニタ２に表示させる。図２は、このような処理の結果としてＣＲＴモニタ２に表示される表示画面の一例である。
【００２７】
この表示例では、「解析結果表示」と題されたウィンドウ２０が表示されており、このウィンドウ２０内に集計手段１ｅによって集計された情報が表示されることになる。
【００２８】
ウィンドウ２０の右上に表示されている、ボタン２０ａ〜２０ｃは、このウィンドウ２０を縮小、拡大、または、終了する場合にそれぞれ操作される。
表示領域２０ｄには、集計手段１ｅによって集計された情報が表示される。例えば、この表示例の第１行目に表示されている「＜００＞ｍａｉｎ［ａ０，ｂ０］」の場合では、＜＞内の数字“００”は、この関数のネストの深さが“０”であることを示している。また、その次の「ｍａｉｎ」は、関数名を示している。更に、［］内の変数ａ０，ｂ０は、それぞれ、累積カウント数と実カウント数とを示している。
【００２９】
第２行目に表示されている「＜０１＞ｓｕｂ１［ａ１，ｂ１］」は、ネストの深さが“１”であり、関数名が「ｓｕｂ１」であり、更に、累積カウント数と実カウント数とがそれぞれａ１，ｂ１であことが表示されている。なお、各行の行頭は、そのネストの深さに応じてインデントされているので、アプリケーションプログラムが構造化されている場合に、各関数の対応関係を把握することが容易となる。
【００３０】
また、ウィンドウ２０の右端に表示されているスライダ２０ｅ、または、ボタン２０ｆ，２０ｇを適宜操作することにより、表示領域２０ｄに表示される内容がスクロールすることになるので、ユーザは所望の範囲を自由に選択して参照することが可能となる。
【００３１】
次に、図３を参照して、以上の処理を実現するために、図１に示す実施の形態において実行される処理の一例について説明する。図３に示すフローチャートが開始されると、以下の処理が実行されることになる。
［Ｓ１］入力手段１ｆから、解析対象となるアプリケーションプログラム名が入力される。
［Ｓ２］入力手段１ｆから、割り込み周期を変更することを指示する情報が入力された場合には、割り込み周期の設定を変更する。
【００３２】
なお、割り込み周期の設定が変更されない場合には、割り込み周期はデフォルト値（例えば、５００ｍｓ）に自動的に設定される。
［Ｓ３］入力手段１ｆからアプリケーションプログラムの実行を指示する情報が入力されたか否かを判定し、入力された場合にはステップＳ４に進み、それ以外の場合にはステップＳ３に戻って同様の処理を繰り返す。
［Ｓ４］アプリケーションプログラム実行手段１ｂは、記録装置１ｃから指定されたアプリケーションプログラムを取得し、制御部１ｈに供給してその実行を開始させる。
［Ｓ５］割り込みが発生した場合にはステップＳ６に進み、それ以外の場合にはステップＳ７に進む。
［Ｓ６］割り込み処理を実行する。なお、この処理の詳細については図４を参照して後述する。
［Ｓ７］アプリケーションプログラムの実行が終了したか否かが判定され、終了した場合にはステップＳ８に進み、それ以外の場合にはステップＳ５に戻る。
［Ｓ８］集計手段１ｅは、割り込み処理によって取得された呼び出し情報を集計する集計処理を実行する。
【００３３】
なお、この処理の詳細は、図５を参照して後述する。
［Ｓ９］表示手段１ｇは、集計手段１ｅによって集計された情報を、ＣＲＴモニタ２に対して供給して表示させる。
【００３４】
次に、図４を参照して図３に示す「割り込み処理」の詳細について説明する。図４に示すフローチャートが開始されると、以下の処理が実行されることになる。
［Ｓ２０］呼び出し情報取得手段１ｄは、その時点（割り込みが発生した時点）において、制御部１ｈがアプリケーションプログラムを実行する際に、関数の戻り先情報としてメモリにスタックしている呼び出し情報を取得する。
［Ｓ２１］呼び出し情報取得手段１ｄは、既に取得している呼び出し情報の中から、ステップＳ２０において取得した呼び出し情報と同一パターンを有するものを検索する。
［Ｓ２２］ステップＳ２１における検索の結果、同一パターンを有する呼び出し情報が既に存在している場合にはステップＳ２３に進み、それ以外の場合にはステップＳ２４に進む。
［Ｓ２３］ステップＳ２０において取得した呼び出し情報を、既に記憶している他の同一パターンとまとめて記憶する。そして、もとの処理へ復帰（リターン）する。
［Ｓ２４］ステップＳ２０において取得した呼び出し情報を、新たなパターンとして記憶する。そして、もとの処理へ復帰（リターン）する。
【００３５】
次に、図５を参照して図３に示す「集計処理」の詳細について説明する。図５に示すフローチャートが開始されると、以下の処理が実行されることになる。
［Ｓ４０］集計手段１ｅは、制御部１ｈからアプリケーションプログラムを構成する関数名とそのアドレスとを取得する。
［Ｓ４１］ステップＳ４０において取得した各関数毎に、累積カウント数を格納する変数ａｘと、実カウント数を格納する変数ｂｘとを準備する。
［Ｓ４２］処理回数をカウントする変数ｉと変数ｊの値を“１”に初期設定する。
［Ｓ４３］第ｉ番目のパターンを取得する。例えば、ｉ＝１である場合には、第１番目のパターンに属する全ての関数を取得する。
［Ｓ４４］ステップＳ４３において取得した各関数に対応する変数（第ｉ番目のパターンに含まれている変数ａｘ，ｂｘ）を準備する。
［Ｓ４５］集計手段１ｅは、第ｊ番目の呼び出し情報を、呼び出し情報取得手段１ｄから取得する。
［Ｓ４６］ステップＳ４５において取得した呼び出し情報に含まれている関数を全て取得する。
［Ｓ４７］ステップＳ４６において取得した全ての関数に対応する変数ａｘの値をそれぞれ１だけインクリメントする。
［Ｓ４８］ステップＳ４５において取得した呼び出し情報の最後に含まれている関数（最もネストが深い関数）を取得する。
［Ｓ４９］ステップＳ４８において取得した関数に対応する変数ｂｘの値を１だけインクリメントする。
［Ｓ５０］第ｉ番目のパターンにおいて、未処理の呼び出し情報があるか否かが判定され、未処理の呼び出し情報がある場合にはステップＳ５１に進み、それ以外の場合にはステップＳ５２に進む。
［Ｓ５１］変数ｊの値が１だけインクリメントされステップＳ４５に戻る。
［Ｓ５２］未処理のパターンがあるか否かが判定され、未処理のパターンがある場合にはステップＳ５３に進み、それ以外の場合にはもとの処理に復帰（リターン）する。
［Ｓ５３］変数ｉの値が１だけインクリメントされ、ステップＳ５４に進む。
［Ｓ５４］変数ｊの値を“１”に設定してステップＳ４３に戻る。
【００３６】
以上の処理によれば、解析の対象となるアプリケーションプログラムが実行された場合には、所定の周期で割り込みを発生して呼び出し情報を収集し、アプリケーションプログラムの実行が終了後に、呼び出し情報から各関数の累積カウント数と実カウント数とを算出してＣＲＴモニタ２に出力することが可能となる。
【００３７】
このように、本発明によれば、解析の対象となるアプリケーションプログラムを実行中に、所定の周期で割り込みを発生させるとともに、割り込み発生時には、メイン関数からその時点において実行中の関数に至るまでの関数のアドレスによって構成される呼び出し情報を取得し、パターン毎に分類して保存しておく。そして、アプリケーションプログラムの実行が終了すると、各関数の累積カウント数および実カウント数を算出し、所定の表示形式により表示するようにしたので、従来のサンプリングに基づくツールに比較して、詳細な情報を取得することが可能となる。即ち、従来のサンプリングに基づくツールの場合では、割り込み発生時に取得される情報は、その時点において実行されていた関数に関する情報（例えば、関数のアドレス）のみであり、一方、本発明の場合ではその時点において実行されている関数のみならず、メイン関数からその関数に至るまでの全ての関数に関する情報（スタック情報）が取得されるので、従来の場合に比較して詳細な情報を提供することができる。
【００３８】
また、従来の関数の呼び出し系列に基づくツールでは、関数が呼び出される度に割り込みを発生して負荷解析のための処理を実行する必要があることから、この処理が大きなオーバヘッダとなり、誤差の原因となる場合があったが、本発明の場合、割り込み発生の周期を適宜設定することにより、情報の詳細度を犠牲にする代わりに誤差の発生を抑制したり、情報の詳細度を向上させる代わりに誤差の発生を犠牲にする等、ユーザの目的に応じた設定が可能となる。
【００３９】
更に、関数の呼び出し情報が、パターン毎に分類されて表示されるので、ある関数の負荷が高い場合に、どのような呼び出しパターン時に負荷が高くなるのかを特定することが可能となることから、アプリケーションプログラムの最適化を円滑に行うことが可能となる。
【００４０】
次に、図６を参照して、ＣＲＴモニタ２に対する表示形式を変更した場合の表示例について説明する。
例えば、入力手段１ｆから、ＣＲＴモニタ２に表示されるネストの深さを０〜２までに限定する旨の情報が入力されたとする。その場合、表示手段１ｇは、集計手段１ｅによって集計されて得られた情報をＣＲＴモニタ２に出力する際に、ネストの深さが３以上に該当する関数についての情報は出力しない。その結果、図６に示す画面がＣＲＴモニタ２に表示される。
【００４１】
図６に示す表示例では、図２の場合と比較して、表示領域２０ｄに表示されている情報のうち、ネストが３以上に該当する情報については表示されていない。例えば、図２の第４行目に表示されている関数「ｓｕｂ３」は、図６では表示されていない。また、その前の行の最後には、マーク「＊」が付加されており、それに続く関数が省略されていることが示されている。
【００４２】
このような表示画面において、例えば、第６行目の最後に表示されているマーク「＊」がカーソル２５によって指定されたとすると、図７に示すように、ダイアログボックス３０がＣＲＴモニタ２に追加的に表示され、省略されている情報を参照することが可能となる。この例では、「詳細表示」と題されたダイアログボックス３０が表示されており、その表示領域３０ｂには、ウィンドウ２０において指定されたマーク「＊」の次に表示されるべき情報が表示されている。
【００４３】
このような表示形式にすることにより、アプリケーションプログラムに含まれている関数の数が多い場合には、ネストが浅い情報のみを表示させておき、必要な場合にのみ省略された情報を適宜表示させることが可能となるので、作業を効率的に行うことが可能となる。
【００４４】
なお、ネストの深さによって表示する情報を制限するのではなく、例えば、関数の累積カウント数または実カウント数が所定の値を超えるもののみを表示させるようにしてもよい。そのようにすることにより、呼び出し回数が頻繁な関数のみを画面上に表示させることが可能となるので、主要な情報のみを参照することが可能となる。
【００４５】
以上の表示例では、解析結果をテキスト情報として画面上に表示するようにしたが、図８に示すようにチャート形式で表示するようにしてもよい。
図８に示す表示例では、「時系列表示」と題されたウィンドウ４０が表示されている。ウィンドウ４０の右上には、このウィンドウ４０を、縮小、拡大、終了する場合に操作されるボタン４０ａ〜４０ｃが表示されている。
【００４６】
表示領域４０ｄの横軸はアプリケーションプログラムの実行が開始されてからの経過時間を示し、縦軸はアプリケーションプログラムを構成する各関数が示されている。また、表示領域４０ｄ内に示されている矢印は、その関数が実行されていた期間を示している。
【００４７】
表示領域４０ｄの右側に具備されたスライダ４０ｅおよびボタン４０ｆ，４０ｇは、表示領域４０ｄに表示されている内容を上下方向にスクロールする場合に操作される。また、表示領域４０ｄの下側に具備されたスライダ４０ｈおよびボタン４０ｉ，４０ｊは、表示領域４０ｄに表示されている内容を左右方向にスクロールする場合に操作される。
【００４８】
ところで、図８に示すような表示を行う場合には、各関数が呼び出された時間に関する情報も必要となるが、これは、前述した、呼び出し情報取得手段１ｄが取得したタイムスタンプを使用することによって可能となる。
【００４９】
即ち、各関数のアドレス情報には、タイムスタンプが関連付けられて記憶されていることから、取得されたアドレス情報をタイムスタンプの時間が古い順に並べ替え、アドレス情報に応じた位置に矢印を表示するようにすれば、図８に示す図を得ることができる。
【００５０】
なお、図８に示す画面において、図９に示すように所定の矢印をカーソル２５によって指定すると、その部分に対応する詳細な情報が記載されたダイアログボックスが表示されることになる。この例では、関数「ｓｕｂ１」の最初の矢印の中央部分がカーソル２５によって指定された結果、「詳細情報（ｓｕｂ１）」と題されたダイアログボックス５０が表示されており、関数「ｓｕｂ１」に対する呼び出しを行った他の関数の一覧が表示されている。即ち、関数「ｓｕｂ１」が実行される迄には、先ず、関数「ｓｕｂＤ」が呼び出され、続いて、関数「ｓｕｂＣ」、「ｓｕｂＢ」、「ｓｕｂＡ」が順次呼び出された後、関数「ｓｕｂ１」が呼び出されている。
【００５１】
以上に説明したように、図８および図９に示す表示形態によれば、取得された呼び出し情報をチャート形式で表示するようにしたので、時系列的な動作を理解しやすい表示形式にて取得した情報を表示することができる。なお、本発明の実施の形態においては、割り込みが発生する度に呼び出し情報を取得する構成であるため、割り込みの周期が長い場合には情報が欠落することもあり得るが、プログラム中では同一のパターンによる呼び出しが繰り返される場合が多いことから、欠落した部分の情報は他の部分において補うことが可能な場合が多く、情報欠落に起因する影響は僅少である。
【００５２】
以上の実施の形態では、単一のアプリケーションプログラムが実行されている場合を例に挙げて説明を行ったが、制御部１ｈが複数のＣＰＵを有しており、複数のアプリケーションプログラムが並列に実行される場合に対しても本発明を適用することが可能である。なお、１つのアプリケーションプログラムが複数のプロセッサに分担されて実行される場合にも同様に本発明を適用することができる。
【００５３】
制御部１ｈが複数のＣＰＵを有している場合には、各ＣＰＵ単位で割り込みを発生し、呼び出し情報取得手段１ｄが各ＣＰＵから呼び出し情報を取得することになる。取得された呼び出し情報は、集計手段１ｅによって各ＣＰＵ毎に集計された後、表示手段１ｇに供給される。
【００５４】
表示手段１ｇは、集計手段１ｅによって集計された複数のＣＰＵに関する情報を、ＣＲＴモニタ２に対して並べて表示させる。その結果表示される画面を図１０に示す。この表示例では、「解析結果表示」と題されたウィンドウ６０が表示されている。ウィンドウ６０の右上には、このウィンドウ６０を縮小、拡大、または、閉じる場合に操作されるボタン６０ａ〜６０ｃが表示されている。表示領域６０ｄには、第１のＣＰＵにおいて実行されたプロセス０（この例では、アプリケーションプログラム０）に関する情報が表示されている。また、表示領域６０ｅには、第２のＣＰＵにおいて実行されたプロセス１に関する情報が表示されている。
【００５５】
なお、この表示例では、プロセス０およびプロセス１に関する情報のみを表示しているが、ウィンドウ６０の下部に表示されているスライダ６０ｉまたはボタン６０ｊ，６０ｋを適宜操作して画面を横方向にスクロールさせることにより、所望のプロセスに関する情報を参照することが可能となる。
【００５６】
また、スライダ６０ｆまたはボタン６０ｇ，６０ｈを適宜操作して画面を上下方向にスクロールさせることにより、表示されている情報の所定の範囲を参照することが可能となる。
【００５７】
なお、このような表示画面において、所定の項目がカーソル２５によって選択された場合には、図１１に示すようなダイアログボックス８０が表示され、指定された項目が実行されている場合における各ＣＰＵの負荷の分布に関する情報が表示されることになる。
【００５８】
この表示例では、表示領域８０ｂには、ＣＰＵの番号が表示されており、また、表示領域８０ｃには、平均値である７０％を中心とした棒グラフによって各ＣＰＵの負荷率が示されている。更に、表示領域８０ｄには平均値７０％を基準とした偏差が表示されている。
【００５９】
なお、以上の表示例では、棒グラフによって負荷の分布を示すようにしたが、図１２に示すように、数値によって表示するようにしてもよい。この表示例では、カーソル２５による表示項目の指定に対応して、ダイアログボックス９０が表示されている。このダイアログボックス９０の表示領域９０ｂには、ＣＰＵの番号が表示されており、表示領域９０ｃには負荷率が数値によって表示されている。更に、その右隣りの表示領域９０ｄには、各ＣＰＵにおけるサンプル数が表示されている。
【００６０】
次に、図１３を参照して、各ＣＰＵから取得された呼び出し情報を、チャート形式で表示する場合の表示例について説明する。
この表示例では、「時系列表示」と題されたウィンドウ１００が表示されている。ウィンドウ１００の右上部には、ウィンドウを縮小、拡大、または、閉じる場合に操作されるボタン１００ａ〜１００ｃが表示されている。
【００６１】
表示領域１００ｄには、第１のＣＰＵが実行するプロセス０に関する情報が表示されている。また、表示領域１００ｅには第２のＣＰＵが実行するプロセス１に関する情報が表示されている。
【００６２】
この表示例では、第１および第２のＣＰＵが実行するプロセスに関する情報のみが表示されているが、ボタン１００ｆまたはボタン１００ｇを適宜操作して画面をスクロールさせることにより、所定のプロセスに関する情報を参照することが可能となる。また、スライダ１００ｈまたはボタン１００ｉ，１００ｊを操作することにより、表示領域１００ｄに表示される情報の範囲を選択することができる。同様に、スライダ１００ｋまたはボタン１００ｌ，１００ｍを操作することにより、表示領域１００ｅに表示される情報の範囲を選択することができる。更に、スライダ１００ｎまたはボタン１００ｏ，１００ｐを操作することにより、表示領域１００ｄおよび表示領域１００ｅに表示される情報の範囲を選択することができる。
【００６３】
なお、このような表示例において、所定の矢印が指定された場合には、図９に示すように詳細な情報が表示されるようにしてもよい。
以上に示すように、複数のＣＰＵにおいてプロセスが並列的に実行されている場合においても、本発明を適用することが可能であり、従来のツールに比較して、オーバーヘッドを少なくすることが可能であるので、誤差の少ない解析を行うことが可能となる。
【００６４】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、解析装置が有すべき機能の処理内容は、コンピュータで読み取り可能な記録媒体に記録されたプログラムに記述されており、このプログラムをコンピュータで実行することにより、上記処理がコンピュータで実現される。コンピュータで読み取り可能な記録媒体としては、磁気記録装置や半導体メモリ等がある。
【００６５】
市場に流通させる場合には、ＣＤ−ＲＯＭ(Compact Disk Read Only Memory) やフロッピーディスク等の可搬型記録媒体にプログラムを格納して流通させたり、ネットワークを介して接続されたコンピュータの記憶装置に格納しておき、ネットワークを通じて他のコンピュータに転送することもできる。コンピュータで実行する際には、コンピュータ内のハードディスク装置等にプログラムを格納しておき、メインメモリにロードして実行するようにすればよい。
【００６６】
【発明の効果】
以上説明したように本発明では、関数の呼び出し情報が、パターン毎に分類されて表示されるので、ある関数の負荷が高い場合に、どのような呼び出しパターン時に負荷が高くなるのかを特定することが可能となることから、アプリケーションプログラムの最適化を円滑に行うことが可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態の構成例を示すブロック図である。
【図２】図１に示す実施の形態のＣＲＴモニタに表示される解析結果表示画面の表示例である。
【図３】図１に示す実施の形態において実行される処理の一例を説明するフローチャートである。
【図４】図３に示す「割り込み処理」の詳細を説明するフローチャートである。
【図５】図３に示す「集計処理」の詳細を説明するフローチャートである。
【図６】図１に示す実施の形態のＣＲＴモニタに表示される解析結果表示画面の他の表示例である。
【図７】図６に示す表示画面において、マーク「＊」が選択された場合に表示されるダイアログボックスの表示例である。
【図８】図１に示す実施の形態のＣＲＴモニタに表示される解析結果表示画面の更に他の表示例である。
【図９】図８に示す表示画面において、所定の矢印が指定された場合に表示されるダイアログボックスの表示例である。
【図１０】解析対象が並列プログラムである場合における解析結果表示画面の表示例である。
【図１１】図１０に示す画面において、所定の項目が選択された場合に表示されるダイアログボックスの表示例である。
【図１２】図１０に示す画面において、所定の項目が選択された場合に表示されるダイアログボックスの他の表示例である。
【図１３】解析対象が並列プログラムである場合における解析結果表示画面の他の表示例である。
【符号の説明】
１  解析装置
１ａ  割り込み設定手段
１ｂ  アプリケーションプログラム実行手段
１ｃ  記録装置
１ｄ  呼び出し情報取得手段
１ｅ  集計手段
１ｆ  入力手段
１ｇ  表示手段
２  ＣＲＴモニタ
【図１】
0003838804.tif 000002
【図２】
0003838804.tif 000003
【図３】
0003838804.tif 000004
【図４】
0003838804.tif 000005
【図５】
0003838804.tif 000006
【図６】
0003838804.tif 000007
【図７】
0003838804.tif 000008
【図８】
0003838804.tif 000009
【図９】
0003838804.tif 000010
【図１０】
0003838804.tif 000011
【図１１】
0003838804.tif 000012
【図１２】
0003838804.tif 000013
【図１３】
0003838804.tif 000014