(57)【要約】【課題】デバッグ専用ポートを有しない情報端末装置であってもソフトウェアの障害解析に必要なログデータを効率的且つ容易に取得することができ、これによりソフトウェアの障害解析に要する時間を短縮することができる情報端末装置等を提供する。【解決手段】情報端末装置１は、内部に組み込まれたアプリケーションソフトウェアＡＰ毎に動的に実行されて、アプリケーションソフトウェアＡＰ毎のＡＰＩ呼び出しに関する情報を示すＡＰＩ情報をフックして取得する機能を実現するＡＰＩフック処理部２１と、ＡＰＩフック処理部２１によって取得されたＡＰＩ情報をリムーバブルメモリＲＭに書き込むためにコントローラ１４に出力する機能を実現するロギング処理部２２とを備える。【選択図】図１
2009265823.tif 000002
【特許請求の範囲】
【請求項１】
着脱可能な記録媒体に対してデータの書き込みを行うデータ書込部及び外部の機器と有線又は無線による通信を行う通信部の少なくとも一方を備えており、複数の処理を同時に並行して実行するマルチプロセス処理を実現するオペレーティングシステムが実装された情報端末装置において、
前記情報端末装置に組み込まれたソフトウェア毎に動的に実行されて、前記オペレーティングシステムが有する機能の前記ソフトウェア毎の利用状況を示す利用情報を取得する取得部と、
前記取得部によって取得された前記利用情報を、前記着脱可能な記録媒体及び前記通信部の少なくとも一方にログデータとして出力する出力部と
を備えることを特徴とする情報端末装置。
【請求項２】
前記出力部に対して前記利用情報の出力指示を行う出力制御部を備えることを特徴とする請求項１記載の情報端末装置。
【請求項３】
前記取得部及び前記出力部で共用されるメモリを備えており、
前記取得部は、取得した前記利用情報を前記メモリに逐次書き込み、
前記出力部は、所定のタイミングで前記メモリから前記利用情報を読み出して出力する
ことを特徴とする請求項１又は請求項２記載の情報端末装置。
【請求項４】
複数の処理を同時に並行して実行するマルチプロセス処理を実現するオペレーティングシステムが実装されたコンピュータで実行され、当該コンピュータに組み込まれたソフトウェアの動作状況を示すログデータを取得するログデータ取得プログラムであって、
前記コンピュータを、
前記ソフトウェア毎に動的に実行されて、前記オペレーティングシステムが有する機能の前記ソフトウェア毎の利用状況を示す利用情報を取得する取得手段と、
前記取得手段によって取得された前記利用情報を、前記コンピュータに対して着脱可能な記録媒体並びに前記コンピュータに設けられた有線通信手段及び無線通信手段の少なくとも１つにログデータとして出力する出力手段と
して機能させることを特徴とするログデータ取得プログラム。
【請求項５】
前記コンピュータを、前記取得手段及び前記出力手段とともに、
前記出力手段に対して前記利用情報の出力指示を行う出力制御手段と
して機能させることを特徴とする請求項４記載のログデータ取得プログラム。
【請求項６】
前記取得手段及び前記出力手段は、前記オペレーティングシステム上で別プロセスでそれぞれ実行されるものであり、
前記取得手段は、取得した前記利用情報を、前記取得手段及び前記出力手段で共用されるメモリに逐次書き込み、
前記出力手段は、所定のタイミングで前記メモリから前記利用情報を読み出して出力する
ことを特徴とする請求項４又は請求項５記載のログデータ取得プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込まれるソフトウェアの障害解析に用いられるログデータの取得が可能な情報端末装置及びログデータ取得プログラムに関する。
【背景技術】
【０００２】
携帯端末、カーナビゲーションシステム、ディジタルテレビ等の各種情報端末装置は、開発の最終段階において、組み込まれるソフトウェアの所期の機能が実現されるか否か、或いは異常動作が出現するか否かを確認すること等を目的としたデバッグ作業が行われる。また、製品として出荷された後においても、ソフトウェアの機能改善や性能向上等を目的としたデバッグ作業が行われる。
【０００３】
情報端末装置のデバッグは、一般的に、デバッグの対象となる情報端末装置とパーソナルコンピュータ（ＰＣ）とをケーブルによって接続し、作業者がＰＣを用いてデバッグに必要な情報（ログデータ）を情報端末装置から取得し、必要に応じてＰＣ側から情報端末装置を操作することにより行われる。情報端末装置とＰＣとの接続には、例えばＪＴＡＧ（Joint Test Action Group）ケーブル、シリアルケーブル、ＬＡＮ（Local Area Network）ケーブル等が用いられる。
【０００４】
上記のＪＴＡＧケーブルを用いた接続の場合には、情報端末装置にＴＡＰ（Test Access Port）コントローラが設けられていることが前提となり、且つ情報端末装置とＰＣとの間にＪＴＡＧ−ＩＣＥ（In-Circuit Emulator（登録商標））を介在させる必要がある。かかる場合には、専用のデバッガをＰＣに組み込めば、ＰＣ側から情報端末装置に組み込まれたプログラムの実行及び停止並びにメモリの内容の変更及び参照といった操作を行うことができ、情報端末装置に組み込まれたオペレーティングシステム（ＯＳ）、アプリケーションソフトウェア、ドライバ、ミドルウェア等の各種ソフトウェアの解析やデバッグが可能である。
【０００５】
上記のシリアルケーブルを用いた接続の場合には、ソフトウェアのデバッグを行う上で有効と考えられるメッセージを出力させる機能を予め上記の各種ソフトウェア（ＯＳ、アプリケーションソフトウェア、ドライバ、ミドルウェア等）に実装しておく必要がある。かかる機能によって、情報端末装置からシリアルケーブルを介してＰＣに出力されるメッセージをＰＣ側で参照することにより、情報端末装置に組み込まれた各種ソフトウェアの解析を行うことができる。
【０００６】
上記のＬＡＮケーブルを用いた接続の場合には、情報端末装置に組み込まれたオペレーティングシステムの管理下で動作し、ＰＣに組み込まれたデバッガとの間で通信が可能なデバッグ用スタブを情報端末装置に予め組み込んでおき、このデバッグ用スタブを介して情報端末装置のログデータをＰＣ側で取得する。かかる場合にも、ＰＣ側から情報端末装置に組み込まれたプログラムの実行及び停止並びにメモリの内容の変更及び参照といった操作を行うことができるため、ＪＴＡＧケーブルを用いた接続の場合と同様に、情報端末装置に組み込まれた各種ソフトウェアの解析やデバッグが可能である。
【０００７】
また、以下の特許文献１〜３には、ログデータをログファイルに記録する機能が予めコンピュータに組み込まれており、この機能を用いてテスト対象のソフトウェア等の動作状況を示すログデータを取得するシステムが開示されている。
【特許文献１】特開２００７−２６４７５３号公報
【特許文献２】特開２００３−１７８２８５号公報
【特許文献３】特開２００２−３２８８１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、製品として出荷される情報端末装置は、上述したＴＡＰコントローラ等のデバッグのために用いられるＪＴＡＧインターフェイスや、ログデータを取得するために組み込まれたデバッグ用スタブ等の機能（デバッグ専用ポート）が除かれた状態で出荷されるのが一般的である。これは、情報端末装置のコストの低減又は実装面積の削減を図るため、或いはデバッグ専用ポートを介した情報端末装置に対するユーザの不正な操作を防止するためである。
【０００９】
前述した通り、情報端末装置のデバッグは予め情報端末装置にデバッグ専用ポートが設けられていることが前提になるため、デバッグ専用ポートが除かれた情報端末装置（製品化された情報端末装置）のデバッグを行うことはできない。このため、製品化された情報端末装置で発生したソフトウェアの障害は、デバッグ専用ポートが設けられたデバッグ用の情報端末装置で再現させて解析する必要があるため、再現性の低い障害については解析に長時間を要するという問題があった。
【００１０】
また、上述した特許文献１〜３に開示された技術では、ログデータをログファイルに記録する機能が予めシステムに組み込まれていることが前提になる。このため、ログデータの取得方法や記録するログデータの種類を変更する必要が生じた場合には、その機能を実現するプログラムのソースコードを改変する必要がある。しかしながら、かかるソースコードの変更を行うと、新たな障害が発生する危険性が生ずるとともに変更したプログラムの組み込み作業（ビルド作業）に工数を要するという問題がある。更に、上記の機能がソースコードとして提供されない場合には、その機能に変更を加えることができないため、デバッグを行う上で真に必要なログデータを取得することができないという問題もある。
【００１１】
本発明は上記事情に鑑みてなされたものであり、デバッグ専用ポートを有しない情報端末装置であってもソフトウェアの障害解析に必要なログデータを効率的且つ容易に取得することができ、これによりソフトウェアの障害解析に要する時間を短縮することができる情報端末装置及びログデータ取得プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明の情報端末装置は、着脱可能な記録媒体（ＲＭ）に対してデータの書き込みを行うデータ書込部（１４）及び外部の機器と有線又は無線による通信を行う通信部（３５）の少なくとも一方を備えており、複数の処理を同時に並行して実行するマルチプロセス処理を実現するオペレーティングシステム（ＯＳ）が実装された情報端末装置（１、２）において、前記情報端末装置に組み込まれたソフトウェア毎に動的に実行されて、前記オペレーティングシステムが有する機能の前記ソフトウェア毎の利用状況を示す利用情報を取得する取得部（２１）と、前記取得部によって取得された前記利用情報を、前記着脱可能な記録媒体及び前記通信部の少なくとも一方にログデータとして出力する出力部（２２、３１、３２）とを備えることを特徴としている。
この発明によると、情報端末装置に組み込まれたソフトウェアが起動されると、起動されたソフトウェアに対して取得部が動的に実行されて、そのソフトウェアにおけるオペレーティングシステムの機能の利用状況を示す利用情報が取得され、取得部により取得された利用情報が着脱可能な記録媒体及び通信部の少なくとも一方にログデータとして出力される。
また、本発明の情報端末装置は、前記出力部に対して前記利用情報の出力指示を行う出力制御部（２３）を備えることを特徴としている。
更に、本発明の情報端末装置は、前記取得部及び前記出力部で共用されるメモリ（１２ａ）を備えており、前記取得部は、取得した前記利用情報を前記メモリに逐次書き込み、前記出力部は、所定のタイミングで前記メモリから前記利用情報を読み出して出力することを特徴としている。
本発明のログデータ取得プログラムは、複数の処理を同時に並行して実行するマルチプロセス処理を実現するオペレーティングシステム（ＯＳ）が実装されたコンピュータで実行され、当該コンピュータに組み込まれたソフトウェアの動作状況を示すログデータを取得するログデータ取得プログラムであって、前記コンピュータを、前記ソフトウェア毎に動的に実行されて、前記オペレーティングシステムが有する機能の前記ソフトウェア毎の利用状況を示す利用情報を取得する取得手段（２１、Ｌ２）と、前記取得手段によって取得された前記利用情報を、前記コンピュータに対して着脱可能な記録媒体（ＲＭ）並びに前記コンピュータに設けられた有線通信手段及び無線通信手段の少なくとも１つ（３５）にログデータとして出力する出力手段（２２、３１、３２、Ｐ１、Ｐ２、Ｐ３）として機能させることを特徴としている。
また、本発明のログデータ取得プログラムは、前記コンピュータを、前記取得手段及び前記出力手段とともに、前記出力手段に対して前記利用情報の出力指示を行う出力制御手段（２３、ＡＰ１）として機能させることを特徴としている。
更に、本発明のログデータ取得プログラムは、前記取得手段及び前記出力手段が、前記オペレーティングシステム上で別プロセスでそれぞれ実行されるものであり、前記取得手段が、取得した前記利用情報を、前記取得手段及び前記出力手段で共用されるメモリ（１２ａ）に逐次書き込み、前記出力手段が、所定のタイミングで前記メモリから前記利用情報を読み出して出力することを特徴としている。
【発明の効果】
【００１３】
本発明によれば、情報端末装置に組み込まれたソフトウェアが起動された時点で、起動されたソフトウェアに対して取得部を動的に実行して、そのソフトウェアにおけるオペレーティングシステムの機能の利用状況を示す利用情報を取得し、取得部により取得した利用情報を着脱可能な記録媒体及び通信部の少なくとも一方にログデータとして出力しているため、デバッグ専用ポートを有しない情報端末装置であってもソフトウェアの障害解析に必要なログデータを効率的且つ容易に取得することができ、これによりソフトウェアの障害解析に要する時間を短縮することができるという効果がある。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施形態による情報端末装置及びログデータ取得プログラムについて詳細に説明する。
【００１５】
〔第１実施形態〕
図１は、本発明の第１実施形態による情報端末装置の要部構成を示すブロック図である。図１に示す通り、本実施形態の情報端末装置１は、ＣＰＵ１１、ＲＡＭ（Random Access Memory）１２、ＲＯＭ（Read Only Memory）１３、コントローラ１４（データ書込部）、ハードディスク１５、入力装置１６、及び表示装置１７を備えており、ユーザの指示に応じた所定の処理を実行するとともに、情報端末装置１に組み込まれたソフトウェア（アプリケーションソフトウェアＡＰ）の動作状態を示すログデータを取得する。
【００１６】
この情報端末装置１は、具体的には、例えば携帯電話機、スマートフォン、若しくは業務用ハンディターミナル等の携帯端末、又はカーナビゲーションシステム、ディジタルテレビ等である。情報端末装置１で実行される上記の所定の処理としては、例えば音声通話処理、データ通信処理、画像表示処理、画像撮影処理、位置情報算出処理等の各種処理が挙げられる。尚、本実施形態では、情報端末装置１が、スマートフォンである場合を例に挙げて説明する。
【００１７】
ＣＰＵ１１は、図１に示す各ブロック及び図示を省略しているその他のブロックの動作を制御することにより、情報端末装置１の動作を統括的に制御する。ここで、ＣＰＵ１１が電源投入時にハードディスク１５に格納されたプログラムを読み出して実行することによりオペレーティングシステムＯＳが実現され、これにより情報端末装置１にはオペレーティングシステムＯＳが実装される。
【００１８】
ここで、情報端末装置１に実装されるオペレーティングシステムＯＳは、複数の処理を同時に並行して実行するマルチプロセス処理を実現するものである。このオペレーティングシステムＯＳとしては、例えばＷｉｎｄｏｗｓ ＣＥ（登録商標）、Ｌｉｎｕｘ（登録商標）、ＢＴＲＯＮ（Business TRON（The Real-Time Operating System Nucleus））、Ｔ−Ｋｅｒｎｅｌ等が挙げられる。尚、本実施形態では、上記のＷｉｎｄｏｗｓ ＣＥ（登録商標）がオペレーティングシステムＯＳとして実装される場合を例に挙げて説明する。
【００１９】
また、ＣＰＵ１１がハードディスク１５に格納されたプログラムを読み出して実行することにより、情報端末装置１に設けられた各種ハードウェアを制御するドライバやミドルウェア、更には各種のアプリケーションソフトウェアＡＰがオペレーティングシステムＯＳ上で実行される。尚、以下の説明では、上記のドライバ、ミドルウェア、及びアプリケーションソフトウェアを総称する場合には、単に「アプリケーションソフトウェア」という。
【００２０】
更に、ＣＰＵ１１がハードディスク１５に格納されたプログラムを読み出して実行することにより、ＣＰＵ１１には、ＡＰＩフック処理部２１（取得部）、ロギング処理部２２（出力部）、及び出力制御部２３が実現される。これらは、情報端末装置１に組み込まれたアプリケーションソフトウェアＡＰの動作状態を示すログデータを取得するためのものである。
【００２１】
ＡＰＩフック処理部２１は、アプリケーションソフトウェアＡＰ毎に動的に実行され、アプリケーションソフトウェアＡＰからオペレーティングシステムＯＳが管理するＡＰＩ（Application Program Interface）を呼び出す際に、その呼び出しに関する情報（利用情報：以下、ＡＰＩ情報という）をフック（横取り）して収集する。そして、収集したＡＰＩ情報をＲＡＭ１２内に設定された所定の記憶領域（以下、共有メモリという）に記憶する。このＡＰＩフック処理部２１は、具体的には、ＤＬＬ（Dynamic Link Library）形式で実現される。
【００２２】
ロギング処理部２２は、上記の共有メモリに記憶されたＡＰＩ情報を所定のタイミングで読み出し、リムーバブルメモリＲＭに書き込むためにログデータとしてコントローラ１４に出力する。ロギング処理部２２がログデータをコントローラ１４に出力するタイミングは、例えば予め作業者によって指定された時刻が到来するタイミング、又は出力制御部２３から出力指示があるタイミングである。
【００２３】
出力制御部２３は、ロギング処理部２２に対してＡＰＩ情報の出力指示を行う。この出力制御部２３は、例えばアプリケーションソフトウェアの１つとして実現され、そのアプリケーションが、ＡＰＩ情報が必要になった時点でロギング処理部２２に対してＡＰＩ情報の出力指示を行う。この出力制御部２３を設けることで、ＡＰＩ情報を定期的にリムーバブルメモリＲＭに書き込むといった運用以外に、出力制御部２３の必要に応じてＡＰＩ情報をムーバブルメモリＲＭに書き込むといった柔軟な運用が可能になる。
【００２４】
ここで、上述したＡＰＩフック処理部２１、ロギング処理部２２、及び出力制御部２３は何れもソフトウェアによって実現される。次に、これら各部のソフトウェアの面から見た場合の関係について詳細に説明する。図２は、本発明の第１実施形態による情報端末装置でソフトウェアによって実現される機能の関係を示す機能ブロック図である。図２に示す通り、オペレーティングシステムＯＳの管理下においてプロセスＰＲ１〜ＰＲ３が実行される。プロセスＰＲ１はロギング処理部２２の機能を実現するプロセスであり、プロセスＰＲ２はＡＰＩフック処理部２１の機能を実現するプロセスであり、プロセスＰＲ３は出力制御部２３の機能を実現するプロセスである。
【００２５】
プロセスＰＲ１は、共有メモリ１２ａ、設定ファイルＦ１、スレッド情報取得ライブラリＬ１、及び実行プログラムＰ１からなり、情報端末装置１の電源が投入されて情報端末装置１にオペレーティングシステムＯＳが実装された時に実行される。共有メモリ１２ａは、前述した通り、ＲＡＭ１２内に設定されてＡＰＩフック処理部２１（プロセスＰＲ２）によって収集されたＡＰＩ情報が記憶され、プロセスＰＲ１，ＰＲ２で共有されるメモリである。設定ファイルＦ１は、監視対象とするアプリケーションソフトウェアＡＰを示す情報（プロセス名）、ＡＰＩフック処理部２１（プロセスＰＲ２）によって共有メモリ１２ａに収集すべきＡＰＩ情報を示す情報、及び共有メモリ１２ａに記憶されたＡＰＩ情報をリムーバブルメモリＲＭに書き込む条件が設定されるファイルである。
【００２６】
例えば、設定ファイルＦ１に設定される上記の条件（ＡＰＩ情報をリムーバブルメモリＲＭに書き込む条件）としては、定期的にＡＰＩ情報をリムーバブルメモリＲＭに書き込む場合には、その書き込むべき日時が設定される。これに対し、出力制御部２３（プロセスＰＲ３）からの出力指示に基づいてＡＰＩ情報をリムーバブルメモリＲＭに書き込む場合には、その出力指示を受け入れるべき旨を示す情報が設定される。
【００２７】
スレッド情報取得ライブラリＬ１は、オペレーティングシステムＯＳ上で動作しているスレッドを示す情報を取得するライブラリである。実行プログラムＰ１は、設定ファイルＦ１の設定内容に従って共有メモリ１２ａに記憶されたＡＰＩ情報を読み出し、この読み出したＡＰＩ情報に対してスレッド情報取得ライブラリＬ１で取得された全スレッド情報を付加したものをログデータとしてリムーバブルメモリＲＭに出力する。
【００２８】
プロセスＰＲ２は、上記の共有メモリ１２ａ並びにアプリケーションソフトウェアＡＰ及びＡＰＩフックライブラリＬ２からなる。ＡＰＩフックライブラリＬ２は、前述したＡＰＩフック処理部２１の処理を実現する。つまり、ＡＰＩフックライブラリＬ２は、ＤＬＬ形式で実現されてアプリケーションソフトウェアＡＰが実行される度に動的にロードされ、アプリケーションソフトウェアＡＰからオペレーティングシステムＯＳが管理するＡＰＩを呼び出す際に、監視対象のＡＰＩであった場合にはＡＰＩ情報をフックして共有メモリ１２ａに記憶（収集）する。
【００２９】
ここで、ＡＰＩフックライブラリＬ２によって収集されるＡＰＩ情報は、具体的には以下の（１）〜（１０）等に示すものである。
（１）対象ＡＰＩ（システムコール）識別情報
（２）プロセス識別情報
（３）スレッド識別情報
（４）時刻
（５）物理メモリ残容量
（６）仮想メモリ残容量
（７）開始／終了フラグ
（８）呼び出し回数
（９）引数，戻り値
（１０）呼び出し元アドレス
【００３０】
上記（１）は、アプリケーションソフトウェアＡＰによって呼び出されたＡＰＩを識別する情報である。上記（２），（３）はＡＰＩを呼び出したプロセス及びスレッドをそれぞれ特定する情報である。この情報は、複数プロセスや複数スレッドからのＡＰＩの呼び出し状況を把握する上で有益な情報である。上記（４）はアプリケーションソフトウェアＡＰからＡＰＩが読み出された時刻を示す情報である。この情報は、ＡＰＩの呼び出しタイミングを時系列に把握したり、ＡＰＩの実行開始から終了までに要する時間を計測するために用いられる情報である。
【００３１】
上記（５），（６）は、物理メモリ又は仮想メモリの残容量を示す情報であり、オペレーティングシステムＯＳやアプリケーションソフトウェアＡＰが一旦占有したメモリ領域が開放されずに放置されるメモリリークの原因を特定するために有益な情報である。上記（７）は、ＡＰＩの実行の開始／終了を示す情報であり、得られたＡＰＩ情報がＡＰＩの実行開始時のものか又はＡＰＩの実行終了時のものかを判断する上で有益な情報である。例えば、ＡＰＩの実行が開始されるタイミングでのみＡＰＩ情報が得られており、そのＡＰＩの実行が終了するタイミングでＡＰＩ情報が得られていない場合には、そのＡＰＩの実行が完了していないと判断することができる。
【００３２】
上記（８）は、ＡＰＩの呼び出し回数を示す情報である。この情報を参照することで、例えば呼び出し回数が対となるべきＡＰＩにおいて、それぞれの呼び出し回数が異なれば障害発生が生じていると判断することができる。例えば、メモリ確保を実行する関数mallocと確保されたメモリの開放を実行する関数freeとは対で用いられるが、関数mallocに対して関数freeの回数が少ない場合には、メモリリークの可能性があると判断することができる。上記（９）はＡＰＩ呼び出し時の引数，戻り値を示す情報であって、上記（１０）は呼び出し元のアドレスを示す情報であり、これらを用いることにより呼び出し元の関数を特定することができる。以上説明した（１）〜（１０）のうちの何れを収集するかは、設定ファイルＦ１の設定内容に基づいて行われる。
【００３３】
プロセスＰＲ３は、ログデータ出力アプリケーションＡＰ１からなる。ログデータ出力アプリケーションＡＰ１は、前述した出力制御部２３の処理（ロギング処理部２２に対するＡＰＩ情報の出力指示を行う処理）を実現する。尚、このログデータ出力アプリケーションＡＰ１は、情報端末装置１にオペレーティングシステムＯＳが実装されてプロセスＰＲ１が実行された後に自動的に実行されても良く、或いはユーザの指示によって実行されても良い。
【００３４】
図１に戻り、ＲＡＭ１２は揮発性のメモリであり、オペレーティングシステムＯＳやアプリケーションソフトウェアＡＰ等が用いる各種変数の値やデータ等を一時的に記憶する。また、ＲＡＭ１２の内部には、前述したプロセスＰＲ１，ＰＲ２で共有される共有メモリがプロセスＰＲ１の処理によって確保される。ＲＯＭ１３は不揮発性のメモリであり、例えば情報端末装置１のハードウェア構成に応じたプログラム群（ＢＩＯＳ（Basic Input/Output System）等を記憶する。
【００３５】
コントローラ１４は、ＣＰＵ１１の制御下において、リムーバブルメモリＲＭに対するデータの書き込み及びリムーバブルメモリＲＭからのデータ読み出しを制御する。ここで、リムーバブルメモリＲＭは、情報端末装置１に着脱可能な不揮発性のメモリであり、例えばＳＤ（登録商標）メモリ、ＣＦ（CompactFlash）メモリ、ＵＳＢ（Universal Serial Bus）メモリ等である。尚、このリムーバブルメモリＲＭとしては、上記の不揮発性のメモリ以外に情報端末装置１に着脱可能な磁気ディスク、光磁気ディスク等を用いることも可能である。
【００３６】
ハードディスク１５は、前述したオペレーティングシステムＯＳを実現するプログラム。アプリケーションソフトウェアＡＰを実現するプログラム、ＡＰＩフック処理部２１（プロセスＰＲ２）、ロギング処理部２２（プロセスＰＲ１）、及び出力制御部２３（プロセスＰＲ３）を実現するプログラム、その他各種のプログラムを格納する。また、前述した設定ファイルＦ１も格納される。入力装置１６は、通話キー、終話キー、テンキー、ソフトキー等の各種の操作キーを含んで構成され、ユーザによる操作内容に応じた信号をＣＰＵ１１に出力する。表示装置１７は、液晶表示装置、有機ＥＬ表示装置等の表示装置を含んで構成され、ＣＰＵ１１から出力される表示信号に基づいた表示を行う。
【００３７】
次に、上記構成における情報端末装置１の動作について説明する。図３及び図４は、本発明の第１実施形態による情報端末装置の動作の一例を示すフローチャートである。尚、図３はロギング処理部２２（プロセスＰＲ１）で行われる処理を示すフローチャートであり、図４はＡＰＩフック処理部２１（プロセスＰＲ２）で行われる処理を示すフローチャートである。
【００３８】
ユーザによって情報端末装置１の電源が投入されると、ハードディスク１５に格納されたプログラムがＣＰＵ１１によって読み出されて実行されることによりオペレーティングシステムＯＳが実現され、これにより情報端末装置１にはオペレーティングシステムＯＳが実装される。オペレーティングシステムＯＳが実装されると、ハードディスク１５に格納されたプログラムが読み出されて実行されることによりロギング処理部２２が実現される。つまり、オペレーティングシステムＯＳ上でプロセスＰＲ１が実行される。
【００３９】
プロセスＰＲ１が実現されると、まず実行プログラムＰ１によって図２に示す設定ファイルＦ１に格納された設定情報が読み出される（ステップＳ１１）。具体的には、監視対象とするアプリケーションソフトウェアＡＰを示す情報（プロセス名）、共有メモリ１２ａに収集すべきＡＰＩ情報を示す情報、及び共有メモリ１２ａに記憶されたＡＰＩ情報をリムーバブルメモリＲＭに書き込む条件を示す情報が読み出される。
【００４０】
次に、設定ファイルＦ１から読み出した設定情報に基づいた初期処理が行われる（ステップＳ１２）。具体的には、後に実行されるプロセスＰＲ２で監視すべきアプリケーションソフトウェアＡＰを特定するとともに、そのプロセスＰＲ２で共有メモリ１２ａに収集すべきＡＰＩ情報を特定する処理が行われる。また、実行プログラムＰ１に対して、共有メモリ１２ａに記憶されたＡＰＩ情報をリムーバブルメモリＲＭに書き込む条件を特定する処理が行われる。更に、プロセスＰＲ１，ＰＲ２で共有される共有メモリ１２ａをＲＡＭ１２の内部に確保する処理が行われる。
【００４１】
以上の初期処理が終了すると、実行プログラムＰ１で出力イベントの有無が判断される（ステップＳ１３）。つまり、設定ファイルＦ１にログデータを書き込むべき日時が設定されている場合にはその日時が到来したか否かが判断され、設定ファイルＦ１にログデータ出力アプリケーションＡＰ１からの出力指示を受け入れるべき旨を示す情報が設定されている場合には、ログデータ出力アプリケーションＡＰ１からの出力指示の有無が判断される。出力イベントが無い場合（ステップＳ１３の判断結果が「ＮＯ」である場合）には、ステップＳ１３が繰り返される状態になる。
【００４２】
かかる状態の時に、ユーザがアプリケーションソフトウェアＡＰの実行を指示したとすると、ハードディスク１５からプログラムが読み出され、オペレーティングシステムＯＳ上でアプリケーションソフトウェアＡＰが実行される。このとき、アプリケーションソフトウェアＡＰの実行に伴って、ＡＰＩフック処理部２１が動的にロードされる。尚、ＡＰＩフックライブラリＬ２が動的にロードされるときに、図２中のステップＳ１２の初期処理で特定された監視対象のアプリケーションソフトウェアＡＰ及び共有メモリ１２ａに収集すべきＡＰＩ情報の設定が行われる。
【００４３】
その後、アプリケーションソフトウェアＡＰがＡＰＩの呼び出しを行うと、ＡＰＩフックライブラリＬ２は上記の設定に従ってＡＰＩ情報を取得する（ステップＳ２１）。次に、ＡＰＩフックライブラリＬ２は、取得したＡＰＩ情報に対して前述した「開始フラグ」をＡＰＩ情報の１つとして含め、この「開始フラグ」が含まれたＡＰＩ情報を共有メモリ１２ａに書き込む（ステップＳ２２）。
【００４４】
ＡＰＩ情報の書き込みを終えると、ＡＰＩフックライブラリＬ２は、ＡＰＩの実体を呼び出す（ステップＳ２３）。これにより、アプリケーションソフトウェアＡＰの指示に応じたオペレーティングシステムＯＳの機能が実行される。次に、ＡＰＩフックライブラリＬ２は、取得したＡＰＩ情報に対して前述した「終了フラグ」をＡＰＩ情報の１つとして含め、この「終了フラグ」が含まれたＡＰＩ情報を共有メモリ１２ａに書き込む（ステップＳ２４）。
【００４５】
このように、アプリケーションソフトウェアＡＰによるＡＰＩ呼び出しの前後において、ＡＰＩフックライブラリＬ２によって「開始フラグ」又は「終了フラグ」が含まれるＡＰＩ情報が共有メモリ１２ａに書き込まれる。以上説明した処理は、アプリケーションソフトウェアＡＰがＡＰＩを呼び出す度に繰り返され、これによりＡＰＩ情報が共有メモリ１２ａに順次収集される。
【００４６】
以上説明したプロセスＰＲ１，ＰＲ２が実行されているときに、例えば設定ファイルＦ１に設定されているログデータを書き込むべき日時が到来したとすると、実行プログラムＰ１によるステップＳ１３の判断結果は「ＹＥＳ」になる。すると、実行プログラムＰ１は、まずスレッド情報取得ライブラリＬ１を介して、その時点において動作中である全てのスレッド情報をオペレーティングシステムから取得する（ステップＳ１４）。次に、実行プログラムＰ１は、共有メモリ１２ａに書き込まれているＡＰＩ情報を取得する（ステップＳ１５）。
【００４７】
そして、ステップＳ１５で取得したＡＰＩ情報とステップＳ１４で取得したスレッド情報とを組み合わせてログデータを生成して出力する。実行プログラムＰ１によって出力されたログデータは、コントローラ１４に入力されてリムーバブルメモリＲＭに書き込まれる（ステップＳ１６）。このようにして、アプリケーションソフトウェアＡＰのデバッグに必要なログ情報が書き込まれたリムーバブルメモリＲＭを情報端末装置１から取り外して他の機器（例えば、パーソナルコンピュータ）に装着すれば、リムーバブルメモリＲＭに書き込まれたログデータの内容を参照することができ、
【００４８】
以上の通り、本実施形態では、アプリケーションソフトＡＰがＡＰＩを呼び出す場合における、その呼び出しに関するＡＰＩ情報をＡＰＩフックライブラリＬ２でフック（横取り）して共有メモリ１２ａに収集し、収集したＡＰＩ情報等をログデータとして所定のタイミングでリムーバブルメモリＲＭに書き込んでいる。このログデータが書き込まれたリムーバブルメモリＲＭを他の機器に装着すればログデータの内容を参照することができる。
【００４９】
このため、情報端末装置１がデバッグ専用ポートを有しなくとも、その情報端末装置１でアプリケーションソフトウェアＡＰが動作している状態で、障害解析に必要なログデータを効率的且つ容易に取得することができ、これによりソフトウェアの障害解析に要する時間を短縮することができる。また、ＡＰＩフックライブラリＬ２はＤＬＬ形式で実現されるため、監視対象となるアプリケーションソフトウェアＡＰのソースコードの改変やビルド作業を行う必要がないことから、工数の増加や新たな障害発生等の危険性を招くこともない。更に、ＡＰＩ情報を収集するＡＰＩフックライブラリＬ２と、収集されたＡＰＩ情報からログデータを作成してリムーバブルメモリＲＭに書き込む実行プログラムＰ１とを分けているため、リアルタイム性の悪化等のアプリケーションソフトウェアＡＰの動作に支障を来すことなく、ログデータを取得することができる。
【００５０】
尚、上記実施形態では、設定ファイルＦ１に設定されているログデータを書き込むべき日時が到来したときに実行プログラムＰ１がログデータをリムーバブルメモリＲＭに出力する例について説明したが、ログデータ出力アプリケーションＡＰ１からの出力指示を受け入れるべき旨を示す情報が設定ファイルＦ１に設定されている場合には、ログデータ出力アプリケーションＡＰ１から出力指示が出力された時点で、図３中のステップＳ１３の判断結果が「ＹＥＳ」となってログデータの出力が行われる。尚、プロセスＰＲ３は、プロセスＰＲ１が実行された後であれば、任意の時点で実行を開始することが可能である。
【００５１】
〔第２実施形態〕
図５は、本発明の第２実施形態による情報端末装置の要部構成を示すブロック図である。図５に示す通り、本実施形態の情報端末装置２は、図１に示す情報端末装置１が備えるコントローラ１４に代えてＬＡＮコントローラ３５（通信部）を備えており、情報端末装置１に組み込まれたアプリケーションソフトウェアＡＰの動作状態を示すログデータを電子メールにより外部に出力するものである。尚、図５においては、図１に示すブロックと同じ機能を有するブロック部には同一の符号を付している。
【００５２】
図１に示す通り、本実施形態では、ＣＰＵ１１がハードディスク１５に格納されたプログラムを読み出して実行することにより、ＣＰＵ１１には、ＡＰＩフック処理部２１（取得部）、ロギング処理部３１（出力部）、出力制御部２３、及びメール送信処理部３２（出力部）が実現される。上記ＡＰＩフック処理部２１及び出力制御部２３は、図１に示すものと同じ機能を有する。
【００５３】
ロギング処理部３１は、図１に示すロギング処理部２２と同様に、ＲＡＭ１２内に設けられる共有メモリに記憶されたＡＰＩ情報を所定のタイミングで読み出すものであるが、読み出したＡＰＩ情報をログデータとしてメール送信処理部３２に受け渡す点が図１に示すロギング処理部２２とは異なる。尚、ロギング処理部３１がログデータをメール送信処理部３２に受け渡すタイミングは、例えば予め作業者によって指定された時刻が到来するタイミング、又は出力制御部２３から出力指示があるタイミングである。
【００５４】
メール送信処理部３２は、ロギング処理部３１から受け渡されたログデータを電子メールで送信可能なデータ形式（例えば、ＭＩＭＥ（Multipurpose Internet Mail Extension）形式）に変換し、外部のメールサーバ（図示省略）に送信するためにＬＡＮコントローラ３５に出力する。尚、電子メールの送信先は、ユーザによって予め設定ファイルＦ１に設定されている。
【００５５】
ＬＡＮコントローラ３５は、図示しない外部の通信機器（例えば、ルータ、ハブ）等と有線又は無線により接続され、これらの通信機器を介してメールサーバ（図示省略）との間で通信を行うことにより、メール送信処理部３２から出力される電子メールをメールサーバに送信する。ここで、ＬＡＮコントローラ３５と外部の通信機器とを有線により接続するには、例えば１００ＢＡＳＥ−Ｔや１０００ＢＡＳＥ−Ｔ等のＬＡＮケーブルを用いることができる。また、ＬＡＮコントローラ３５と外部の通信機器とを無線により接続するには、ＩＥＥＥ８０２．１１ｂ／ａ／ｇ／ｎ等の無線ＬＡＮ通信規格を用いることができる。
【００５６】
ここで、上述したＡＰＩフック処理部２１、ロギング処理部３１、出力制御部２３、及びメール送信処理部３２は何れもソフトウェアによって実現される。次に、これら各部のソフトウェアの面から見た場合の関係について詳細に説明する。図６は、本発明の第２実施形態による情報端末装置でソフトウェアによって実現される機能の関係を示す機能ブロック図である。図６に示す通り、オペレーティングシステムＯＳの管理下においてプロセスＰＲ２〜ＰＲ４が実行される。プロセスＰＲ２，ＰＲ３は、図２に示すものと同様に、ＡＰＩフック処理部２１の機能及び出力制御部２３の機能を実現するプロセスである。また、プロセスＰＲ４は、ロギング処理部３１及びメール送信処理部３２の機能を実現するプロセスである。
【００５７】
プロセスＰＲ２，ＰＲ３は、図２に示すものと同様であるため、ここでの詳細な説明は省略する。プロセスＰＲ４は、共有メモリ１２ａ、設定ファイルＦ１、スレッド情報取得ライブラリＬ１、実行プログラムＰ２、及びメール送信処理プログラムＰ３からなり、情報端末装置１の電源が投入されて情報端末装置１にオペレーティングシステムＯＳが実装された時に実行される。設定ファイルＦ１は、監視対象とするアプリケーションソフトウェアＡＰを示す情報（プロセス名）、ＡＰＩフック処理部２１（プロセスＰＲ２）によって共有メモリ１２ａに収集すべきＡＰＩ情報を示す情報、及び共有メモリ１２ａに記憶されたＡＰＩ情報をリムーバブルメモリＲＭに書き込む条件に加えて、電子メールの送信先を示す情報が設定されるファイルである。
【００５８】
実行プログラムＰ１は、設定ファイルＦ１の設定内容に従って共有メモリ１２ａに記憶されたＡＰＩ情報を読み出し、この読み出したＡＰＩ情報に対してスレッド情報取得ライブラリＬ１で取得された全スレッド情報を付加したものをログデータとしてメール送信処理プログラムＰ３に受け渡す。メール送信処理プログラムＰ３は、前述したメール送信処理部３２の処理（ログデータのデータ形式を変換する処理及びＬＡＮコントローラ３５に対するログデータの出力を行う処理）を実現する。
【００５９】
上記構成における情報端末装置２は、ロギング処理部３１で収集されたログデータがＬＡＮコントローラ３５を介して電子メールの形式でメールサーバ（図示省略）に送信される点を除いては、基本的には第１実施形態の情報端末装置１と同様の動作が行われる。つまり、アプリケーションソフトウェアＡＰが実行されるとＡＰＩフック処理部２１が動的に実行され、図４のフローチャートに示す通り、アプリケーションソフトウェアＡＰがＡＰＩの呼び出しを行ったときに、そのＡＰＩに関するＡＰＩ情報がＡＰＩフックライブラリＬ２によって取得されて共有メモリ１２ａに書き込まれる。
【００６０】
また、図３のフローチャートに示す通り、設定ファイルＦ１に設定された日時が到来した、或いはログデータ出力アプリケーションＡＰ１から出力指示が出力された等の出力イベントが有った時に、共有メモリ１２ａに書き込まれているＡＰＩ情報がスレッド情報とともに実行プログラムＰ２により取得され、これらＡＰＩ情報及びスレッド情報からログデータが作成される。そして、作成されたログデータは、電子メールの形式でメール送信処理プログラムＰ３からＬＡＮコントローラ３５を介してメールサーバ（図示省略）に送信される。
【００６１】
以上の通り、本実施形態においても、アプリケーションソフトＡＰがＡＰＩを呼び出す場合における、その呼び出しに関するＡＰＩ情報をＡＰＩフックライブラリＬ２でフック（横取り）して共有メモリ１２ａに収集し、収集したＡＰＩ情報等をログデータとして電子メールの形式で外部に送信している。よって、例えば、送信された電子メールをＰＣ等で受信すれば、ログデータの内容を参照することができる。
【００６２】
このため、情報端末装置２がデバッグ専用ポートを有しなくとも、その情報端末装置２でアプリケーションソフトウェアＡＰが動作している状態で、障害解析に必要なログデータを効率的且つ容易に取得することができ、これによりソフトウェアの障害解析に要する時間を短縮することができる。また、本実施形態においてもＡＰＩフックライブラリＬ２はＤＬＬ形式で実現されるため、監視対象となるアプリケーションソフトウェアＡＰのソースコードの改変やビルド作業を行う必要がないことから、工数の増加や新たな障害発生等の危険性を招くこともない。更に、ＡＰＩ情報を収集するＡＰＩフックライブラリＬ２と、収集されたＡＰＩ情報からログデータを作成して電子メールで送信する実行プログラムＰ２及びメール送信処理プログラムＰ３とを分けているため、リアルタイム性の悪化等のアプリケーションソフトウェアＡＰの動作に支障を来すことなく、ログデータを取得することができる。
【００６３】
以上、本発明の実施形態による情報端末装置及びログデータ取得プログラムについて説明したが、本発明は上記実施形態に制限されることなく、本発明の範囲内で自由に変更が可能である。例えば、上述した実施形態では、オペレーティングシステムＯＳとしてＷｉｎｄｏｗｓ ＣＥ（登録商標）が実装されている場合を例に挙げて説明したが、本発明はＬｉｎｕｘ（登録商標）、ＢＴＲＯＮ、Ｔ−Ｋｅｒｎｅｌ等のマルチプロセス処理が実現可能なオペレーティングシステムが実装されている情報端末装置に適用することができる。
【００６４】
また、第２実施形態では、ログデータを電子メールで外部に送信する場合を例に挙げて説明したが、情報端末装置１，２とＰＣが有線又は無線により接続される場合には、電子メールの形式への変換を行わず、且つメールサーバを介在させずに、情報端末装置１，２で得られたログデータを直接ＰＣに送信することも可能である。例えば、情報端末装置１，２とＰＣとがBluetooth（登録商標）等によって直接の無線通信が可能であれば、情報端末装置１，２で得られたログデータを直接ＰＣに送信可能である。
【００６５】
更に、上記実施形態では、ＣＰＵ１１がハードディスク１５に格納された各種プログラムを読み出して実行することによりオペレーティングシステムＯＳ等が実現される形態について説明した。しかしながら、上記の各種プログラムをＲＯＭ１３に記憶しておき、ＣＰＵ１１がＲＯＭ１３に記憶された各種プログラムを読み出して一旦ＲＡＭ１２に展開してから実行することにより、オペレーティングシステムＯＳ等が実現される形態であっても良い。
【図面の簡単な説明】
【００６６】
【図１】本発明の第１実施形態による情報端末装置の要部構成を示すブロック図である。
【図２】本発明の第１実施形態による情報端末装置でソフトウェアによって実現される機能の関係を示す機能ブロック図である。
【図３】本発明の第１実施形態による情報端末装置の動作の一例を示すフローチャートである。
【図４】本発明の第１実施形態による情報端末装置の動作の一例を示すフローチャートである。
【図５】本発明の第２実施形態による情報端末装置の要部構成を示すブロック図である。
【図６】本発明の第２実施形態による情報端末装置でソフトウェアによって実現される機能の関係を示す機能ブロック図である。
【符号の説明】
【００６７】
１，２        情報端末装置
１４          コントローラ
２１          ＡＰＩフック処理部
２２          ロギング処理部
２３          出力制御部
２１ａ        共有メモリ
３１          ロギング処理部
３２          メール送信処理部
３５          ＬＡＮコントローラ
ＡＰ１        ログデータ出力アプリケーション
Ｌ２          ＡＰＩフックライブラリ
ＯＳ          オペレーティングシステム
Ｐ１，Ｐ２    実行プログラム
Ｐ３          メール送信処理部
ＲＭ          リムーバブルメモリ
【図１】
2009265823.tif 000003
【図２】
2009265823.tif 000004
【図３】
2009265823.tif 000005
【図４】
2009265823.tif 000006
【図５】
2009265823.tif 000007
【図６】
2009265823.tif 000008