(57)【要約】      （修正有）【課題】ワイヤレスデバイスのリアルタイム性に適用する診断手法を提供する。【解決手段】リアルタイムの環境において診断エンジンを常駐させてシステムの正常時に待ち状態に置き、システムにイベント例えばキー入力、プロセスの起動・終了、音声通信やデータ通信の接続・切断などがあったときに待ち状態にある診断エンジンの一部を起動し発生したイベント、リソースの利用状態、プロセスの履歴と動作状態などの情報を記録してシステムを監視し、システムに不具合が起きたときに診断エンジンを部分的に起動し、これまで収集した診断データを用いて、発生した不具合を診断し、診断結果を診断サーバに送り、診断データベースに登録し、携帯電話事業者と携帯電話メーカに発生した不具合を分析する情報を提供する。【選択図】図１
2007068135.tif 000002
【特許請求の範囲】
【請求項１】
少なくともひとつのプロセッサとひとつのソフトウェア・アプリケーションをもち、中に搭載するプロセッサとリアルタイム・オペレーティングシステムによってワイヤレスデバイスを診断するワイヤレスデバイスと、リアルタイムの環境においてワイヤレスデバイスを診断するエンジンと、診断結果を通知するためにワイヤレスネットワークを通してワイヤレスデバイスと接続できる遠隔地に置かれる診断データベースから構成するワイヤレスデバイス診断システム。
【請求項２】
請求項１に記載するワイヤレスデバイス上で起きる不具合をワイヤレスデバイスのリアルタイム性に影響せずに診断するメソッド。本メソッドは、診断エンジンをワイヤレスデバイス上でシステムの正常時にスリープ状態にさせ、システムに不具合が発生した時にスリープしている診断エンジンを喚起してた直ちに発生した不具合を診断する。
【請求項３】
請求項１に記載するワイヤレスデバイス上でリアルタイムの環境においてシステムの正常時に診断エンジンをスリープさせるメソッド。本メソッドは、システムが正常である時に診断エンジンを常に動かしてシステムの状態を監視するのでなく、マルチタスクの中に診断エンジンを寝かせ、システムに不具合が発生した時に寝かせている診断エンジンを喚起して不具合を診断し、診断が終ったら再び診断エンジンを寝かせる。
【請求項４】
請求項１に記載するワイヤレスデバイス上でシステムに不具合が発生した時に寝かせている診断エンジンを喚起するメソッド。本メソッドは、ワイヤレスデバイス上でシステムに不具合が発生した時又は発生しようとする時に不具合が発生する際のイベント又はシグナルによって寝ている診断エンジンを起こして発生した不具合を診断し、発生しようとする不具合である場合に不具合の発生を回避する。
【請求項５】
請求項１に記載するワイヤレスデバイス上でシステムに発生した不具合を診断するために必要となるあらゆる診断データをシステムのリアルタイム性に影響せずに収集するメソッド。本メソッドは、ワイヤレスデバイス上で発生する不具合に関わるシステムの環境において不具合の診断に必要となるシステムリソースの利用状態、発生したすべてのイベント、起動したすべてのプロセス、呼び出した関数の軌跡、システムの設定パラメータ等の診断データをシステムのリアルタイム性に影響せずに収集する。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ワイヤレスデバイス上でリアルタイム環境においてシステムに起きる不具合を診断する方法と、システムの正常時に寝かせて不具合が発生した時に喚起させる診断エンジンと、診断エンジンを用いて不具合の回避と診断を行う機能を持つワイヤレスデバイスおよびワイヤレスデバイスの診断と復旧を実施するシステムに関するものである。
【背景技術】
【０００２】  近年、携帯電話上で例えば音声、テレビ電話、チャットメール、チャットメッセンジャー、メディアプレイヤー、ゲームなどのさまざまなリアルタイム性の強いアプリケーションを実装して、数多くのアプリケーションが高負荷の状態で動作し、例えばＣＰＵやメモリなどの多くのシステムリソースを用いてシステムの状態を監視する時又はシステムに発生した不具合を診断する時に、システムのリアルタイム性に影響しない有効的手法がないため、走っているリアルタイム性の強いアプリケーションが止まったり、反応が遅くなることと、止まったアプリケーション又は反応が遅くなったアプリケーションに対して発生するイベントが届かなくなることと、システムの不具合を診断するソフトウェアによってシステムに新たな問題を起こすことなどの問題がある。【０００３】  ワイヤレスデバイス上で発生する不具合を特定するために利用する従来のデバッグ手法例えば開発段階で利用しているデバッグ手法は、ソースコードの中にチェックしたいポイントにログメッセージを出力するスタブを入れてログメッセージを出力し、出力したログメッセージをチェックして不具合を特定していく。不具合を特定することができない場合には繰り返してソースコードの中に更なる多くのスタブを入れて、もっとたくさんのログメッセージを出力する。この手法では、システムのリアルタイム性に影響するためにスタブを入れたままで製品版のワイヤレスデバイスを出荷することができないので、開発用のデバッグが終った後に入れたスタブを外して再び同じシステム結合試験を行う必要がある。【０００４】  ワイヤレスデバイス上で複雑な実行環境において発生した不具合を特定するために単なるログメッセージを用いることでは不十分である。発生した不具合は、システムの利用状況、走っているアプリケーションの状態、利用者の操作手順、各種のシステム設定情報、ネットワークの通信状態等に関わるため、これらの情報を利用しなければ、診断が困難である。【０００５】  また、システムがパニックになった時にパニックの場所と原因を特定するにログメッセージは役に立たない。システムパニックとは、システムリセットとシステムフリーズがある。システムパニックが発生した時にログメッセージを出力することができなくなり、パニックが発生するまでの軌跡をたどることが困難である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】  上述のように、現状では、ワイヤレスデバイス上でシステムのリアルタイム性に影響しないシステム監視手法と、診断データ収集手法と不具合診断手法がないために、不具合の発生場所と原因を特定することが困難であり、回避できる不具合が繰り返して発生し、携帯電話事業者と携帯電話メーカは発生した不具合に対して迅速な対応ができないので携帯電話利用者に十分に満足できるサービスを提供することができない。【０００７】  そこで、本発明は、ワイヤレスデバイス上でシステムのリアルタイム性に影響しないためにシステムの正常時に診断エンジンを寝かせる手法と、システムに不具合が発生する時に寝ている診断エンジンを喚起する手法と、不具合を診断するために必要となる各種の診断データを収集する手法と、収集した診断データを用いて不具合を診断する手法、これらの手法を実現したワイヤレスデバイスを提供することを目的とする。
【課題を解決するための手段】
【０００８】  本発明によるワイヤレスデバイスは、リアルタイム環境においてシステム不具合の診断エンジンを備えた携帯電話機であって、システムの正常時にシステムの状態を監視することができる診断エンジンを寝かせる手段と、システムに異常又は不具合が発生した時に寝かせている診断エンジンを喚起する手段と、起こした診断エンジンによってシステムの不具合を診断するために必要なデータを収集する手段と、収集したデータを分類・解析して必要な診断データを提供する手段を有することを特徴とする。【０００９】  システムの正常時にシステムの状態を監視することができる診断エンジンを寝かせる手段は、診断エンジンをシステム部とユーザ部の二つに分けて、システム部をオペレーティングシステムが走るカーネルスペースに常駐させ、ユーザ部をアプリケーションが走るユーザスペースに常駐させる。診断エンジンのシステム部は、システムの状態やプロセスの状態を監視し、診断エンジンのユーザ部は、診断データを収集し、収集したデータを用いて発生した不具合を診断する。診断エンジンのシステム部とユーザ部は、ワイヤレスデバイス上でシステムに常に動作することではなく、システムのリソース例えばＣＰＵを利用しない待ち状態（スリープ）にある。診断エンジンのシステム部は、イベント例えばプロセスの起動や終了が発生した時に喚起し、システムの状態に関わる情報例えばシステムリソースやプロセスの状態を収集し、システムの状態を監視する。【００１０】  システムに異常又は不具合が発生した時に寝かせている診断エンジンを喚起する手段は、まず、アプリケーションからシステムコール又はソケットによってシグナルを待ち状態にある診断エンジンのシステム部に送り、まず寝かせている診断エンジンのシステム部を喚起させ、カーネルスペース上の作業を済ませた後に、診断エンジンのシステム部からシステムコール又はソケットによってシグナルを待ち状態にある診断エンジンのユーザ部に送り、寝かせている診断エンジンを喚起させる。【００１１】  起こした診断エンジンによってシステムの不具合を診断するために必要なデータを収集する手段は、起こされた診断エンジンのシステム部によってレジスタやスタック等のメモリをダンプしてワイヤレスデバイス上のシステムに保存し、ワイヤレスデバイス上でシステムに発生するすべてのイベントと発生したイベントに対応する動作や状態と、プロセスの状態例えば起動や終了と、システムリソースの利用状態を記録する。【００１２】  収集したデータを分類・解析して必要な診断データを提供する手段は、診断エンジンのシステム部より起こされた診断エンジンのユーザ部が診断エンジンのシステム部によってダンプしたレジスタやメモリデータ、収集したほかのデータ例えばシステムリソース、イベント情報、プロセス情報と一緒に分類・解析し、発生した不具合を診断するに必要な診断データを診断レポートに添付して提供する。
【発明の効果】
【００１３】  以上のように、本発明によれば、ワイヤレスデバイス上でリアルタイムシステムにおいて不具合の診断、不具合発生の回避を実施するためのシステムとして、ワイヤレスデバイスに診断エンジンを常駐させ、システムの正常時に診断エンジンを寝かせて待ち状態に置くためにシステムのリアルタイム性にまったく影響せず、システムにキー操作やプロセスの起動・終了時に診断エンジンの一部を喚起し、不具合の診断に必要な診断データを収集して、収集したデータの分類・解析を行って管理し、不具合が発生する場合に不具合を診断するときに必要な診断データを提供することができ、システムに不具合が発生した時に収集したデータを用いてリアルタイムで発生した不具合を診断することができるので、ほとんどの場合に事業者のカスタマサポートに連絡する必要がなく、修理受付窓口に持ち込まれる必要もない。たとえ、事業者のカスタマサポートに連絡されたときでも、サポートに必要な診断情報が既に分かりやすく解析して診断サーバに報告されており、すぐにカスタマへ対応ができる。また、ソフトウェア上でバグが見つかった場合に、バグに関する詳細なリアルタイムシステムの診断情報が収集されて分類して分かりやすい形に解析されており、メーカが即座に的確にバグを判断することができ、バグを直ちに直すことができる。事業者とメーカにとって、カスタマとプロダクトのサポートコストを著しく削減することができる。
【発明を実施するための最良の形態】
【００１４】  以下、本発明の実施の形態を図面を参照して説明する。図１は、本発明によるワイヤレスデバイスのリアルタイム性に適用する診断手法を実現することができるシステムの構成を示すブロック図である。【００１５】  図１に示す診断システムにおいて、ワイヤレスデバイス０１に診断エンジン−１（診断エンジンのユーザ部）０２、診断エンジン−２（診断エンジンのシステム部）０３を実装して、システムリソースの利用状況、発生するイベントとプロセスの動作状態を観察し、診断データ０４を収集し、発生した不具合に対して収集した診断データを利用して診断を行い、診断の結果を診断サーバ０５と診断データベース０６に対してワイヤレスネットワーク０７経由で報告する。【００１６】  図２は、ワイヤレスデバイスのリアルタイム環境において診断する手順を示す説明図である。診断エンジン−１と診断エンジン−２はシステムが正常時に待ち状態にあり、プロセスの起動・終了やキー入力等のイベントがあるときに診断エンジン−２（診断エンジンのシステム部）０３が起きてシステムの状態をチェックして監視し、不具合が発生したときにアプリケーション１０からシステムコールを呼んで診断エンジン−２（診断エンジンのシステム部）０３を起こして、レジスタやスタックのメモリをダンプして、シグナルを診断エンジン−１（診断エンジンのユーザ部）０２に送り、診断エンジンのユーザ部を起こして収集した診断データを分類・解析し、発生した不具合を診断する。【００１７】  図３は、ワイヤレスデバイスの診断における必要な診断データを収集する一例を示す説明図である。不具合を診断するに必要となる診断データ０４は、関数軌跡２０、プロセス履歴２１、イベント２２とシステムリソース２３がある。関数軌跡２０は、ダンプしたメモリデータから解析して呼ばれた関数の履歴である。プロセス履歴２１は、不具合が発生したところまでプロセス遷移の軌跡とプロセス軌跡上の各プロセスに関する詳細な状態（例えばＰＣＢ（Ｐｒｏｃｅｓｓ  ｃｏｎｔｒｏｌ  ｂｌｏｃｋ）にある情報）であり、プロセス間のデッドロックやシステムフリーズに関わる情報であり、不具合が発生した原因を調査するために必要となる情報である。イベント２２は、プロセス軌跡上にある各プロセスが遷移したときに発生したイベント例えばプロセスの起動・終了やシステムに発生するあらゆるイベント例えばデータ通信のソケットオープン・クロスであり、ユーザ（携帯電話利用者）の操作履歴でもあり、発生した不具合を診断するときに不具合が発生する軌跡をたどるために重要な情報である。
【実施例】
【００１８】  図４は、ワイヤレスデバイス上でシステムに不具合が発生した時の診断機能を実装する一例を示すブロック図である。図４に示している例では、アプリケーション（ワイヤレスデバイス上で走るアプリケーション）が開始３０した後に不具合例えばある関数からエラーを返したとき３１にシステムコール３２を呼んで診断エンジン−２（診断エンジンのシステム部）０３を起こしてカーネルスペースでレジスタやスタックのメモリをダンプし、診断エンジン−１（診断エンジンのユーザ部）０２にシグナルを送り、ユーザスペースで診断エンジン−２（診断エンジンのシステム部）０３によってダンプしたメモリデータとこれまで診断エンジン−１（診断エンジンのユーザ部）０２によって収集した診断データを分類・解析し、診断アプリ（診断アプリケーション）３３に渡し、この診断アプリ３３によって発生した不具合を診断する。診断が終った後にアプリケーションによってポップアップ３４を表示し、診断結果を報告３５するかどうかについて携帯電話利用者に確認する。利用者から報告を確認した場合は、診断エンジン−１（診断エンジンのユーザ部）０２によって診断レポートを作成して、分類・解析した診断データを診断レポートに添付して診断サーバ０５に診断レポート送信３６を行う。診断が終ったら、診断エンジン（診断エンジン−１と診断エンジン−２）が再び待ち状態に戻る。アプリケーションの終了３７までほかに不具合が発生した場合は、以上のプロセスを繰り返して発生した不具合を診断する。【００１９】  図５は、ワイヤレスデバイス上でシステムがクラッシュしたときの診断を実施する一例を示す説明図である。図５に示している例では、ワイヤレスデバイス０１上でアプリケーションが開始４０した後にシステムがクラッシュ４１したとき（例えばリブートやフリーズ）に割込が発生し、割込処理４２に組み込まれている診断エンジン−２（診断エンジンのシステム部）０３の一部であるメモリダンプ機能によってメモリダンプ４３を行い、診断エンジン−１（ユーザ部）０２によってこれまで収集したほかの診断データを保存してシステムをリブートし、システムが立ち上がった後にユーザスペースで診断エンジン−２（診断エンジンのシステム部）０３によって保存している診断データを分類・解析し、診断アプリ（診断アプリケーション）３３に渡し、この診断アプリ３３によって発生した不具合を診断する。診断が終った後にアプリケーションによってポップアップ３４を表示し、診断結果を報告３５するかどうかについて携帯電話利用者に確認する。利用者から報告を確認した場合は、診断エンジン−１（診断エンジンのユーザ部）０２によって診断レポートを作成して、分類・解析した診断データを診断レポートに添付して診断サーバ０５に診断レポート送信３６を行う。診断が終ったら、診断エンジン（診断エンジン−１と診断エンジン−２）が再び待ち状態に戻る。アプリケーションの終了４５までほかにシステムのクラッシュ４１が発生した場合は、以上のプロセスを繰り返して発生した不具合を診断する。【００２０】  図６は、ネットワークを通した診断結果報告実施の一例を示す説明図である。図６に示す例では、診断エンジン−１（診断エンジンのユーザ部）０２が診断レポートを作成し、診断データ０４を診断レポートに添付してリクエスト５０に載せてＯＴＡ（ワイヤレスネットワーク）を通して診断サーバ０５に送り、診断サーバ０５がその診断レポートを受信した後に診断レポートを処理し、診断データベース０６に登録して、診断エンジン０２にその処理結果をレスポンス５１として送る。
【図面の簡単な説明】
【００２１】
【図１】  本発明によるワイヤレスデバイスのリアルタイム性に適用する診断手法を実現することができる診断システムの構成を示すブロック図である。
【図２】ワイヤレスデバイスのリアルタイム環境における診断を実施する手順の一例を示す説明図である。
【図３】ワイヤレスデバイス上で監視・収集する診断データの一例を示す説明図である。
【図４】ワイヤレスデバイス上でシステムに不具合が発生した時の診断機能を実装する一例を示すブロック図である。
【図５】ワイヤレスデバイス上でシステムにクラッシュが発生した時の診断機能を実装する一例を示すブロック図である。
【図６】診断結果を診断サーバに報告して診断データベースに登録する機能を実施する一例を示す説明図である。
【符号の説明】
【００２】０１  ワイヤレスデバイス（携帯電話、携帯端末）
０２  診断エンジン−１
０３  診断エンジン−２
０４  診断データ
０５  診断サーバ
０６  診断データベース
０７  ワイヤレスネットワーク
１０  アプリケーション
２０  関数軌跡
２１  プロセス履歴
２２  イベント
２３  システムリソース
５０  リクエスト・メッセージ
５１  レスポンス・メッセージ
【図１】
2007068135.tif 000003
【図２】
2007068135.tif 000004
【図３】
2007068135.tif 000005
【図４】
2007068135.tif 000006
【図５】
2007068135.tif 000007
【図６】
2007068135.tif 000008