(57)【要約】【課題】アプリケーションソフトウェアのタスク間メッセージ通信が起きた後にメッセージ情報表示装置を起動した場合においても、高速に正しくメッセージシーケンスを表示できるメッセージ情報表示装置、表示方法、及びそのシステムを提供する【解決手段】起動時に、管理情報獲得手段は、ＯＳの管理下にあるメッセージに関する情報を取得し、続いて獲得情報解析手段は、管理情報獲得手段が取得した上記メッセージに関する情報を所定のキューに格納し、次に、キュー操作手段は、キューに格納されている情報と、ＯＳが出力するログとに基づいてメッセージの送信と受信の関係を関連付けるメッセージ情報表示装置、表示方法、及びそのシステムを提供する。【選択図】　図１
2004054378.tif 000002
【特許請求の範囲】
【請求項１】
マルチタスクＯＳ上で動作するタスク間で発生するメッセージの、送信と受信の関係を表示するメッセージ情報表示装置において、
起動時に、上記ＯＳの管理下にあるメッセージに関する情報を上記ＯＳより取得する管理情報獲得手段と、
上記管理情報獲得手段が取得した上記メッセージに関する情報を所定のキューに格納する獲得情報解析手段と、
上記キューに格納されている上記メッセージに関する情報と上記ＯＳが出力する上記メッセージに関するログとに基づいて上記メッセージの送信と受信の関係を関連付けるキュー操作手段と、
を具備する事を特徴とするメッセージ情報表示装置。
【請求項２】
上記ＯＳの管理下にあるメッセージに関する情報は、上記タスク間での送受信が完了していないメッセージに関する情報である請求項１に記載のメッセージ情報表示装置。
【請求項３】
さらに、上記ＯＳの管理下にあるメッセージに関する情報から取得できない情報を、上記メッセージに関するログから取得するログ探索手段を具備する請求項１又は２に記載のメッセージ情報表示装置。
【請求項４】
上記ログ探索手段が上記ログより取得する情報は、メッセージが送信または受信された時刻を示すタイムスタンプ、又はメッセージ送信を行ったタスクのＩＤのいずれかを含む請求項３に記載のメッセージ情報表示装置。
【請求項５】
上記キュー操作手段は、
上記メッセージに関する情報に含まれる、メッセージの送信元であるタスクＩＤを用いて上記メッセージの送信と受信の関係を関連付ける請求項１に記載のメッセージ情報表示装置。
【請求項６】
マルチタスクＯＳ上で動作するタスク間で発生するメッセージの、送信と受信の関係を表示するメッセージ情報表示方法において、
起動時に、上記ＯＳの管理下にあるメッセージに関する情報を上記ＯＳより取得する管理情報獲得ステップと、
上記管理情報獲得ステップにて取得した上記メッセージに関する情報を所定のキューに格納する獲得情報解析ステップと、
上記キューに格納されている上記メッセージに関する情報と上記ＯＳが出力する上記メッセージに関するログとに基づいて上記メッセージの送信と受信の関係を関連付けるキュー操作ステップと、
を具備する事を特徴とするメッセージ情報表示方法。
【請求項７】
マルチタスクＯＳ上で動作するタスク間で発生するメッセージの、送信と受信の関係を表示するコンピュータに、
起動時に、上記ＯＳの管理下にあるメッセージに関する情報を上記ＯＳより取得する管理情報獲得ステップと、
上記管理情報獲得ステップにて取得した上記メッセージに関する情報を所定のキューに格納する獲得情報解析ステップと、
上記キューに格納されている上記メッセージに関する情報と上記ＯＳが出力する上記メッセージに関するログとに基づいて上記メッセージの送信と受信の関係を関連付けるキュー操作ステップと、
を実行させるプログラム。
【請求項８】
タスク間で発生するメッセージに関する情報に当該メッセージの送信元のタスクを特定するＩＤを含めて一旦格納する格納手段と、
タスク間で発生するメッセージの送信と受信の関係を表示するメッセージ情報表示装置に上記メッセージに関する情報を送信する送信手段と、
を具備するマルチタスク管理装置。
【請求項９】
コンピュータを、
タスク間で発生するメッセージに関する情報に当該メッセージの送信元のタスクを特定するＩＤを含めて一旦格納する格納手段、
メッセージの送信と受信の関係を表示するメッセージ情報表示装置に上記メッセージに関する情報を送信する送信手段、
として機能させるためのマルチタスクＯＳ。
【請求項１０】
マルチタスク管理装置上で動作するタスク間で発生するメッセージの、送信と受信の関係を表示するメッセージ情報表示装置を備えたメッセージ情報表示システムにおいて、
マルチタスク管理装置は、
上記メッセージに関する情報に当該メッセージの送信元のタスクを特定するＩＤを含めて一旦格納する格納手段と、
上記メッセージに関する情報を上記メッセージ情報表示装置に送信する送信手段とを具備し、
メッセージ情報表示装置は、
起動時に、上記マルチタスク管理装置の管理下にあるメッセージに関する情報を上記マルチタスク管理装置より受信する管理情報獲得手段と、
上記管理情報獲得手段が取得した上記メッセージに関する情報を所定のキューに格納する獲得情報解析手段と、
上記キューに格納されている上記メッセージに関する情報と上記マルチタスク管理装置が出力する上記メッセージに関するログとに基づいて上記メッセージの送信と受信の関係を関連付けるキュー操作手段とを具備する事を特徴とするメッセージ情報表示システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチタスクＯＳ上で動作するタスク間の、メッセージ通信の送受信の関係をメッセージシーケンスとして可視化するメッセージ情報表示装置に関するものである。
【０００２】
【従来の技術】
マルチタスクＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）上で実行されるアプリケーションソフトウェアにおいて、タスク間で同期通信を行う方法としてタスク間メッセージ通信がある。図２３において、例えばソフトウェア開発者２３０３は、アプリケーションソフトウェアを設計する際に、ソフトウェア設計書２３０４にタスク間メッセージ通信の送受信の関係をメッセージシーケンス図として示す。ソフトウェア開発者２３０３は、ソフトウェア設計書２３０４のメッセージシーケンス図に基づいてアプリケーションソフトウェア２３０１を開発する。
【０００３】
開発後、アプリケーションソフトウェア２３０１がソフトウェア設計書２３０４通りに動作しているかを確認する際には、アプリケーションソフトウェア２３０１におけるタスク間メッセージ通信の動作を、メッセージシーケンス図に可視化するメッセージ情報表示装置２３０２が有効である。
【０００４】
タスク間メッセージ通信の送受信の関係をメッセージシーケンスとして表示することで、ソフトウェア開発者２３０３は、どのタスクからどのタスクへメッセージが送られたか、タスク間メッセージの発行順番が正しいか等を確認することができ、即ちデバッグに有効である。
【０００５】
特開平１０−３１５９７号公報に記載の「ソフトウェア試験装置」によると、ソフトウェアの実行時に、タスクから他のタスクに対して送出されたメッセージ信号の送出時刻と受信時刻とをメッセージシーケンスに割り付けて格納し、送受信の関係からメッセージシーケンスを生成する機能を備えている。また、既にソフトウェアが実行され、実行データがファイルデータとして格納されているメッセージ信号の送受信時刻を読み出し、ソフトウェアの動作結果をメッセージシーケンスとして表示する機能を備えている。
【０００６】
このように、ソフトウェアをデバッグする際には、ソフトウェアの実行時にメッセージ情報表示装置２３０２を利用して、メッセージシーケンスをリアルタイムに表示することで、ソフトウェアのソースコードからタスク間メッセージ通信の不具合箇所を特定することが容易になる。
【０００７】
図２４はメッセージ情報表示装置に関する従来技術を示す図である。尚、メッセージ情報表示装置２３０２は、例えば携帯端末等の外部端末２４２０に接続されて使用される。
【０００８】
まず、上記メッセージ情報表示装置２３０２を構成するタスク間メッセージ通信検知手段２４０２は、上記外部端末２４２０内のＯＳ２４０１から、アプリケーションソフトウェア２４００内にてタスク間メッセージ通信が発生した旨を受け取る。次に、タスク間メッセージ通信が発生した旨を受け取ると、メッセージ情報獲得手段２４０４は、上記ＯＳ２４０１が出力するログ２４０３の中からメッセージ情報を獲得する。
【０００９】
続いて、メッセージ状態管理キュー操作手段２４０６は、上記獲得したメッセージ情報から送信のメッセージ情報と受信のメッセージ情報との組を作成し、メッセージ状態管理キュー２４０５に格納する。尚、この時点で組が出来ない場合にも、メッセージ情報を一旦メッセージ状態管理キュー２４０５に格納し、続いて得られるメッセージ情報を用いて組を作成する。
【００１０】
上記メッセージ状態管理キュー操作手段２４０６により送受信の組が作成されると、メッセージシーケンス作成手段２４０７は当該送受信の組からメッセージシーケンスを作成し、表示手段２４０８が視覚的に表示する。
【００１１】
図２５に基本的なタスク間メッセージ通信の出力例を示す。ここに、アプリケーションソフトウェア上で２つのタスク（Ｔａｓｋ１、Ｔａｓｋ２）が動作している場合を考える。
【００１２】
Ｔａｓｋ１がタスク間メッセージ通信の送信を発行した後に、Ｔａｓｋ２がタスク間メッセージ通信の受信を発行した場合を、図２５Ａのように表示する事ができる（パターンＡ）。このケースは、Ｔａｓｋ２がＴａｓｋ１からのタスク間メッセージを待機することなく受信する場合などが該当する。
【００１３】
これに対して、Ｔａｓｋ２がタスク間メッセージ通信の受信を発行した後に、Ｔａｓｋ１からそのメッセージを受信した場合は、図２５Ｂのように表示する事ができる（パターンＢ）。このケースは、Ｔａｓｋ２が予めＴａｓｋ１からのタスク間メッセージを待機している場合等が該当する。
【００１４】
尚、上記パターンＡ及びパターンＢのようなタスク間メッセージ通信の送受信の組をペア２５０１と呼ぶ。
【００１５】
ところで、上述したメッセージ情報表示装置は、どのようなアプリケーションソフトウェアのメッセージ通信に対しても対応できるべきである。これは、アプリケーションソフトウェア毎にメッセージ情報表示装置を対応させていたのであれば、開発効率が低下してしまうという理由からである。この理由は、メッセージ情報表示装置に限らず、様々なアプリケーションソフトウェアの開発に関係するデバッグシステム全体に言えることである。
【００１６】
言い換えると、上記アプリケーションソフトウェアには、メッセージ通信を表示させるための仕組を組み込むことなく、メッセージ表示装置でメッセージ通信を表示させることが望ましい。こうすることにより、アプリケーションソフトウェアに依存しないメッセージ情報表示装置を作成する事が可能になるのである。
【００１７】
上記依存しないメッセージ情報表示装置においては、一般的なＯＳが従来より有する情報からのみメッセージシーケンス図を生成するのが好ましいといえる。これにより、アプリケーションソフトウェアやＯＳに、メッセージ情報表示のための仕組みをさほど加えることなく、汎用的なシステムを構築することが可能になるのである。
【００１８】
ここで、一般的なＯＳにおけるメッセージ通信を行う場合の処理を簡単に説明する。例えば、図２６に示すように、Ｔａｓｋ１がＴａｓｋ２にメッセージを送信する場合を例に挙げる。
【００１９】
アプリケーション開発者はＴａｓｋ１からＴａｓｋ２へメッセージを送信する際に使用するメッセージＩＤを予め決めておく必要がある。メッセージＩＤとは、メッセージ送受信時に使用するメッセージ管理情報ブロック２６０３を識別するＩＤである。
【００２０】
Ｔａｓｋ１からＴａｓｋ２へのメッセージ送信に、メッセージＩＤ＝２を使用するとすると、Ｔａｓｋ１が、メッセージ２６０１をＴａｓｋ２へ送信する場合、ＯＳ２６０２により設けられているメッセージ管理情報ブロック２６０３（ＩＤ＝２）にメッセージ２６０１を送信する（状態Ａ）。上記メッセージ２６０１を受け取ると、ＯＳ２６０２は、上記メッセージ２６０１をメッセージ管理情報ブロック２６０３に格納し、カウントを「１」とする（状態Ｂ）。当該カウントは、メッセージ管理情報ブロックに格納されているメッセージの数を示す。
【００２１】
次に、Ｔａｓｋ２は、所定のタイミングで、メッセージ管理情報ブロック２６０３（ＩＤ＝２）よりメッセージ２６０１を取り出す（状態Ｃ）。この際、ＯＳ２６０２は、カウントを「０」とする。
【００２２】
以上より、一般的なＯＳが有するメッセージ通信の仕組みでは、ＯＳは、タスクがどのメッセージＩＤのメッセージ管理情報ブロックにメッセージを送信するか、あるいはタスクがどのメッセージＩＤのメッセージ管理情報ブロックからメッセージを受信するかを管理するものであり、どのタスクに対してメッセージを送信するか、あるいはどのタスクから送信されたメッセージを受信するかといったタスク間メッセージ通信の送受信の関係については、ＯＳでは管理していない事が理解できる。タスク間メッセージ通信の送受信の関係についてはＯＳより上位層であるアプリケーションで管理する。
【００２３】
【発明が解決しようとする課題】
以上のように、各メッセージが送信される相手のタスクについての情報をＯＳが管理していない場合であっても、タスク間メッセージ通信の送受信の関係をメッセージシーケンスとして表示することが可能である。
【００２４】
つまり、図２７に示すように、アプリケーションソフトウェア内のＴａｓｋ１〜３が起動した直後の起動ポイント２７０１にてメッセージ情報表示装置が起動したとする。この場合、各Ｔａｓｋ１〜３間でのメッセージの送受信はすべてメッセージ情報表示装置が把握可能であるため、送信先のタスクに関する情報を持たないＯＳからの情報のみでも、問題なくメッセージシーケンス図を生成する事が可能である。
しかし、アプリケーションソフトウェアを先に動作させ、タスク間メッセージ通信が一度でも起きた後にメッセージ情報表示装置を起動した場合、メッセージ状態管理キュー２４０５には既に送受信されたメッセージ情報は格納されておらず、即ち空のままである。よって、その後タスク間メッセージ通信が起きると、ペアとなるメッセージを正確に把握できないため、正しいメッセージシーケンスを表示することができなくなるという問題があった。以下に、その具体例を挙げる。
【００２５】
図２８に示すメッセージシーケンスの例は、上記図２７における起動ポイント２７０１を時間軸について後方にずらした場合である。尚、図２８おいて、点線で表示している部分が正しく表示されるべきメッセージシーケンスである。
【００２６】
ここで、理解に供するため、破線２７０２、２８０２に示されたメッセージシーケンスについて説明する。
【００２７】
メッセージ情報表示装置２３０２を起動させた後に、アプリケーションソフトウェアを動作させ、Ｔａｓｋ２よりメッセージの受信を発行した後、Ｔａｓｋ１よりメッセージ通送信を発行すると、送受信のペアが正常に作成可能となるため破線２７０２に示したメッセージシーケンスが作成できる。
【００２８】
しかし、先にアプリケーションソフトウェアを動作させＴａｓｋ２よりメッセージの受信を発行２８０３した後に、メッセージ情報表示装置２３０２を起動（起動ポイント２８０１）すると、先の受信のメッセージ情報はメッセージ状態管理キュー２４０５に格納されておらず空のままである。
【００２９】
その後Ｔａｓｋ１よりメッセージの送信を発行２８０４すると、正常な送受信のペアではなく、例えばＴａｓｋ２によるメッセージの受信の発行２８０５とペアとなってしまい、正しいメッセージシーケンスを作成することができない（破線２８０２）。
従って、起動前に発生したメッセージは取得できないため表示できず、起動ポイント以降のメッセージの送受信について誤ったペアとなり表示されることとなる。
【００３０】
つまり、上記表示方法では、必ずアプリケーションソフトウェアの起動より前にメッセージ情報表示装置を起動し、随時メッセージシーケンスを表示する必要があるという問題があった。
【００３１】
しかしながら、特にデバッグに利用されるようなシステム（メッセージ情報表示装置）では、通常はデバッグのための装置は起動せず、バグが発生した後、アプリケーションソフトウェア内における該当部分の目星をつけてデバッグするのが通常である。
【００３２】
これにより、バグが発生するまでは、デバッグ処理による負荷をかけずにアプリケーションソフトウェアを実行することが可能になるのである。
【００３３】
つまり、特にデバッグに利用されるようなシステムでは、デバッグに関わる装置が途中で起動できるようにすることが望まれる。
【００３４】
尚、特開平１０−３１５９７号公報の「ソフトウェア試験装置」における実施の形態では、ソフトウェア実行管理部がプロセス間のメッセージ通信を行うソフトウェアを起動している。しかし、プロセス間のメッセージ通信を行うソフトウェアの動作途中から、メッセージシーケンスを表示することは考慮されていない。
【００３５】
従って、本発明の目的は、アプリケーションソフトウェアのタスク間メッセージ通信が起きた後にメッセージ情報表示装置を起動したとき、即ち途中起動した場合でも、高速に、しかも正しくメッセージシーケンスを表示できるメッセージ情報表示装置、表示方法、及びそのシステムを提供することである。さらに、メッセージ情報表示装置の起動ポイントをまたがって発行したメッセージの送受信に対しても、起動前のメッセージの発行順序とメッセージを発行したタスクを特定し、正しいメッセージシーケンスとして表示することである。
【００３６】
【課題を解決するための手段】
本発明は、上記目的を達成するために以下の手段を採用している。
【００３７】
本発明に係るメッセージ情報表示装置は、マルチタスクＯＳ上で動作するタスク間で発生するメッセージの、送信と受信の関係を表示するメッセージ情報表示装置を前提としている。
【００３８】
ここで、当該メッセージ情報表示装置の起動時に、管理情報獲得手段は、ＯＳの管理下にあるメッセージに関する情報を取得する。続いて獲得情報解析手段は、管理情報獲得手段が取得した上記メッセージに関する情報を所定のキューに格納する。これにより、起動時にまだペアとなっていないメッセージを判別する事が可能となる。次に、キュー操作手段は、キューに格納されている情報と、ＯＳが出力するログとに基づいてメッセージの送信と受信の関係を関連付ける。
【００３９】
以上のように、メッセージ情報表示装置の起動時に、初期状態生成手段がＯＳメッセージ管理情報を取得する構成により、アプリケーションソフトウェアのタスク間メッセージ通信が起きた後に当該メッセージ情報表示装置を起動しても高速に正しくメッセージシーケンスを表示可能となる。尚、ＯＳの管理下にあるメッセージに関する情報は、上記タスク間での送受信が完了していないメッセージに関する情報とすることができる。
【００４０】
さらに、ＯＳの管理下にあるメッセージに関する情報から取得できない情報を、メッセージに関するログから取得するログ探索手段を備える構成がある。
【００４１】
ログ探索手段を設けることにより、起動ポイント以前の情報についてもタイムスタンプと送信タスクＩＤを取得できる。このため、メッセージ情報表示装置の起動ポイントをまたがってペアとなるメッセージがある場合に、起動前のメッセージの発行順序やメッセージを発行したタスクを特定し、メッセージシーケンスを表示できるようになる。
【００４２】
また、キュー操作手段はメッセージに関する情報に含まれるメッセージの送信元であるタスクＩＤを用いてメッセージの送信と受信の関係を関連付ける構成とすることができる。
【００４３】
この構成では、メッセージ情報表示装置起動ポイントをまたがってペアとなるメッセージがある場合に、ログのサイズに関係なく起動前のメッセージを発行したタスクを特定し、メッセージシーケンスを表示できる。
【００４４】
尚、この場合、マルチタスクＯＳ（マルチタスク管理装置）の格納手段が、タスク間で発生するメッセージに関する情報に当該メッセージの送信元のタスクを特定するＩＤを含めて一旦格納し、同じく送信手段が、メッセージ情報表示装置に上記メッセージに関する情報を送信する構成となる。
【００４５】
本発明は、電気通信回線などを介して個別に流通するプログラムとして提供されることもある。このプログラムは、ＣＰＵなどを備えた制御装置（コンピュータ）と協働し、この制御装置を、上述のメッセージ情報表示装置として機能させる。例えばこの制御装置がプログラムに従って記憶手段に対する制御を行ったり、当該制御装置が動作したりすると、本発明は、メッセージ情報表示方法として実施される。
【００４６】
【発明の実施の形態】
以下に、本発明の実施の形態を説明し、本発明の理解に供する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
【００４７】
（実施の形態１）
本実施の形態１においては、メッセージ情報表示装置を、マルチタスクＯＳ上でのアプリケーション開発時に利用し、タスク間メッセージ通信を表示する例を説明する。
【００４８】
まず、最初に、マルチタスクＯＳ上でのアプリケーション開発の構成について説明する。図１に示すように、本発明に係るメッセージ情報表示装置１０１は、例えば携帯端末等の外部端末１０２に接続されて使用される。但し、例えば上記外部端末１０２自体は、汎用的に用いられるパーソナルコンピュータ上でシミュレータ環境として構築されても良い。また、上記メッセージ情報表示装置１０１も、当該パーソナルコンピュータ上でデバッグ用ソフトウェアとして実行されてもかまわない。
【００４９】
尚、上記メッセージ情報表示装置１０１の動作の理解に供するため、当該メッセージ情報表示装置１０１の説明に先立ち、図２を用いて外部端末１０２の詳細について説明する。
【００５０】
図２において、外部端末１０２内では、ＯＳ１０３及びアプリケーションソフトウェア１０４が動作しており、ソフトウェア開発者はＯＳ１０３上で動作するマルチタスクのアプリケーションソフトウェア１０４を開発しているものとする。当該アプリケーションソフトウェア１０４上では、複数のタスク２０１が動作しており、上記ＯＳ１０３の機能を利用して当該タスク２０１間でタスク間メッセージ通信を行う。
【００５１】
上記ＯＳ１０３には、アプリケーションソフトウェアが発行したシステムコールの処理をするシステムコール処理部２０２、システムコール処理に基づいてＯＳ管理情報を変更するＯＳ管理情報変更部２０３、タスク間メッセージ通信の状態を管理するＯＳメッセージ管理情報２０４、システムコール処理基づいてＯＳが実行した処理の内容をログ１０４に出力するログ出力部２０５、ログ１０４にＯＳの実行履歴を出力したことを上記メッセージ情報表示装置１０１に通知するデバッガ通知部２０６からなる。
【００５２】
上記環境において、例えば図２におけるＴａｓｋ１がＴａｓｋ２に対してタスク間メッセージ通信を行う場合、上記Ｔａｓｋ１は、ＯＳ１０３に対して、「タスク間メッセージ通信の送信」を行うためのシステムコールを発行する（図２５：パターンＡに該当）。ここに、システムコールとは、各タスクが、ＯＳが提供するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ　Ｐｒｏｇｒａｍ　Ｉｎｔｅｒｆａｃｅ）等を呼び出す処理であり、タスクがＯＳの機能を利用する際に用いられる。
【００５３】
上記Ｔａｓｋ１によりシステムコールが発行されると、ＯＳ１０３を構成するシステムコール処理部２０２は、上記Ｔａｓｋ１より受信したＴａｓｋ２へのメッセージ及びその他必要な情報をＯＳ管理情報変更部２０３に送信する。
上記ＯＳ管理情報変更部２０３が上記メッセージ等を受信すると、当該受信した情報に基づいて、例えばメモリ内に構成されるＯＳメッセージ管理情報２０４を更新する。尚、更新の説明に先立ち、ＯＳメッセージ管理情報２０４の構成について簡単に説明する。ＯＳメッセージ管理情報２０４は、図３に示すＯＳメッセージ管理情報ブロック２０７が複数設けられて構成される。当該ＯＳメッセージ管理情報ブロック２０７は、ＯＳ１０３によりメッセージＩＤ３０１ごとに管理される。ＯＳメッセージ管理情報ブロック２０７内には、タスク間メッセージ通信によって待ち状態になるタスクをリスト構造で管理する待ちタスクリスト（タスクＩＤ３０７）へのアドレス３０２、メッセージ送信時にデータを格納しメッセージ受信時にはデータを格納するためのバッファのアドレスを格納するバッファアドレス３０３、送信されているメッセージの数を表す送信カウント３０４、受信されているメッセージの数を表す受信カウント３０５からなるが、詳細については随時説明する。
【００５４】
さて、上記ＯＳ管理情報変更部２０３が上記メッセージ等を受信すると、図４Ａに示す初期状態から、図４Ｂに変更する。即ち、受信した上記メッセージ等に対応するＯＳメッセージ管理情報ブロック２０７の、バッファアドレス３０３を参照し、受信したメッセージを当該アドレスに対応するバッファ領域に格納する。また、送信カウント３０４の値に１を加算する。これにより、Ｔａｓｋ１からのメッセージは一旦ＯＳ１０３の管理下に置かれる。
【００５５】
続いて、Ｔａｓｋ２が「タスク間メッセージ通信の受信」を発行することによりＴａｓｋ１からのメッセージの受信処理を行う。このシステムコールがシステムコール処理部２０２を介してＯＳ管理情報変更部２０３に伝えられると、当該ＯＳ管理情報変更部２０３は、図４Ｃに示すように上記バッファに格納されたメッセージを取り出してＴａｓｋ２に送信すると共に、送信カウント３０４から１を減算する。
【００５６】
以上により、Ｔａｓｋ１とＴａｓｋ２間でのタスク間メッセージ通信が完了する。尚、上記ＯＳ管理情報変更部２０３による各処理は、ログ出力部２０５に送信され、当該ログ出力部２０５は、タスク間メッセージ通信の実行履歴であるメッセージ情報ログ１０５をログ１０４に追記する。
上記は、図２５におけるパターンＡに該当する処理であるが、念のため図２５パターンＢの際の処理について、図５を用いて簡単に説明する。初期状態はパターンＡと同様に待ちタスクＩＤ３０７及びバッファ３０６内はＮＵＬＬであり、送信カウント３０４と受信カウント３０５は０である（図５Ａ）。この状態で、Ｔａｓｋ２から「タスク間メッセージ通信の受信」が発行されると、ＯＳ管理情報変更部２０３は、対応するＯＳメッセージ管理情報ブロック２０７のバッファアドレスを参照し、アドレスが指しているバッファ３０６に、Ｔａｓｋ２より与えられたメモリアドレスを格納する。また、受信カウント３０５に１を加算し、さらに待ちタスクリスト（タスクＩＤ３０７）にＴａｓｋ２を一意に示すタスクＩＤ（ここでは例えば２）を格納する（図５Ｂ）。
【００５７】
続いて、Ｔａｓｋ１が「タスク間メッセージ通信の送信」を発行すると、上記ＯＳ管理情報変更部２０３は、バッファ３０６に格納されている上記メモリアドレスに、Ｔａｓｋ１より受信したメッセージを格納する。また、上記ＯＳ管理情報変更部２０３は、受信カウント３０５から１を減算すると共に、待ちタスクリスト（タスクＩＤ３０７）より上記タスクＩＤを取得して、レディキューに登録する（図５Ｃ）。
【００５８】
ここで、上記レディキューとは、マルチタスクＯＳがタスクの実行を制御するためのキューであり、当該キューに登録されたタスクが順に実行される。つまり、上記Ｔａｓｋ１による「タスク間メッセージ通信の送信」の発行の後にＴａｓｋ２がＯＳ１０３により実行される事になる。
【００５９】
Ｔａｓｋ２が実行されると、指定した上記メモリアドレスに格納されているメッセージを受信する。
【００６０】
以上が、上記外部端末１０２内のタスク間メッセージ通信の仕組みである。
【００６１】
次に、ログ１０４の構成について説明する。当該ログ１０４はメモリあるいはファイルからなり、図１においては、外部端末１０２内に設けられているが、例えばメッセージ情報表示装置１０１内に設けられてもかまわない。また、シミュレーション環境などにおいては、例えば外部端末１０２やメッセージ情報表示装置１０１を実行するパーソナルコンピュータ内に設けられても良い。
【００６２】
上記ログは、ＯＳ１０３のタスク生成、割込み発生、システムコール発行等の動作が起こる毎に、ログ出力部２０５により出力（追加）される。尚、ここでは、当該発明に直接関係するメッセージ情報ログについてのみ説明を行う。
【００６３】
図６に示すように、上記メッセージ情報ログ１０５には、発行タスクＩＤ６０１、タイムスタンプ６０２、メッセージＩＤ６０３、メッセージデータ６０４、機能コード６０５等が格納されている。つまりログ出力部２０５はＯＳ管理情報変更部２０３がＯＳメッセージ管理情報２０４を変更する毎に、上記各情報をメッセージ情報ログ１０５としてログ１０４に追記している。尚、上記機能コード６０５には、当該メッセージが「送信発行」に属するのかまたは「受信発行」に属するのかといった情報が含まれている。
【００６４】
また、上記ログ出力部２０５がログを出力すると、当該出力した旨がデバッガ通知部２０６を介してメッセージ情報表示装置１０１に送信される仕組みになっている。
【００６５】
以上が、上記外部端末１０２内での、タスク間メッセージ通信に関する処理である。
【００６６】
次に本発明に係るメッセージ情報表示装置１０１の処理について図１、図７を用いて説明する。
【００６７】
メッセージ情報表示装置１０１は、タスク間メッセージ通信検知手段１１１、メッセージ情報獲得手段１１２、メッセージ状態管理キュー操作手段１１３、メモリ等に設けられるメッセージ状態管理情報１０９、メッセージシーケンス作成手段１１４、表示手段１１５を備えている。尚、上記各手段は、上述した従来技術にて述べた処理と同様の処理を行うため、異なる点のみ説明する。また、上記メッセージ情報表示装置１０１は、上記に加えて初期状態生成手段１０６を備えている。当該初期状態生成手段１０６は、さらに、管理情報獲得手段１０７と獲得情報解析手段１０８より構成されている。
【００６８】
まず、上記外部端末１０２が起動した後、タスク間メッセージ通信がまだ行われていない状態で、メッセージ情報表示装置１０１を動作させた場合について説明する。
【００６９】
メッセージ情報表示装置１０１を起動すると、初期状態生成手段１０６の管理情報獲得手段１０７が、ＯＳメッセージ管理情報２０４から、メッセージＩＤ３０１、待ちタスクリスト（タスクＩＤ３０７）と送信カウント３０４及び受信カウント３０５を受信する（図７：Ｓ７０１→Ｓ７０２）。尚、当該受信は、例えば上記ＯＳ管理情報変更部２０３から送信される情報を受信する場合や、直接上記ＯＳメッセージ管理情報２０４にアクセスして取得する場合を含むものとする。なお、上記ＯＳ管理情報変更部２０３が送信する場合は上記ＯＳ管理情報変更部２０３が送信手段として機能することになる。
【００７０】
管理情報獲得手段１０７がＯＳメッセージ管理情報を受信すると、獲得情報解析手段１０８はメッセージ状態管理キュー１１０の初期状態を作成する。ここに、上記メッセージ状態管理キュー１１０のデータ構造を図８に示す。
【００７１】
図８に示したメッセージ状態管理キュー１１０は、ＯＳメッセージ管理情報２０４とは構造が異なっており、メッセージＩＤ３０１ごとに、タスクＩＤ３０７、メッセージ種別、タイムスタンプ等のメッセージ情報を管理する。メッセージ情報が複数ある場合には、例えばキュー構造（ポインタ）でつなげられる。
【００７２】
獲得情報解析手段１０８は、ＯＳメッセージ管理情報２０４から獲得したメッセージ情報をメッセージ状態管理キュー１１０のデータ構成に変換して格納する（図７：Ｓ７０３）。このとき、ＯＳメッセージ管理情報２０４からは得られなかった項目であるタイムスタンプ８０１には「０」を格納し、待ちタスクとならない（パターンＢ）ため得られないタスクＩＤ８０２はＮＵＬＬを格納する。また、メッセージ種別８０３は、上記送信カウント３０４及び受信カウント３０５より決定される。具体的には、送信カウント＞０の場合にはメッセージ種別＝１、受信カウント＞０の場合にはメッセージ種別＝２等である。
【００７３】
以上のようにして、初期状態生成手段１０６が初期状態（メッセージ情報表示装置１０１の起動時の状態）のメッセージ状態管理キュー１１０を生成する。
【００７４】
上記初期状態のメッセージ状態管理キュー１１０が生成された後、タスク間メッセージ通信が発生すると、タスク間メッセージ通信検知手段１１１がＯＳ１０３のデバッガ通知部２０６からタスク間メッセージ通信が発生したことを受信する。このとき、ＯＳ１０３がログ１０４に書き込んだメッセージ情報ログ１０５のアドレスであるメッセージ情報アドレスをパラメータとして受け取る（図７：Ｓ７０４）。
【００７５】
タスク間メッセージ通信検知手段１１１は、タスク間メッセージが発生したことを受信した後、メッセージ情報獲得手段１１２は、上記メッセージ情報アドレスを利用して、メッセージ情報ログ１０５内に含まれるメッセージＩＤ、メッセージ種別（機能コード）、発行タスクＩＤ、タイムスタンプ等のメッセージ情報を取得する（図７：Ｓ７０５→Ｓ７０６）。続いて、当該メッセージ情報を受信したメッセージ状態管理キュー操作手段１１３は、以下の処理を行う（図７：Ｓ７０７）。尚、メッセージ状態管理キュー操作手段１１３の処理概要のフローチャートを図９に示す。メッセージ状態管理キュー操作手段１１３は、上記メッセージ情報獲得手段１１２から上記メッセージ情報を受け取ると、当該メッセージ情報のメッセージＩＤ（ここではメッセージＩＤ＝１とする）に対応するメッセージ状態管理キュー１１０を参照する（図９：Ｓ９０１→Ｓ９０２）。当該参照により、メッセージ状態管理キュー１１０の先頭にペアとなるメッセージ情報が格納されているかを調べるのである（図９：Ｓ９０３）。尚、ペアとなるメッセージ情報とは、メッセージ種別が送信のメッセージ情報についてはメッセージ種別が受信のメッセージ情報であり、メッセージ種別が受信のメッセージ情報については、メッセージ種別が送信のメッセージ情報のことである。
【００７６】
ここで、ペアとなるメッセージ情報が格納されていない場合、当該メッセージ状態管理キューの末尾に獲得したメッセージ情報を追加し、次のメッセージを獲得するまで待機する（図７：Ｓ７０８、図９：Ｓ９０３ＮＯ→Ｓ９０６）。
【００７７】
ここで、メッセージ状態管理キュー１１０の先頭にペアとなるメッセージ情報が格納されている場合、メッセージ状態管理キュー１１０から先頭のメッセージ情報を抜き出し、ペアとなったメッセージ情報をメッセージシーケンス作成手段１１４に送信する（図７：Ｓ７０９→Ｓ７１０、図９：Ｓ９０３ＹＥＳ→Ｓ９０４→Ｓ９０５）。
【００７８】
以下に、図１０、図１１を用いて、上記処理時のメッセージ状態管理キュー１１０の状態を具体的に説明する。図１０において、上記外部端末１０２の起動直後に、Ｔａｓｋ１がメッセージＩＤ＝１の「タスク間メッセージ通信の送信」を発行した場合を想定する（図２５：パターンＡに該当）。この場合、メッセージＩＤ＝１のメッセージ状態管理キューの初期状態はＮＵＬＬとなっている（図１０Ａ）。
【００７９】
この後、メッセージ状態管理キュー操作手段１１３が、タイムスタンプ６０２＝０ｘ０００１、発行タスクＩＤ６０１＝１、メッセージ種別（機能コード６０５より判定可能）＝送信、メッセージＩＤ６０３＝１のメッセージ情報をメッセージ情報ログ１０５より獲得すると、ＩＤ＝１に対応するメッセージ状態管理キューにはペアとなるメッセージ情報が無いため、当該メッセージ状態管理キューの末尾にメッセージ情報を格納する（図１０Ｂ）。
【００８０】
次に、メッセージ状態管理キュー操作手段１１３が、タイムスタンプ６０２＝０ｘ０００２、発行タスクＩＤ６０１＝２、メッセージ種別＝受信、メッセージＩＤ６０３＝１のメッセージ情報を獲得すると、ＩＤ＝１のメッセージ状態管理キュー１１０にはペアとなるメッセージ情報があるため、当該ペアとなるメッセージ情報が抜き出される。
【００８１】
次に、メッセージ状態管理キュー操作手段１１３は、メッセージ情報ログ１０５より獲得した受信のメッセージ情報とメッセージ状態管理キュー１１０から抜き出された送信のメッセージ情報とをペアとして、メッセージシーケンス作成手段１１４に送信する。
【００８２】
同様に、図１１において、上記外部端末１０２の起動直後に、Ｔａｓｋ２がメッセージＩＤ＝２の「タスク間メッセージ通信の受信」を発行した場合を想定する（図２５：パターンＢに該当）。
【００８３】
メッセージＩＤ＝２のメッセージ状態管理キューの初期状態はＮＵＬＬとなっている（図１１Ａ）。この後、メッセージ状態管理キュー操作手段１１３が、タイムスタンプ６０２＝０ｘ０００１、発行タスクＩＤ６０１＝２、メッセージ種別＝受信、メッセージＩＤ６０３＝２のメッセージ情報を獲得すると、メッセージＩＤ＝２のメッセージ状態管理キュー１１０にはペアとなるメッセージ情報が無いため、メッセージ状態管理キュー１１０の末尾に当該メッセージ情報を格納する（図１１Ｂ）。
【００８４】
この後、メッセージ状態管理キュー操作手段１１３が、タイムスタンプ６０２＝０ｘ０００２、発行タスクＩＤ６０１＝１、メッセージ種別＝送信、メッセージＩＤ６０３＝１のメッセージ情報を獲得すると、メッセージＩＤ＝２のメッセージ状態管理キューにはペアとなるメッセージ情報があるため、当該ペアとなるメッセージ情報を抜き出す。
【００８５】
次に、メッセージ状態管理キュー操作手段１１３は、メッセージ情報ログ１０５より獲得した送信のメッセージ情報と、メッセージ状態管理キュー１１０から抜き出した受信のメッセージ情報とをペアとして、メッセージシーケンス作成手段１１４に送信する。
【００８６】
メッセージシーケンス作成手段１１４は、上記パターンＡ、Ｂどちらに該当する場合でも、ペアとなったメッセージ情報に基づいてメッセージシーケンスを表示すべき座標に変換する。例えば、Ｘ座標はタスクＩＤから算出し、Ｙ座標（時間軸）はタイムスタンプから算出するとよい。
【００８７】
表示手段１１５は、メッセージ種別が送信の座標からメッセージ種別が受信の座標に矢印で表示する等、ソフトウェア開発者が視覚的に理解できるように画面上に表示する（図７：Ｓ７１１）。
【００８８】
このとき、初期状態生成手段１０６が生成したメッセージ情報は全てＹ座標の０の位置に変換されている。また、初期状態生成手段１０６が生成したメッセージ情報で、メッセージ種別が送信の場合はタスクＩＤ３０７がＮＵＬＬになっているので、送信の情報を表示しないで、メッセージ受信の情報のみを表示する。
【００８９】
以上のように、メッセージ情報表示装置の起動時に、初期状態生成手段がＯＳメッセージ管理情報を取得する構成により、アプリケーションソフトウェアのタスク間メッセージ通信が起きた後に当該メッセージ情報表示装置を起動しても正しくメッセージシーケンスを表示可能となる。
【００９０】
また、例えば上記初期状態をログより作成した場合には、外部端末を長時間起動した後等では初期状態を生成するのに時間がかかるが、本メッセージ情報表示装置では、初期状態の作成にログを使用しないので起動が高速である。
【００９１】
さらに、上記ログを格納するための領域は無制限ではないため、ログより初期状態を作成する事ができない場合が起こりえるが、本メッセージ情報表示装置では、ログの領域をほとんど必要としないため、確実にメッセージシーケンスを表示可能となる。
【００９２】
次に、上記メッセージ情報表示装置１０１を、従来技術にて説明した図２８のケースに当てはめた場合を具体的に示す。
【００９３】
メッセージ情報表示装置１０１起動時（起動ポイント２８０１）の、ＯＳメッセージ管理情報２０４の状態を図１２に示す。
【００９４】
メッセージＩＤ＝１のメッセージ管理情報ブロック１２０１にはメッセージが入っておらず、待ちタスクリスト１２０２とバッファ１２０３にＮＵＬＬ、送信カウント１２０４と受信カウント１２０５は０となっている。
【００９５】
メッセージＩＤ＝２のメッセージ管理ブロック１２１１は、「メッセージの受信発行２８０３」に基づいて、待ちタスクリスト１２１２の参照先（タスクＩＤ１２１６）にタスクＩＤ＝２が格納されており、バッファ１２１３にメッセージを受信するアドレスが格納され、受信カウント１２１５＝１となっている。
【００９６】
メッセージＩＤ＝３のメッセージ管理情報ブロック１２２１は、「メッセージの受信発行２８０６」に基づいて、待ちタスクリスト１２２２の参照先（タスクＩＤ１２２６）にタスクＩＤ＝３が格納されており、バッファ１２２３にメッセージを受信するアドレスが格納され、受信カウント１２２５＝１となっている。
【００９７】
メッセージＩＤ＝４のメッセージ管理情報ブロック１２３１は、「メッセージの送信発行２８０７」に基づいて、待ちタスクリスト１２３２にＮＵＬＬ、バッファ１２３２に送信されたデータが入っており、送信カウント１２３４＝１となっている。
【００９８】
このような状態で、上述したように、メッセージ情報表示装置１０１は起動時に初期状態生成手段１０６の管理情報獲得手段１０７により、上記図１２に示した待ちタスクリスト、送信カウント、受信カウントを取得する。次に獲得情報解析手段１０８は、取得したメッセージ情報をメッセージ状態管理キュー１１０の構造に変換して格納する。ここで、当該初期状態生成手段１０６によって生成されたメッセージ状態管理キュー１１０の状態を図１３に示す。
【００９９】
メッセージＩＤ＝１においては、送信カウント１２０４、受信カウント１２０５とも０であり、メッセージが無いために、メッセージ状態管理キュー１３０１はＮＵＬＬとなる。
【０１００】
メッセージＩＤ＝２においては、受信カウント１２１５＝１であるため、メッセージ管理キュー１３１１にメッセージ情報が１つ生成される。ここで、待ちタスクリスト１２１２によりタスクＩＤ１２１６＝２が判断できる。また、受信カウント１２１５＝１であるため、メッセージ種別は受信となる。尚、タイムスタンプには０が格納される。
【０１０１】
メッセージＩＤ＝３においては、同様に、受信カウント１２２５＝１であるため、メッセージ管理キュー１３２１にメッセージ情報が１つ生成される。ここで、待ちタスクリスト１２２２によりタスクＩＤ１２２６＝３が判断できる。また、受信カウント１２２５＝１であるため、メッセージ種別は受信となる。尚、タイムスタンプは０が格納される。
【０１０２】
メッセージＩＤ＝４においては、送信カウント１２３４＝１であるため、メッセージ管理キュー１３３１にメッセージ情報が１つ生成される。ここで、待ちタスクリスト１２３２にはタスクＩＤがないため、タスクＩＤはＮＵＬＬ、送信カウント１２３４＝１であるため、メッセージ種別は送信となる。尚、タイムスタンプには０が格納される。
【０１０３】
以上に示した初期状態生成手段１０６の処理により、メッセージ状態管理キューの初期状態が生成される。以後、メッセージ情報ログ１０５を随時受信することで、正しくメッセージシーケンスを表示した例を図１４に示す。
【０１０４】
ここで、初期状態生成手段１０６によって生成されたメッセージ情報は、タイムスタンプが０のためメッセージＩＤ＝２、メッセージＩＤ＝３のメッセージ受信の情報１４０１、１４０２はＹ軸の０の位置に表示される。また、メッセージＩＤ＝４のメッセージ受信発行１４０３には、初期状態生成手段でタスクＩＤがわからなかったため、矢印で結ばれないデータが存在する。しかし、それ以降のタスク間メッセージ通信の発生に対しては正しくメッセージシーケンスを表示することができる。よって、アプリケーションソフトウェアのタスク間メッセージ通信が起きた後にメッセージ情報表示装置を起動しても正しくメッセージシーケンスを表示することができる。
【０１０５】
（実施の形態２）
以下、本発明のメッセージ情報表示装置における実施の形態２について図面を参照しながら詳細に説明していく。
【０１０６】
実施の形態２におけるメッセージ情報表示装置１５０１の構成を図１５に示す。上記実施の形態１の構成と異なっているのは初期状態生成手段１５０６に、ログ探索手段１５００を備えている点である。当該ログ探索手段１５００が、初期状態生成手段１０６で獲得できなかったタイムスタンプやメッセージ送信時のタスクＩＤをメッセージ情報ログ１０５から取得することで、実施の形態１より詳細なメッセージシーケンスを作成することができる。
【０１０７】
まず、メッセージ情報表示装置１５０１を起動すると、上記実施の形態１と同様に初期状態生成手段１５０６は管理情報獲得手段１０７によりＯＳメッセージ管理情報２０４を取得し、獲得情報解析手段１０８が、メッセージ状態管理キュー１１０を作成する。
【０１０８】
この際、ログ探索手段１５００により、タイムスタンプや送信タスクＩＤをログ２０より取得する。ログ探索手段１５００の処理内容を表したフローチャートを図１６に示す。
【０１０９】
上記ログ探索手段１５００は、例えば獲得情報解析手段１０８より、タイムスタンプ＝ＮＵＬＬや、タスクＩＤ＝ＮＵＬＬであるメッセージ情報を取得した旨の情報を取得した場合、以下の処理を行う。
【０１１０】
即ち、メッセージＩＤを１からメッセージＩＤの最大値まで１ずつ増加させて、以下の処理を繰り返す（図１６：Ｓ１６０１）。上記メッセージＩＤに対応するメッセージ状態管理キュー１１０内に、メッセージ情報があるか調べる（図１６：Ｓ１６０２）。ここで、メッセージ情報がある場合、当該メッセージ状態管理キュー１１０内のメッセージ種別とメッセージの個数を取得する（図１６：Ｓ１６０２Ｙｅｓ→Ｓ１６０３）。
【０１１１】
次に、ログ探索手段１５００は、ログ１０４を調べ、次にメッセージ情報ログを書き込むポイントであるログ書き込みポイントを最初のログ検索ポイントに設定する（図１６：Ｓ１６０４）。ログ検索ポイントより古いログデータの方向へ、同一メッセージＩＤおよび、処理Ｓ１６０３で取得したのと同一メッセージ種別を持つメッセージ情報ログを探索する（図１６：Ｓ１６０６）。
【０１１２】
ここで、対象となるメッセージ情報ログが見つかった場合、当該メッセージ情報ログから発行タスクＩＤ６０１とタイムスタンプ６０２を取得する（図１６：Ｓ１６０７Ｙｅｓ→Ｓ１６０８）。続いて、当該メッセージ状態管理キューに格納されている後方のメッセージ情報からタイムスタンプとメッセージ送信のタスクＩＤを書き込む（図１６：Ｓ１６０９）。処理Ｓ１６０６以降の処理をメッセージの個数回繰り返し、すべてのメッセージ情報にタイムスタンプとメッセージ送信のタスクＩＤを書き込む（図１６：Ｓ１６０５）。以上の処理を、メッセージＩＤ＝１からメッセージＩＤの最大値まで１ずつ増加させて繰り返す。
【０１１３】
以上の処理により、ログ探索手段１５００は、抜けのないメッセージ状態管理キュー１１０の初期状態を生成することができる。
【０１１４】
次に初期状態生成手段１０６がＯＳメッセージ状態管理情報２０４及びメッセージ情報ログ１０５からメッセージ情報表示装置起動時のメッセージ情報を取得し、メッセージ状態管理キューを生成するまでの具体例を示す。
【０１１５】
図４に示すタスク間メッセージ通信が行われる際に、図５で示す位置でメッセージ情報表示装置を途中起動させた場合を例に挙げる。
【０１１６】
メッセージ情報表示装置を起動すると、実施の形態１と同様に管理情報獲得手段１０７と、獲得情報解析手段１０８により、図１９に示すメッセージ状態管理キュー１１０が作成される。このとき得られなかった情報であるタイムスタンプと送信時のタスクＩＤをログ探索手段１５００によって求める。メッセージ情報表示装置起動時のログの状態を図２３に示す。
【０１１７】
以下に、上記ログ探索手段１５００の処理を、実施の形態１における図１３に適用したケースを具体的に説明する。尚、メッセージ情報ログ１０５を更に具体的に図１７に示す。また、各メッセージ情報ログのフォーマットは、図６に示したのと同一である。
【０１１８】
まず、上記ログ探索手段１５００は、メッセージＩＤ＝１のメッセージ状態管理キュー１３０１内に、メッセージ情報があるか調べる。尚、当該メッセージ状態管理キュー１３０１にはメッセージ情報がないため何もしない。
【０１１９】
次に、メッセージＩＤ＝２のメッセージ状態管理キュー１３１１を調べ、メッセージ種別＝２（受信）であること、及びメッセージの個数が１であることを取得する。
【０１２０】
続いて、上記ログ探索手段１５００は、図１７に示すログ書き込みポイント１７０２をログ探索ポイントとし、ログ探索ポイントより古いログデータの方向へメッセージＩＤ＝２で、メッセージ種別＝２（受信）を持つメッセージ情報ログを探索する。すなわち、マーカー６０６＝０ｘ５５（ログパケットの先頭の意）、ログ種別６０７＝０ｘ０９（システムコール発行の意）、機能コード６０５＝０ｘ０２（メッセージ受信発行の意）、メッセージＩＤ６０３＝０ｘ０００００００２（メッセージＩＤ＝２の意）であるものを探索する。尚、各数値は予め定義されているものである。
【０１２１】
すると、アドレス０ｘ８ｆ２４（１７０３）より、タイムスタンプ６０２＝０ｘ００００００２１の情報を取得できる。続いて、ログ探索手段１５００は、当該タイムスタンプをメッセージＩＤ＝２のメッセージ状態管理キュー１１０の対応する箇所に格納する。
【０１２２】
同様に、メッセージＩＤ＝３のメッセージ状態管理キュー１３２１を調べ、メッセージ種別＝２（受信）、メッセージの個数＝１であることを取得する。これに基づいて、上記同様、ログ探索手段１５００は、アドレス０ｘ８ｅ２０（１７０４）より、タイムスタンプ６０２＝０ｘ０００００００４の情報を取得できる。続いて、ログ探索手段１５００は、当該タイムスタンプをメッセージＩＤ＝３のメッセージ状態管理キュー１３２１に格納する。
【０１２３】
最後に、上記ログ探索手段１５００は、メッセージＩＤ＝４のメッセージ状態管理キュー１３３１を調べ、メッセージ種別＝１（送信）、メッセージの個数が１であることを取得する。続いて、ログ探索ポイントより古いログデータの方向へメッセージＩＤ＝４、メッセージ種別＝１（送信）であるメッセージ情報ログを探索する。すなわち、マーカー６０６＝０ｘ５５、ログ種別６０７＝０ｘ０９（システムコール発行）、機能コード６０５＝０ｘ０１（メッセージ送信発行）、メッセージＩＤ６０３＝０ｘ０００００００４であるものを探索する。これにより、アドレス０ｘ８ｅ２０（１７０１）より、発行タスクＩＤ６０１＝３、タイムスタンプ６０２＝０ｘ０００００００３を取得することができる。続いて、上記ログ探索手段１５００は、当該情報（発行タスクＩＤ、タイムスタンプ）をメッセージＩＤ＝４のメッセージ状態管理キュー１３３１に格納する。
【０１２４】
以上の操作によって、生成されるメッセージ状態管理キュー１１０を図１８に示す。つまり、実施の形態１で取得できなかった送信時のタスクＩＤとタイムスタンプ（１８０１）が格納されている事がわかる。以上の例によってメッセージ情報表示装置起動時に、メッセージ状態管理キューの初期状態を生成することで、正しくメッセージシーケンスメッセージ情報表示装置を表示した例を図１９に示す。
【０１２５】
実施の形態１に対応する図１４と異なり、起動ポイント以前の情報についてもタイムスタンプと送信タスクＩＤが取得できる。このため、本実施の形態２に記載のメッセージ情報表示装置では、メッセージ情報表示装置起動時点をまたがってペアとなるメッセージがある場合に、起動前のメッセージの発行順序やメッセージを発行したタスクを特定し、メッセージシーケンスを表示できるようになる。
【０１２６】
（実施の形態３）
以下、本発明のメッセージ情報表示装置における実施の形態３について図面を参照しながら詳細に説明していく。
【０１２７】
上記実施の形態１、２では、ＯＳメッセージ管理情報２０４にて待ちタスクＩＤについてのみ管理していた。つまり、図２５におけるパターンＢにおいてのみ、タスクＩＤ３０７に待ちタスクのＩＤが格納されていたのである。本実施の形態３では、待ちにならないタスクＩＤについても管理する構成とする。
【０１２８】
まず、実施の形態３におけるＯＳメッセージ管理情報の構成を図２０に示す。ＯＳメッセージ管理情報２００１は、タスクＩＤ３０７に待ちタスクのＩＤを格納するのではなく、メッセージを発行したタスクのＩＤである発行タスクＩＤを格納する。つまり、例えばＴａｓｋ３によりシステムコールが発行されると、ＯＳ１０３を構成するシステムコール処理部２０２は、上記Ｔａｓｋ３より受信したＴａｓｋ２へのメッセージ及びその他必要な情報をＯＳ管理情報変更部２０３に送信する。続いて、上記ＯＳ管理情報変更部２０３は、受信した上記メッセージ等に対応するＯＳメッセージ管理情報ブロック２０７の、バッファアドレス３０３を参照し、受信したメッセージを当該アドレスに対応するバッファ領域に格納するのは上記実施の形態１にて述べたとおりである。
【０１２９】
ここで、上記ＯＳ管理情報変更部は、図２０に示すアドレス３０２が示すメモリ領域に、メッセージを発行したタスクのＩＤ、つまり発行タスクＩＤを格納する。ここでは、上記Ｔａｓｋ３のＩＤが該当する。
この状態で、初期状態生成手段１０６がＯＳメッセージ状態管理情報２００１からメッセージ情報表示装置起動時のメッセージ情報を取得し、メッセージ状態管理キューを生成した場合のメッセージ状態管理キュー１１０は図２１に示すようになる。
【０１３０】
つまり、実施の形態１と異なり、例えばメッセージＩＤ４のタスクＩＤ２１０１には、メッセージを送信したＴａｓｋ３のタスクＩＤ：３が格納されている。
【０１３１】
以上のようにＯＳのメッセージ管理情報に発行タスクリストを加えた場合のメッセージ状態管理キューの出力例を図２２に示す。
【０１３２】
上記実施の形態１では、メッセージＩＤ＝４のメッセージ受信発行１４０３には、初期状態生成手段でタスクＩＤがわからなかったため、矢印で結ばれないデータが存在した（図１４：受信発行１４０３）。しかし本実施の形態３では、上記実施の形態１にて取得できなかった送信時のタスクＩＤを取得することができるため、図２２における受信発行２２０１に示すように、メッセージ状態管理キュー操作手段１１３は送信元のタスクを特定でき、即ちペアを作成する事が出来る。
【０１３３】
ただし、実施の形態２と異なり、初期状態生成手段１０６で生成したメッセージ情報は全てタイムスタンプが０のため、初期状態のメッセージは全てＹ軸の０の位置に表示されることとなる。しかし、ログのサイズは有限であるため、ログのサイズが小さい場合は、実施の形態２ではメッセージ情報が探索失敗に終わり、メッセージ情報が獲得できない場合もありえる。このような場合は、本構成をとれば、確実に送信時のタスクＩＤを取得できるので有用である。
【０１３４】
以上のように、タスク間メッセージ通信において、ＯＳが今まで管理をしていなかった送信元のタスクＩＤを管理する事で、ログのサイズに関係なくメッセージ情報表示装置起動ポイントをまたがってペアとなるメッセージがある場合に、起動前のメッセージを発行したタスクを特定し、メッセージシーケンスを表示できるようになる。尚、ＯＳによる上記送信元のタスクＩＤの管理は、タスク間メッセージ通信のメッセージシーケンス図を作成しない場合には無用と言えるが、メッセージシーケンス図を作成する場合においては非常に有効である。
【０１３５】
以上の３つの構成を用いれば、メッセージ情報表示装置起動時に初期状態生成手段が、初期状態のメッセージ状態管理キューを作成することにより、その後のタスク間メッセージ通信が発生した際に、正しいメッセージシーケンスが表示できるようになる。よって、マルチタスクアプリケーションの実行途中でメッセージ情報表示装置を起動しても、正しいメッセージシーケンスを表示することができる。
【０１３６】
以上、本発明を具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で変更可能であることはもちろんである。
【０１３７】
つまり、本発明のメッセージ表示装置をＯＳのタスク間メッセージ通信の際を利用する例について説明したが、セマフォや、イベントフラグなどＯＳの持つ他の同期通信手段についても同様に、初期状態生成手段を設ければ、途中起動しても正しいメッセージシーケンスを表示することができる。この場合は、メッセージ状態管理キューの代わりに、セマフォやイベントフラグのデータ状態を管理（記憶）する状態管理記憶手段を持たせ、初期状態生成手段に、ＯＳのセマフォやＯＳのイベントフラグのデータを取得する獲得手段と、獲得した情報をセマフォやイベントフラグデータを上記状態管理記憶手段のデータ構造に変換する獲得情報解析手段を備えることで実現できる。
【０１３８】
【発明の効果】
本発明によれば、メッセージ情報表示装置の起動時に、初期状態生成手段がＯＳメッセージ管理情報を取得する構成であるため、アプリケーションソフトウェアのタスク間メッセージ通信が起きた後に当該メッセージ情報表示装置を起動しても正しくメッセージシーケンスを表示可能となる。
【０１３９】
また、例えば上記初期状態をログより作成した場合には、外部端末を長時間起動した後等では初期状態を生成するのに時間がかかるが、本メッセージ情報表示装置では、初期状態の作成にログを使用しないので起動が高速である。
【０１４０】
さらに、上記ログを格納するための領域は無制限ではないため、ログより初期状態を作成する事ができない場合が起こりえるが、本メッセージ情報表示装置では、ログの領域をほとんど必要としないため、確実にメッセージシーケンスを表示可能となる。
【０１４１】
また、ログ探索手段を設けることにより、起動ポイント以前の情報についてもタイムスタンプと送信タスクＩＤを取得できる。このため、メッセージ情報表示装置起動時点をまたがってペアとなるメッセージがある場合に、起動前のメッセージの発行順序やメッセージを発行したタスクを特定し、メッセージシーケンスを表示できるようになる。
【０１４２】
また更に、タスク間メッセージ通信において、ＯＳが今まで管理をしていなかった送信元のタスクＩＤを管理する事で、メッセージ情報表示装置起動ポイントをまたがってペアとなるメッセージがある場合に、ログのサイズに関係なく起動前のメッセージを発行したタスクを特定し、メッセージシーケンスを表示できる。
【図面の簡単な説明】
【図１】本発明に係るメッセージ情報表示装置の概略構成を示す図である。
【図２】タスク間メッセージ通信を使ったアプリケーション構成の概念を示す図である。
【図３】ＯＳメッセージ管理情報の構造を示す図である。
【図４】ＯＳメッセージ管理ブロックの変化を示す図（パターンＡ）である。
【図５】ＯＳメッセージ管理ブロックの変化を示す図（パターンＢ）である。
【図６】メッセージ情報ログの構造の例を示す図である。
【図７】各手段間の相互処理を示す概略シーケンス図である。
【図８】メッセージ状態管理キュー及びメッセージ状態管理情報の構成を示した図である。
【図９】メッセージ状態管理キュー操作手段の処理手順を示すフローチャートである。
【図１０】メッセージが発生した場合のメッセージ状態管理キューの変化を示す図（パターンＡ）である。
【図１１】メッセージが発生した場合のメッセージ状態管理キューの変化を示す図（パターンＢ）である。
【図１２】メッセージ情報表示装置起動時のＯＳメッセージ管理情報の具体例を示す図である。
【図１３】実施の形態１の初期状態生成手段によって生成されたメッセージ状態管理キューの具体例を示す図である。
【図１４】実施の形態１におけるメッセージ情報表示装置が出力する画面例である。
【図１５】実施の形態２におけるメッセージ情報表示装置の概略構成を示す図である。
【図１６】メッセージ情報ログ探索手段の処理内容を示すフローチャートである。
【図１７】ログ内部データの具体例である。
【図１８】実施の形態２における初期状態生成手段によって生成されたメッセージ状態管理キューの具体例を示す図である。
【図１９】実施の形態２におけるメッセージ情報表示装置が出力する画面例である。
【図２０】実施の形態３におけるＯＳメッセージ管理情報の構造を示す図である。
【図２１】実施の形態３の初期状態生成手段によって生成されたメッセージ状態管理キューの具体例を示す図である。
【図２２】実施の形態３におけるメッセージ情報表示装置が出力する画面例である。
【図２３】メッセージ情報表示装置の概観図である。
【図２４】従来のメッセージ情報表示装置の構成を示す図である。
【図２５】基本的なメッセージ送受信パターン時のメッセージ情報表示装置の出力例である。
【図２６】タスク間メッセージ通信におけるＯＳとタスク間の関係を示すイメージ図である。
【図２７】従来のメッセージ情報表示装置の出力例。
【図２８】従来のメッセージ情報表示装置を途中起動した場合の出力例。
【符号の説明】
１０１　メッセージ情報表示装置
１０２　外部端末
１０３　ＯＳ
１０４　ログ
１０５　メッセージ情報ログ
１０６　初期状態生成手段
１０７　管理情報獲得手段
１０８　獲得情報解析手段
１０９　メッセージ状態管理情報
１１０　メッセージ状態管理キュー
１１１　タスク間メッセージ通信検知手段
１１２　メッセージ情報獲得手段
１１３　メッセージ状態管理キュー操作手段
１１４　メッセージシーケンス作成手段
１１５　表示手段
【図１】
2004054378.tif 000003
【図２】
2004054378.tif 000004
【図３】
2004054378.tif 000005
【図４】
2004054378.tif 000006
【図５】
2004054378.tif 000007
【図６】
2004054378.tif 000008
【図７】
2004054378.tif 000009
【図８】
2004054378.tif 000010
【図９】
2004054378.tif 000011
【図１０】
2004054378.tif 000012
【図１１】
2004054378.tif 000013
【図１２】
2004054378.tif 000014
【図１３】
2004054378.tif 000015
【図１４】
2004054378.tif 000016
【図１５】
2004054378.tif 000017
【図１６】
2004054378.tif 000018
【図１７】
2004054378.tif 000019
【図１８】
2004054378.tif 000020
【図１９】
2004054378.tif 000021
【図２０】
2004054378.tif 000022
【図２１】
2004054378.tif 000023
【図２２】
2004054378.tif 000024
【図２３】
2004054378.tif 000025
【図２４】
2004054378.tif 000026
【図２５】
2004054378.tif 000027
【図２６】
2004054378.tif 000028
【図２７】
2004054378.tif 000029
【図２８】
2004054378.tif 000030