(57)【要約】【課題】複数の情報処理装置間における情報処理のデバッグを行なう方法において、確実、簡単、あるいは効率的にデバッグできるようにする。【解決手段】プリンタ２０は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用して通信コマンドＳｔａｔｕｓをプリントサーバ１０に返す（Ｓ１０２）。通信コマンドＳｔａｔｕｓは引数を取るようになっており、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が受け取った引数の値をそのまま通信コマンドＳｔａｔｕｓの引数とする。エラーが生じると、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数の引数として“ＮｏｔＲｅａｄｙ”がプリントサーバ１０に渡される。次にプリンタ２０は、ＲｅｃｅｉｖｅＲｅｑｕｅｓｔ変数がｔｒｕｅ／ｆａｌｓｅ  の何れであるかを検査することで、エラーを判定する（Ｓ１０４）。ｆａｌｓｅ  ならば、そのことをデバック情報としてデバック作業者に知らせるために、プリンタ２０は、無効コマンドである通信コマンドＣｏｍｍｅｎｔ  とその引数として可視情報として出力したいエラーメッセージを送出する（Ｓ１０６）。【選択図】        図５
2004171318.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて、前記制御コマンドを監視することでデバックを行なうデバック方法であって、
前記制御コマンドの中に、本来の情報処理とは独立した無効コマンドを用意し、
前記制御コマンドを監視することにより、所定のデバッグ情報を取得する
ことを特徴とするデバッグ方法。
【請求項２】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて、前記制御コマンドを監視することでデバックを行なうデバック方法であって、
前記制御コマンドの中に、本来の情報処理とは独立した無効コマンドを用意し、
前記制御コマンドを監視することにより前記無効コマンドを認識し、この無効コマンドに基づいて所定のデバッグ情報を取得する
ことを特徴とするデバッグ方法。
【請求項３】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて、前記制御コマンドを監視することでデバックを行なうデバック方法であって、
前記情報処理ユニットの一方から、前記制御コマンドを前記情報処理ユニットの他方に送付するとともに当該送付した制御コマンドを無視することを指示する無視開始指示情報を送付し、この後、所定のタイミングで、送付した前記制御コマンドの前記無視を終了させることを指示する無視終了指示情報を前記他方の情報処理ユニットに送付する
ことを特徴とするデバッグ方法。
【請求項４】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおける、前記制御コマンドをデバッグ装置により監視することでデバックを行なうデバックシステムであって、
前記情報処理ユニットの一方は、前記所定の情報処理を行なう過程において、前記制御コマンドとして、本来の情報処理とは独立した無効コマンドを他方の前記情報処理ユニットに送付し、
前記デバッグ装置は、前記制御コマンドを監視することにより、所定のデバッグ情報を取得する
ことを特徴とするデバッグシステム。
【請求項５】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおける、前記制御コマンドをデバッグ装置により監視することでデバックを行なうデバックシステムであって、
前記情報処理ユニットの一方は、前記所定の情報処理を行なう過程において、前記制御コマンドとして、本来の情報処理とは独立した無効コマンドを他方の前記情報処理ユニットに送付し、
前記デバッグ装置は、前記制御コマンドを監視することにより前記無効コマンドを取得し、この取得した無効コマンドに基づいて所定のデバッグ情報を取得する
ことを特徴とするデバッグシステム。
【請求項６】
前記情報処理ユニットの一方は、前記無効コマンドに対応付けて、前記所定のデバッグ情報に関連する文字コードを、前記他方の情報処理ユニットに送付する
ことを特徴とする請求項４または５に記載のデバッグシステム。
【請求項７】
前記情報処理ユニットの一方は、前記所定のデバッグ情報に関連する文字コードとして、前記所定の情報処理を行なう過程におけるエラーを示す情報を送付する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項８】
前記情報処理ユニットの一方は、文字コードを前記無効コマンドに割り当てる
ことを特徴とする請求項４または５記載のデバッグシステム。
【請求項９】
前記デバッグ装置は、前記無効コマンドに対応付けられている文字コードを抽出する
ことを特徴とする請求項６から８のうちの何れか１項に記載のデバッグシステム。
【請求項１０】
前記デバッグ装置は、抽出した前記文字コードに基づいて、前記所定のデバッグ情報に対応するメッセージ情報を所定の表示デバイスに表示させるデバッグ情報出力制御部
を備えていることを特徴とする請求項９に記載のデバッグシステム。
【請求項１１】
前記情報処理ユニットの一方は、前記無効コマンドに対応付けて、当該無効コマンドの前および後の少なくとも一方に送られるコマンドを表す情報を、前記所定のデバッグ情報に関連する情報として、前記他方の情報処理ユニットに送付する
ことを特徴とする請求項４または５に記載のデバッグシステム。
【請求項１２】
前記情報処理ユニットの一方は、前記無効コマンドに対応付けて、前記所定の情報処理を行なう過程における処理の履歴を示す情報を、前記所定のデバッグ情報に関連する情報として、前記他方の情報処理ユニットに送付する
ことを特徴とする請求項４または５に記載のデバッグシステム。
【請求項１３】
前記情報処理ユニットの一方は、
前記所定の情報処理を行なうための情報処理部と、
前記情報処理部において前記所定の情報処理を行なう過程において、本来の情報処理とは独立した無効コマンドを他方の前記情報処理ユニットに送付させるコマンド制御部と
を備えたことを特徴とする請求項４から１２のうちの何れか１項に記載のデバッグシステム。
【請求項１４】
前記デバッグ装置は、
前記複数の情報処理ユニット間において交換される前記制御コマンドを監視することで前記制御コマンドの交換履歴を取得する通信ログ取得部と、
前記通信ログ取得部が取得した前記通信ログに含まれている前記無効コマンドに基づいて所定のデバッグ情報を抽出するデバッグ情報抽出部と
を備えたことを特徴とする請求項４から１３のうちの何れか１項に記載のデバッグシステム。
【請求項１５】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおける、前記制御コマンドをデバッグ装置により監視することでデバックを行なうデバックシステムであって、
前記情報処理ユニットの一方は、前記制御コマンドを前記情報処理ユニットの他方に送付するとともに当該送付した制御コマンドを無視することを指示する無視開始指示情報を送付し、この後、所定のタイミングで、送付した前記制御コマンドの前記無視を終了させることを指示する無視終了指示情報を前記他方の情報処理ユニットに送付する
ことを特徴とするデバッグシステム。
【請求項１６】
前記情報処理ユニットの一方は、前記無視開始指示情報を送付した後、前記無視終了指示情報を送付するまでの間に、前記所定のデバッグ情報に関連する制御コマンドを送付する
ことを特徴とする請求項１５に記載のデバッグシステム。
【請求項１７】
前記情報処理ユニットの一方は、
前記所定の情報処理を行なうための情報処理部と、
前記制御コマンドを前記情報処理ユニットの他方に送付させるコマンド制御部と、
前記コマンド制御部が送付させた前記制御コマンドを無視することを前記情報処理ユニットの他方に指示する無視開始指示部と、
前記無視開始指示部が前記制御コマンドの無視を指示した後、所定のタイミングで、前記コマンド制御部が送付させた前記制御コマンドを受け付けるよう前記情報処理ユニットの他方に指示する受付開始指示部と
を備えたことを特徴とする請求項１５または１６に記載のデバッグシステム。
【請求項１８】
前記デバッグ装置は、
前記複数の情報処理ユニット間において交換される前記制御コマンドを監視することで前記制御コマンドの交換履歴を取得する通信ログ取得部と、
前記無視開始指示部が前記制御コマンドの無視を指示した後、前記受付開始指示部が前記制御コマンドの受付けを指示するまでの間における、前記通信ログ取得部が取得した前記制御コマンドの交換履歴に基づいて、所定のデバッグ情報を抽出するデバッグ情報抽出部と
を備えたことを特徴とする請求項１５から１７のうちの何れか１項に記載のデバッグシステム。
【請求項１９】
前記デバッグ装置は、前記通信ログ取得部が取得した前記通信ログを格納する記憶部
を備えたことを特徴とする請求項１４または１８に記載のデバッグシステム。
【請求項２０】
制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて使用される情報処理ユニットであって、
前記所定の情報処理を行なうための情報処理部と、
前記情報処理部において前記所定の情報処理を行なう過程において、本来の情報処理とは独立した無効コマンドを他方の前記情報処理ユニットに送付させるコマンド制御部と
を備えたことを特徴とする情報処理ユニット。
【請求項２１】
制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて使用される情報処理ユニットであって、
前記所定の情報処理を行なうための情報処理部と、
前記情報処理部において前記所定の情報処理を行なう過程において、前記制御コマンドを前記情報処理ユニットの他方に送付するとともに当該送付した制御コマンドを無視することを指示する無視開始指示情報を送付させ、この後、所定のタイミングで、送付した前記制御コマンドの前記無視を終了させることを指示する無視終了指示情報を前記他方の情報処理ユニットに送付させるコマンド制御部と
を備えたことを特徴とする情報処理ユニット。
【請求項２２】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムに使用される、前記制御コマンドを監視することでデバックを行なうデバッグ装置であって、
前記複数の情報処理ユニット間において交換される前記制御コマンドを監視することで前記制御コマンドの交換履歴を取得する通信ログ取得部と、
前記通信ログ取得部が取得した前記通信ログに含まれている前記制御コマンドであって、前記所定の情報処理を行なう過程において本来の情報処理とは独立した無効コマンドに基づいて所定のデバッグ情報を抽出するデバッグ情報抽出部と
を備えたことを特徴とするデバッグ装置。
【請求項２３】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムに使用される、前記制御コマンドを監視することでデバックを行なうデバッグ装置であって、
前記複数の情報処理ユニット間において交換される前記制御コマンドを監視することで前記制御コマンドの交換履歴を取得する通信ログ取得部と、
前記情報処理ユニットの一方が前記制御コマンドの無視を指示した後前記制御コマンドの受付けを指示するまでの間における、前記通信ログ取得部が取得した前記制御コマンドの交換履歴に基づいて、所定のデバッグ情報を抽出するデバッグ情報抽出部と
を備えたことを特徴とするデバッグ装置。
【請求項２４】
情報処理部を備えた複数の情報処理ユニット間において、制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて使用される、前記情報処理ユニットをコンピュータを利用して構成する際に使用されるプログラムであって、コンピュータを、
前記情報処理部において前記所定の情報処理が行なわれる過程において、本来の情報処理とは独立した無効コマンドを他方の前記情報処理ユニットに送付させるコマンド制御部と
して機能させることを特徴とするプログラム。
【請求項２５】
情報処理部を備えた複数の情報処理ユニット間において、制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて使用される、前記情報処理ユニットをコンピュータを利用して構成する際に使用されるプログラムであって、コンピュータを、
前記制御コマンドを前記情報処理ユニットの他方に送付させるコマンド制御部と、
前記コマンド制御部が送付させた前記制御コマンドを無視することを前記情報処理ユニットの他方に指示する無視開始指示部と、
前記無視開始指示部が前記制御コマンドの無視を指示した後、所定のタイミングで、前記コマンド制御部が送付させた前記制御コマンドを受け付けるよう前記情報処理ユニットの他方に指示する受付開始指示部と
して機能させることを特徴とするプログラム。
【請求項２６】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムに使用される、前記制御コマンドを監視することでデバックを行なうデバッグ装置をコンピュータを利用して構成する際に使用されるプログラムであって、コンピュータを、
前記複数の情報処理ユニット間において交換される前記制御コマンドを監視することで前記制御コマンドの交換履歴を取得する通信ログ取得部と、
前記通信ログ取得部が取得した前記通信ログに含まれている前記制御コマンドであって、前記所定の情報処理を行なう過程において本来の情報処理とは独立した無効コマンドに基づいて所定のデバッグ情報を抽出するデバッグ情報抽出部と
して機能させることを特徴とするプログラム。
【請求項２７】
複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムに使用される、前記制御コマンドを監視することでデバックを行なうデバッグ装置をコンピュータを利用して構成する際に使用されるプログラムであって、コンピュータを、
前記複数の情報処理ユニット間において交換される前記制御コマンドを監視することで前記制御コマンドの交換履歴を取得する通信ログ取得部と、
前記情報処理ユニットの一方が前記制御コマンドの無視を指示した後前記制御コマンドの受付けを指示するまでの間における、前記通信ログ取得部が取得した前記制御コマンドの交換履歴に基づいて、所定のデバッグ情報を抽出するデバッグ情報抽出部と
して機能させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の情報処理ユニット間で制御コマンドを交換しながら所定の情報処理を進める情報処理システムにおけるデバックを行なう方法およびシステム、このシステムを構成する情報処理ユニットおよびデバッグ装置、並びに電子計算機（コンピュータ）を利用して前記デバックを行なうためのプログラムに関する。
【０００２】
【従来の技術】
今日、様々な情報処理装置が、家庭内やオフィス内にて使用されている。たとえば、家庭やオフィスなどにおいて、プリンタ装置やファクシミリ装置などの画像形成装置が広く利用されている。また、オフィス内では、それらの機能や複写装置のあるいはファイリング機能などを複合的に備える複合機も使用されている。さらに近年では、画像形成装置のデジタル化が進んでいる。
【０００３】
また、たとえば、ホストコンピュータやワークステーションなどの文書作成装置で作成された印刷データを印刷するプリンタ装置には、解像度が異なるものや、印刷速度の異なるものがある。また、単色印刷のものと多色印刷が可能なものなど様々なタイプのものがある。これら全てのタイプのプリンタ装置をそれぞれのホストコンピュータに直接接続すると、多大の費用を要し、また設置スペースの問題も発生する。
【０００４】
そこで近年では、プリンタ装置をＬＡＮ（ローカルエリアネットワーク）などの通信網に接続し、この通信網に接続されている複数のホストコンピュータや文書作成装置（クライアント端末）でプリンタ装置を共用することも行なわれるようになっている。この場合、必要に応じてプリントサーバをネット上に設けることもある。こうして、ネットワーク接続された複数の装置間で所定の印刷処理を行なう際には、複数の装置間でメッセージを交換しながら印刷処理を進めることとなる。
【０００５】
ところで、前述のパソコンやプリンタ装置あるいはプリントサーバなどの情報処理装置は、その多くが、装置内に組み込まれているソフトウェア（専用のアプリケーションプログラム）に基づいて動作するようになっている。複数の装置間でメッセージを交換しながら印刷処理などの所定の情報処理を進める場合も同様である。複数の装置間でメッセージ交換をしながら情報処理を円滑に進められるか否かは、両装置内に組み込まれているソフトウェアが正常に動作（この動作は、装置内のハードウェア要素に対する制御も含む）するか否かに左右されるので、そのソフトウェアのデバッグ作業が必要になる。
【０００６】
一方、ソフトウェアを開発する上で避けられない作業にデバック作業が存在する。パソコンなどの汎用コンピュータ上で実行されるアプリケーションソフトウェアのデバックでは、それらをサポートするためのソフトウェアも豊富に存在し利用することが可能である。しかしながら、装置内に組み込まれているソフトウェアにて動作するように構成されている組込システム（組込装置）上のソフトウェアのデバックでは、事情が大きく異なる。
【０００７】
たとえば、組込システムは、普通、個々の用途用に特殊化したハードウェアを構成する。これはパソコンなどの汎用コンピュータとは違い、デバックに利用可能な資源が大きく制限されることを意味する。特に、エラーを表示するためやデバック作業を行なうために重要な出力装置が必ずしも存在しないことが大きな違いとなっている。
【０００８】
結果として、近年のパソコンで利用されているＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）はおろか、文字をベースとしたＣＵＩ（Ｃｈａｒａｃｔｅｒ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）の環境すら存在しないことが珍しくない。そのため、ＣＵＩなどの入出力装置を前提としたデバックツール群は、組込システムのソフトウェア開発のためには通常利用不可能である。以上の理由から、組込システムのためのデバックツールや手法が色々と開発され、そして改良が行なわれてきているのが実状である（たとえば、特許文献１〜４を参照）。
【０００９】
【特許文献１】
特開平０８−０８７４２８号公報
【特許文献２】
特開平０５−０１２０６９号公報
【特許文献３】
特開平０９−３３０１９１号公報
【特許文献４】
特開２００１−２２２５０３号公報
【００１０】
たとえば、特許文献１には、組込装置を別のシステムによりソフトウェア的またはハードウェア的にエミュレートすることでデバックを行なうエミュレートタイプのデバック手法が提案されている。
【００１１】
また特許文献２には、デバックに必要なログをバッファとしてのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの内蔵メモリ上の一定領域に格納し、後からログを内蔵メモリから何らかの手段によって読み取ることによりデバックを行なう、デバック履歴を内蔵メモリに記録するタイプのデバック手法が提案されている。
【００１２】
また特許文献３には、デバックに必要なログをプリンタなどを利用して記録媒体に印刷することによりデバックを行なう、デバック履歴を記録媒体に出力するタイプのデバック手法が提案されている。
【００１３】
また特許文献４には、組込システムが持っている通信回線を一次的にデバックモード用の入出力として利用することでデバックを行なう、モード切替型のデバック手法が提案されている。
【００１４】
また、上述した特許文献１〜４に記載されているデバッグ手法以外にも、種々のデバッグ手法が知られている。たとえば、組込装置にＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ  ）の代わりにインサーキットエミュレータ（ＩＣＥ；ＩｎｃｉｒＣｕｉｔ  Ｅｍｕｌａｔｏｒ）を装着して利用し、このインサーキットエミュレータを介することによりステップ実行などのデバックを行なう手法や、デバックに必要なログをバッファとしてのハードディスク装置などの外部記憶装置に格納し、後からログを外部記憶装置から読み取ることによりデバックを行なう、デバック履歴を外部メモリに記録するタイプのデバック手法、あるいは、ＲＳ−２３２Ｃのようなシリアル回線のインタフェースを実装することで装置外部にデバックに必要な情報を出力させる手法などが知られている。
【００１５】
【発明が解決しようとする課題】
しかしながら、上述のデバッグ手法では、複数の装置間でメッセージを交換しながら印刷処理などの所定の情報処理を進めるシステムにおけるデバッグツールとして利用するには、取り扱い上、一長一短があり、デバッグを、確実、簡単、あるいは効率的に行なう、と言ったことを満たすものがなく、デバック作業が容易でない、あるいは使い勝手が悪い、というのが実状である。
【００１６】
本発明は、上記事情に鑑みてなされたものであり、簡易な構成により、複数の装置間でメッセージを交換しながら印刷処理などの所定の情報処理を進めるシステムにおいて、デバッグ作業を容易に進めることのできる手法やシステムを提供することを目的とする。また、本発明は、本発明のシステムを構成する情報処理ユニットおよびデバッグ装置を提供することを目的とする。また、本発明は、電子計算機（コンピュータ）を利用して前記デバックを行なうためのプログラムを提供することを目的とする。
【００１７】
【課題を解決するための手段】
すなわち、本発明に係る第１のデバック方法は、複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて、制御コマンドを監視することでデバックを行なうデバック方法であって、制御コマンドの中に、本来の情報処理とは独立した無効コマンドを用意し、制御コマンドを監視することにより、所定のデバッグ情報を取得することとした。
【００１８】
本発明に係る第１のデバックシステムは、複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおける、制御コマンドをデバッグ装置により監視することでデバックを行なうデバックシステムであって、情報処理ユニットの一方を、所定の情報処理を行なう過程において、制御コマンドとして、本来の情報処理とは独立した無効コマンドを他方の情報処理ユニットに送付するものとするとともに、デバッグ装置を、制御コマンドを監視することにより所定のデバッグ情報を取得するものとした。
【００１９】
本発明に係る第２のデバック方法は、複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて、制御コマンドを監視することでデバックを行なうデバック方法であって、制御コマンドの中に本来の情報処理とは独立した（本来の情報処理とは無関係な）無効コマンドを用意し、制御コマンドを監視することにより無効コマンドを認識し、この無効コマンドに基づいて所定のデバッグ情報を取得することとした。
【００２０】
本発明に係る第２のデバックシステムは、複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおける、制御コマンドをデバッグ装置により監視することでデバックを行なうデバックシステムであって、情報処理ユニットの一方を、所定の情報処理を行なう過程において、制御コマンドとして、本来の情報処理とは独立した無効コマンドを他方の前記情報処理ユニットに送付するものとするとともに、デバッグ装置を、制御コマンドを監視することにより無効コマンドを取得し、この取得した無効コマンドに基づいて所定のデバッグ情報を取得するものとした。
【００２１】
また、本発明に係る第３のデバック方法は、複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおいて、前記制御コマンドを監視することでデバックを行なうデバック方法であって、情報処理ユニットの一方から制御コマンドを情報処理ユニットの他方に送付するとともにこの送付した制御コマンドを無視することを指示する無視開始指示情報を送付し、この後、所定のタイミングで、送付した制御コマンドの無視を終了させる、つまり送付した制御コマンドの受付けを再開することを指示するための無視終了指示情報を他方の情報処理ユニットに送付することとした。
【００２２】
本発明に係る第３のデバックシステムは、複数の情報処理ユニット間において制御コマンドを交換しつつ所定の情報処理を行なう情報処理システムにおける、制御コマンドをデバッグ装置により監視することでデバックを行なうデバックシステムであって、情報処理ユニットの一方を、制御コマンドを情報処理ユニットの他方に送付するとともにこの送付した制御コマンドを無視することを指示する無視開始指示情報を送付し、この後、所定のタイミングで、送付した制御コマンドの無視を終了させることを指示する無視終了指示情報を他方の情報処理ユニットに送付するものとした。
【００２３】
また、従属項に記載された発明は、本発明に係るデバッグシステムのさらなる有利な具体例を規定する。さらに、本発明に係る情報処理ユニットやデバッグ装置は、本発明に係るデバッグ方法やデバッグシステムを実現するために好適なものである。また、本発明に係るプログラムは、本発明に係る情報処理ユニットやデバッグ装置を、電子計算機を用いてソフトウェアで実現するために好適なものである。なお、プログラムは、コンピュータ読取り可能な記憶媒体に格納されて提供されてもよいし、有線あるいは無線による通信手段を介して配信されてもよい。
【００２４】
【作用】
上記第１および第２のデバッグ方法およびシステムにおいては、複数の情報処理ユニット間において情報処理をする際に取り交わされる制御コマンドの中に、本来の情報処理とは無関係であって、独立した、つまり本来の情報処理には何ら影響を与えることのない無効コマンドを新たに用意する。そして、制御コマンドの交換履歴を監視することによりデバッグに資する情報（デバッグ情報）を抽出してデバッグ作業者に提示可能とすることで、効率的なデバッグを行なうことができるようにする。
【００２５】
一方、第３のデバッグ方法およびシステムにおいては、複数の情報処理ユニット間で情報処理をする過程において、一旦、情報処理ユニットの一方から他方へ送付される制御コマンドを無視するよう他方に指示し、この後、制御コマンドの受付けを再開するまでの間をデバッグ作業に利用することとする。たとえば、制御コマンドの無視を指示した後受付けを再開するまでの間における制御コマンドの交換履歴を監視し、デバッグに資する情報（デバッグ情報）を抽出してデバッグ作業者に提示可能とすることで、効率的なデバッグを行なうことができるようにする。
【００２６】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００２７】
図１は、本発明に係るデバッグ方法を実施するデバッグ装置を組み込んだ情報処理システムの第１実施形態を示す図である。
【００２８】
図示するように、図示しないパソコンなどから印刷データを受け取り印刷処理を指示するプリントサーバ１０と、印刷処理を実行するプリンタ２０と、プリントサーバ１０とプリンタ２０との間のメッセージ交換を監視するデバッグ装置の一例であるプロトコルアナライザ３０とが、印刷制御線７により接続されて、第１実施形態の情報処理システム１や情報処理システム１についての第１実施形態のデバックシステム３が構築されている。情報処理システム１は、プリントサーバ１０とプリンタ２０とによりプリントサーバシステムとして稼働する。なお、プロトコルアナライザ３０を中心としてデバックシステム３が構成されるのはいうまでもない。
【００２９】
プリントサーバ１０は、通信回線９と接続されている。通信回線９には、印刷を要求するパソコンなどの他に各種サーバなども接続され、ネットワークシステムＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を構成している。
【００３０】
プリントサーバ１０は、通信回線９を介して印刷データをパソコンや他のサーバなどから受け取り、印刷制御線７を介してプリンタ２０に印刷を指示する。プリンタ２０は、プリントサーバ１０から制御を受けて印刷を行なう。このとき、印刷制御線７は、プリントサーバ１０とプリンタ２０との間のメッセージ交換を結ぶ。たとえば、プリントサーバ１０からの通信コマンドをプリンタ２０に伝え、プリンタ２０からの通信コマンドをプリントサーバ１０に伝える。
【００３１】
プロトコルアナライザ３０は、プリントサーバ１０とプリンタ２０との間のメッセージ交換についてのデバック時に、印刷制御線７に繋がれることにより、印刷制御線７に流れるメッセージデータの記録（以下通信ログともいう）を随時取得し、所定の記憶媒体にその通信ログを格納する。デバックを行なう作業者は、プロトコルアナライザ３０により取得された通信ログを参照して、必要なデバック情報を得る。
【００３２】
第１実施形態では、情報交換用のコードとして、ＡＳＣＩＩ（Ａｍｅｒｉｃａｎ  Ｓｔａｎｄａｒｄ  Ｃｏｄｅ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎｔｅｒｃｈａｎｇｅ）コードを使用する。このＡＳＣＩＩコードの２０（Ｈｅｘ）から７Ｅ（Ｈｅｘ）が、プロトコルアナライザ３０にて文字コードとして認識される。それ以外のコードは、プリントサーバ１０とプリンタ２０との間における印刷処理のためのコマンドコード（制御コード）として使用される。
【００３３】
たとえば、第１実施形態の情報処理システム１やデバックシステム３では、先ず、プリントサーバ１０とプリンタ２０との間のメッセージ交換における通信プロトコル上に、本来の情報処理としての印刷処理とは独立した（本来の情報処理とは無関係な）無効コマンドとして、印刷処理には全く影響を及ぼさないコメントコマンドを含める。そして、このコメントコマンドが持つデータ領域に、デバックのためのメッセージを埋め込むようにする。ロトコルアナライザ３０は、コメントコマンドを含む全てのコマンドの通信ログを取得する。
【００３４】
デバック作業者は、プロトコルアナライザ３０により取得した通信ログを参照して、コメントコマンドを用いたメッセージを読み、必要なデバック情報を得る。これによりデバック作業が容易となる。以下、第１実施形態の特徴部分であるコメントコマンドやデバックのためのメッセージについて、具体的に説明する。
【００３５】
図２は、第１実施形態のデバックシステム３に使用される情報処理装置であって、プリントサーバ１０やプリンタ２０などの情報処理装置におけるデバック機能に着目したブロック図である。
【００３６】
この第１実施形態の情報処理装置１００は、所定の情報処理を実行する情報処理部１１０と、他の情報処理装置１００との間で通信を行なう通信部１２０と、デバッグに寄与するコメントコマンドやデバックのためのメッセージを制御コマンドの一例である無効コマンドに付加するコマンド制御部１３０とを備える。通信部１２０は、コマンド制御部１３０からの指示の元に、他の情報処理装置１００との間でのメッセージ交換における通信プロトコル上に、印刷処理などの情報処理には影響を及ぼさないコメントコマンドを含め、このコメントコマンドが持つデータ領域にデバックのためのメッセージを埋め込んだり、コメントコマンド自体がメッセージの役割を担うようにしたりする。
【００３７】
図３は、第１実施形態のデバックシステム３に使用されるプロトコルアナライザ３０などのデバッグ装置におけるデバッグ機能に着目したブロック図である。この第１実施形態のデバッグ装置２００は、プリントサーバ１０とプリンタ２０との間のメッセージ交換を監視して制御コマンドの交換履歴の一例である通信ログを取得する通信ログ取得部２１０と、通信ログ取得部２１０により取得された通信ログを格納する記憶部２２０と、通信ログ取得部２１０により取得された通信ログ（記憶部２２０から読み出したものでもよい）を解析して所定のデバッグ情報を抽出するデバッグ情報抽出部２３０とを備える。
【００３８】
デバッグ情報抽出部２３０は、先ず、通信ログ中に含まれている通信コマンドを解析し、通信コードのうちの文字コードではないものはコマンドコード（制御コード）であると解釈し、そのコマンドコードをデバッグ情報出力制御部２４０に渡す。また、デバッグ情報抽出部２３０は、コマンドコード中の、複数の情報処理装置１００間での情報処理とは独立した（事実上何の動作もしない）無効コマンドをピックアップする。また、デバッグ情報抽出部２３０は、この無効コマンドの付加情報としてコメントメッセージを示す文字コードが含まれているか否かを解析する。文字コードが含まれている無効コマンドを、コメントコマンドという。
【００３９】
デバッグ情報抽出部２３０は、無効コマンドが文字コードが含まれているコメントコマンドであった場合には、その文字コードを出力可能な文字情報に変換し、メッセージ情報としてデバッグ情報出力制御部２４０に渡す。デバッグ情報抽出部２３０からデバッグ情報出力制御部２４０に渡されたコマンドコードやメッセージ情報は、デバッグ情報として利用されるものである。
【００４０】
また、デバッグ装置２００は、デバッグ情報抽出部２３０により抽出されたコマンドコードやメッセージ情報などのデバッグ情報に基づいて、所定の可視情報を、当該デバッグ装置２００に組み込まれている液晶デバイス２４２やモニタ出力端子を介して接続されるＣＲＴモニタ２４４などの表示デバイスに表示させたり、あるいはプリンタ２４６により紙媒体に印刷させたりするデバッグ情報出力制御部２４０を備える。
【００４１】
デバッグ情報出力制御部２４０は、たとえば、デバッグ情報抽出部２３０からコマンドコードを受け取ると、このコマンドコードを１６進数の可視情報にして液晶デバイス２４２などに出力させる。一方、デバッグ情報抽出部２３０からメッセージ情報を受け取ると、可視可能なメッセージ情報として液晶デバイス２４２などに出力させる。
【００４２】
図４は、第１実施形態のデバックシステム３において利用する通信コマンド体系の一例を示す図である。ここでは、説明の単純化のために、通信コマンド中の４命令のみを示す。
【００４３】
通信コマンドは、先ず、プリントサーバ１０からプリンタ２０に送信される通信コマンドＣＭＤ１０と、プリンタ２０からプリントサーバ１０に送信される通信コマンドＣＭＤ２０と、プリントサーバ１０およびプリンタ２０の双方から送信可能な通信コマンドＣＭＤ３０、の３種類に大別することができる。
【００４４】
ここで、第１実施形態にて利用される４命令として、先ず、通信コマンドＣＭＤ１０として、１ページ分のプリント動作を指示する通信コマンドＰｒｉｎｔ  と、プリンタ２０の状態を問い合わせるための通信コマンドＲｅｑＳｔａｔｕｓ  の２種類が存在する。
【００４５】
また、通信コマンドＣＭＤ２０としては、プリントサーバ１０からの問い合わせに対してプリンタ２０の状態を返す通信コマンドＳｔａｔｕｓが存在する。また、通信コマンドＣＭＤ３０としては、何も動作を行なわないコメントコマンドである通信コマンドＣｏｍｍｅｎｔ  が存在する。
【００４６】
各通信コマンドには、コマンドコードが割り振られており、実際の通信時にはコマンドコードが印刷制御線７に送信される。また、たとえば、通信コマンドＳｔａｔｕｓと通信コマンドＣｏｍｍｅｎｔ  のように、通信コマンドの中にはデータ領域として引数（付加情報）を持つものがある。この通信コマンドの引数は、コマンドコードが送信された直後に続いて送信される。
【００４７】
ここで、通信コマンドＣｏｍｍｅｎｔ  の引数は、メッセージとして認識されるよう、当然のごとく、文字コード２０（Ｈｅｘ）〜７Ｅ（Ｈｅｘ）を割り当てる。
【００４８】
図５は、図４で説明した通信コマンドを利用したプリントサーバ１０とプリンタ２０との間の通信例（第１例）を説明する図である。ここで、図５（Ａ）は、プリンタ２０のプログラムコードの第１例を示し、図５（Ｂ）は、図５（Ａ）のプログラムコードが実行された場合に結果として行なわれるプリントサーバ１０とプリンタ２０との間の通信の様子を示す。
【００４９】
先ず、図５（Ａ）に示すプログラムコードで利用されている関数や環境について説明する。通信コマンドＳｔａｔｕｓは、プリンタ２０がプリントサーバ１０から通信コマンドＲｅｑＳｔａｔｕｓ  を受信したときのみプリントサーバ１０へ送信することが許される。もしも通信コマンドＲｅｑＳｔａｔｕｓ  を受信していないのに送信した場合は“バグ”である。プリンタ２０が通信コマンドＲｅｑＳｔａｔｕｓ  を受信したかどうかは“ＲｅｃｅｉｖｅＲｅｑｕｅｓｔ”という変数により知ることができる。この変数ＲｅｃｅｉｖｅＲｅｑｕｅｓｔは、真偽値（ｔｒｕｅ，ｆａｌｓｅ  ）をとり、通信コマンドＲｅｑＳｔａｔｕｓ  をプリントサーバ１０より受信した場合に自動的に“ｔｒｕｅ”とされ、それ以外は“ｆａｌｓｅ  ”とされる。これらのコマンド処理はプリンタ２０のコマンド制御部１３０にて行なわれる。
【００５０】
通信コマンドＳｔａｔｕｓは、プリンタ２０の状態をプリントサーバ１０へ返し、通信コマンドＰｒｉｎｔ  を受入れ可能ならば“Ｒｅａｄｙ  ”をプリントサーバ１０へ返し、それ以外の場合は“ＮｏｔＲｅａｄｙ”をプリントサーバ１０へ返す。通信コマンドＰｒｉｎｔ  については通信コマンドＳｔａｔｕｓで知ることができ、プリンタ２０の状態が“Ｒｅａｄｙ  ”のときにのみ送信可能である。それ以外の通信コマンドの送信については特に制限はない。
【００５１】
印刷制御線７に通信コマンドを送信するためには“ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  ”という関数を利用する。このＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数は、通信コマンドを受け取り、また存在するならば通信コマンドの引数も受け取り、通信コマンドに対応したコマンドコードと引数を印刷制御線７上に送信する。
【００５２】
次に、図５（Ａ）に示す第１例のプログラムコードについて説明する。先ず、プリンタ２０のコマンド制御部１３０は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用して通信コマンドＳｔａｔｕｓを通信部１２０を介してプリントサーバ１０に返す（Ｓ１０２）。
【００５３】
通信コマンドＳｔａｔｕｓは引数を取るようになっている。ここでは、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が受け取った引数の値をそのまま通信コマンドＳｔａｔｕｓの引数とする。説明の都合上、ここではＴｒａｎｓｍｉｔＳｔａｔｕｓ関数の引数として“ＮｏｔＲｅａｄｙ”がプリントサーバ１０に渡されるものとする。
【００５４】
ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数の呼出しが行なわれた後、次にエラー検出用のプログラムコードが挿入されている（Ｓ１０４）。コマンド制御部１３０は、このコードにおいて、先ずエラー要因が起きているか否かを検査する。具体的には、ＲｅｃｅｉｖｅＲｅｑｕｅｓｔ変数が“ｔｒｕｅ”になっているか、それとも“ｆａｌｓｅ  ”であるのかを検査することで、エラーを判定する。すなわち、通信コマンドＲｅｑＳｔａｔｕｓ  を受け取っていればＲｅｃｅｉｖｅＲｅｑｕｅｓｔ変数が“ｔｒｕｅ”になっている。もし何らかの要因でＲｅｃｅｉｖｅＲｅｑｕｅｓｔ変数が“ｆａｌｓｅ  ”ならば、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が呼び出されていること自体がプログラムの動作として正常ではない。この場合は、そのことをデバック情報としてデバック作業者に知らせるために、コマンド制御部１３０は、エラーメッセージを印刷制御線７に送出する（Ｓ１０６）。
【００５５】
具体的には、コマンド制御部１３０は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用して、コメントコマンドである通信コマンドＣｏｍｍｅｎｔ  を送信する。通信コマンドＣｏｍｍｅｎｔ  の引数は、可視情報として出力したいエラーメッセージである。本例では、ここでバグが発生し、エラーメッセージの出力がなされたものとする。図示した例では、“Ｓｏｍｅｔｈｉｎｇ  ｗｒｏｎｇ．  Ｒｅｑｕｅｓｔ  ｃｏｍｍａｎｄ  ｈａｓ  ｎｏｔ  ｂｅｅｎ  ｒｅｃｅｉｖｅｄ．  ”なるメッセージに対応する文字コードが送出される。コマンド制御部１３０は、最後にＴｒａｎｓｍｉｔＳｔａｔｕｓ関数を通過したのでＲｅｃｅｉｖｅＲｅｑｕｅｓｔをｆａｌｓｅ  にして、ここでの処理を完了する（Ｓ１０８）。
【００５６】
図５（Ａ）に示す第１例のプログラムコードに基づき、プリントサーバ１０とプリンタ２０との間では、以下のような通信がなされる。先ず、プリンタ２０の通信部１２０が、プリンタ２０にて図５（Ａ）のステップＳ１０２のプログラムコードにより生成され送信された通信コマンドＳｔａｔｕｓを受け取ると、プリントサーバ１０のコマンド制御部１３０は、通信コマンドＳｔａｔｕｓから所定の情報を抽出する（Ｓ１１２）。今回の場合は、プリントサーバ１０はプリンタ２０の情報として“ＮｏｔＲｅａｄｙ”を受け取っている。そのため、コマンド制御部１３０は、通信コマンドＰｒｉｎｔ  を利用できないと判断する。つまり、プリンタ２０は、通信コマンドＳｔａｔｕｓによりプリントサーバ１０に制限事項を伝えることで、プリントサーバ１０による印刷処理の制御に影響を与える。
【００５７】
次に、プリントサーバ１０の通信部１２０が、プリンタ２０にて図５（Ａ）のステップＳ１０４のプログラムコードにより生成され送信された通信コマンドＣｏｍｍｅｎｔ  を受け取ると、プリントサーバ１０のコマンド制御部１３０は所定の情報を抽出する（Ｓ１１４）。通信コマンドＣｏｍｍｅｎｔ  はエラーメッセージをその引数として持つ。
【００５８】
ここで、通信コマンドＣｏｍｍｅｎｔ  は引数とともにプリントサーバ１０に受信されるが、プリントサーバ１０のコマンド制御部１３０は、印刷処理に関わるコマンドコード（制御コード）の性質上はそれを単純に無視するのみで、情報処理部１１０（たとえばサーバ機能部など）における印刷処理には影響を全く受けない。また、プリンタ２０のコマンド制御部１３０自体も通信コマンドＣｏｍｍｅｎｔ  を送信するか否かに関わらず情報処理部１１０（たとえばプリントエンジンなど）における動作は変わらない。どちらにしろ、通信コマンドＣｏｍｍｅｎｔ  が送受信されるか否かはプリントサーバシステムの印刷処理に影響を全く与えない。
【００５９】
図６は、図５で示した通信例を含む通信ログをプロトコルアナライザ３０を利用して収集し可視情報として出力した一例を示す図である。
【００６０】
プロトコルアナライザ３０は、プリントサーバ１０とプリンタ２０との間で取り交わされる通信コードを取得し、コマンドコードを送信された順に上から記録していくことでログファイルを生成する。ここで、プロトコルアナライザ３０は、プリントサーバ１０とプリンタ２０との間で取り交わされる通信コードのうち、文字コードであるものは文字として、文字コードではないものは１６進数で出力（たとえば液晶デバイス２４２への表示出力やプリンタ２４６による印刷出力）するものとする。
【００６１】
プロトコルアナライザ３０にて図５（Ａ）に示すプログラムコードを監視していると、先ず、ステップＳ１０２のプログラムコードにより生成された通信コマンドＳｔａｔｕｓのコマンドコード“０３”がデバッグ情報抽出部２３０により抽出される。“０３”は、文字コードからは外れているため、デバッグ情報出力制御部２４０の制御の元、１６進（つまり“０３”そのまま）で液晶デバイス２４２などに表示される（Ｓ１２２）。あるいは、プリンタ２４６にて紙媒体などに印刷出力される。
【００６２】
また、通信コマンドＳｔａｔｕｓには引数が存在し、図５（Ａ）に示す例では、“ＮｏｔＲｅａｄｙ”が返されるので、デバッグ情報抽出部２３０は、引数ＮｏｔＲｅａｄｙのコード“０１”を抽出する。“０１”も文字コードからは外れているため、デバッグ情報出力制御部２４０の制御の元、通信コマンドＳｔａｔｕｓのコマンドコード“０３”と同列順に（図中“０３”の右側に）、１６進（つまり“０１”そのまま）で液晶デバイス２４２などに表示される（Ｓ１２４）。あるいは、プリンタ２４６にて紙媒体などに印刷出力される。
【００６３】
次に、デバッグ情報抽出部２３０は、ステップＳ１０６のプログラムコードにより生成された通信コマンドＣｏｍｍｅｎｔ  のコマンドコード“０４”を抽出する（Ｓ１２６）。この“０４”も文字コードからは外れているため、デバッグ情報出力制御部２４０の制御の元、１６進（つまり“０４”そのまま）で液晶デバイス２４２などに表示される（Ｓ１２６）。あるいは、プリンタ２４６にて紙媒体などに印刷出力される。
【００６４】
また、通信コマンドＣｏｍｍｅｎｔ  には引数が存在し、図５（Ａ）に示す例では、“Ｓｏｍｅｔｈｉｎｇ  ｗｒｏｎｇ．  Ｒｅｑｕｅｓｔ  ｃｏｍｍａｎｄ  ｈａｓ  ｎｏｔ  ｂｅｅｎ  ｒｅｃｅｉｖｅｄ．  ”なるメッセージに対応する文字コードが送出されている。プロトコルアナライザ３０のデバッグ情報抽出部２３０は、これをメッセージ情報を表す文字コードとして認識し、文字として通信ログに記録する。これにより、デバッグ情報出力制御部２４０の制御の元、通信コマンドＣｏｍｍｅｎｔ  のコマンドコード“０４”と同列順に（図中“０４”の右側に）、液晶デバイス２４２などに文字として表示される（Ｓ１２８）。あるいは、プリンタ２４６にて紙媒体などに印刷出力される。
【００６５】
なお、上述したログ取得に際しては、いわゆるファイルシステムのような予め定められているファイルサイズ（たとえば４キロバイト以上というように比較的大きい）にしてからログを残すのではなく、通信コマンドのコマンドコードを抽出する都度、あるいはそれの引数を抽出する都度記録するので、書き込みが行なわれるまでの遅延は非常に小さい。
【００６６】
したがって、デバック作業者は、図６の通信ログ中に通信コマンドＣｏｍｍｅｎｔ  を利用したエラーメッセージを簡単に発見することができる。また、通信コマンドＳｔａｔｕｓ（Ｓ１２２）およびその引数（Ｓ１２４）が送信された直後にエラーが発生したことを知ることができる。つまり、通信系のデバックにおいて、通信を行なったときとその前後の情報の時間的関係を決定付けることができる。これにより、円滑にデバックを行なうことが可能となる。
【００６７】
なお、上記構成において、無効コマンドを監視することによりデバッグ情報を得るデバッグ装置の一例であるプロトコルアナライザは、無効コマンドを監視することでデバッグ情報を得る機能をなす専用のハードウェア回路で構成してもよいし、パソコンやワークステーションなどの汎用のコンピュータを利用して構成してもよい。つまり、無効コマンドを監視することでデバッグ情報を得る一連の処理をハードウェアにより実行させることもできるが、ソフトウェアを利用して実行させることもできる。
【００６８】
無効コマンドを監視してデバッグ情報を得る処理をソフトウェアにより実行させる場合には、全体の動作を制御するソフトウェアであるＯＳ（オペレーティングシステム）と、前述の無効コマンドを監視してデバッグ情報を得る機能をなすためのソフトウェアであるアプリケーションプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで各種の機能を実行することが可能なたとえば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる（組み込まれる）。これにより、本発明に係るデバッグ装置を、プログラムに基づいてソフトウェア的に実現するようになる。
【００６９】
記録媒体は、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ  ）、ＤＶＤを含む）、光磁気ディスク（ＭＤ（Ｍｉｎｉ  Ｄｉｓｃ  ）を含む）、もしくは半導体メモリなどよりなるパッケージメディア（可搬型の記憶媒体）により構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供されてもよいし、プログラムが記録されているＲＯＭやハードディスクなどで構成されてもよい。あるいは、ソフトウェアを構成するプログラムが、有線あるいは無線による通信手段を介して配信されてもよい。
【００７０】
たとえば、無効コマンドを監視することでデバッグ情報を得る機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、無効コマンドを監視することでデバッグ情報を得ることによる上記実施形態で説明した効果は達成される。この場合、記憶媒体から読み出されたプログラムコード自体が無効コマンドを監視しデバッグ情報を得る機能を実現することになる。
【００７１】
また、コンピュータが読み出したプログラムコードを実行することにより、無効コマンドを監視することでデバッグ情報を得る機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステムＯＳなどが実際の処理の一部または全部を行ない、その処理によって無効コマンドを監視しデバッグ情報を得る機能が実現される場合であってもよい。
【００７２】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によって無効コマンドを監視してデバッグ情報を得る機能が実現される場合でもよい。
【００７３】
また、上記構成において、デバッグ情報の抽出に好適な無効コマンドを送出する情報処理装置（情報処理ユニット）についても、その機能をなす専用のハードウェア回路で構成してもよいし、パソコンやワークステーションなどの汎用のコンピュータを利用して構成してもよい。
【００７４】
なお、上記第１実施形態の構成では、デバッグ装置２００が、無効コマンド（コメントコマンド）を認識する機能を持つものとして説明したが、この機能を備えていないデバッグ装置、たとえば、既存のプロトコルアナライザをそのまま利用することも可能である。既存のプロトコルアナライザ自体は、通信ログ中の文字コードを認識できる機能を備えている。この機能を利用することで、コメントコマンドの存在を知らなくても、制御コマンド中に埋め込まれている本来の情報処理とは独立した（本来の情報処理とは無関係な）メッセージ情報を抽出してデバッグ作業者に提示することは可能である。逆に、無効コマンド（コメントコマンド）を認識する機能を持つ構成とすれば、無効コマンド（コメントコマンド）を認識し、その部分のメッセージ情報や、近傍の制御コマンドのみを抽出してデバッグ作業者に提示することも可能となる。
【００７５】
以上説明したように、第１実施形態の構成によれば、従来の通信経路上の情報のデバッグ手法と同様に、プリントサーバ１０とプリンタ２０との間のメッセージ交換すなわち制御コマンドのやり取りをプロトコルアナライザ３０にて監視すれば、通信ログから事前に埋め込んである無効コマンドを認識することで、デバッグに必要なエラーメッセージを簡単に抽出することができ、これにより、デバックを円滑に進めることができるようになる。
【００７６】
すなわち、上記第１実施形態のデバッグシステムの構成としては、プリントサーバ１０とプリンタ２０との間のメッセージ交換における通信プロトコル上に、印刷処理には全く何の影響も及ぼさない無効コマンドを新規に用意するとともに、その付加情報としてメッセージを埋め込むという従来にない新規な構成としている。この変更は、たとえば、情報処理（本例での印刷処理）のためのアプリケーションソフトウェアの変更で対処可能であるので、その実現は容易である。
【００７７】
加えて、デバック情報を収集するために通信ログを取得するデバッグツール（本例のプロトコルアナライザ３０に相当）は、基本的には、従来のデバッグツールを利用することができる。すなわち、従来の通信経路上の情報のデバッグ手法と同様に、制御コマンドのやり取りを監視し、デバッグツール（本例のプロトコルアナライザ３０）に組み込まれている文字コードを認識できる機能を利用して、デバッグ情報を作業者に提示することができる。
【００７８】
また、無効コマンドを認識する機能を持たせる場合であっても、その機能を追加するだけの変更で済む。この変更も、たとえばデバッグツール（本例のプロトコルアナライザ３０）に組み込まれている従来のデバッグ用のアプリケーションソフトウェアの変更で対処能であるので、その実現は容易である。
【００７９】
つまり、上述した第１実施形態への対応は非常に簡単であるので、その実現が極めて簡易である。そして、これによる効果として、従来のデバッグ手法では得られない優位な効果が得られる。
【００８０】
第１に、デバック情報を収集するために通信ログを取得するツールがあればよく、通信ログを取得するツールは通信を行なう情報処理装置を開発する場合にほぼ必ず必要とされるため、所用の簡易な修正は必要ではあるものの、ソフトウェアやハードウェアを全く新たに用意するという必要はない。
【００８１】
たとえば、ＲＳ−２３２Ｃのようなシリアル回線のインタフェースを実装することで装置外部にデバックに必要な情報を出力させるデバッグ手法が知られているが、この手法では、別途シリアルなどのデバック出力の実装が必要となるという問題や、出力コネクタの位置次第では製品に組み込まれた状態の基板で利用するのが困難な場合がある。
【００８２】
これに対して、上述した第１実施形態のデバッグ手法では、情報処理装置間の通信ライン上の通信データ（特に制御コマンド）を監視するだけでよく、デバック出力のための新たなコネクタ実装が不要であり、このような問題から解消される。
【００８３】
第２に、コンピュータ言語に利用される入出力装置のモデルと上記第１実施形態とは、相性が良いため導入が容易である。
【００８４】
第３に、新たにハードウェアを実装する必要がないので、既存の組込システム上にも簡単に追加可能である。たとえば特開平０８−０８７４２８（特許文献１）には、組込装置を別のシステムによりソフトウェア的またはハードウェア的にエミュレートすることでデバックを行なうデバック手法が提案されているが、この手法では、エミュレート用の環境を組込システムごとに構築する必要があるという問題や、エミュレートされた環境が実環境と全く挙動が同じものである保証がなく、さらに実環境より通常低速であるという問題がある。
【００８５】
これに対して、上述した第１実施形態のデバッグ手法では、情報処理装置間の通信ライン上の通信データ（特に制御コマンド）を監視するだけでよく、実環境にてデバッグを行なうことができるので、このような問題から解消される。
【００８６】
第４に、製品に組み込まれた状態で組込システムをデバックすることが容易である。たとえば、組込装置にＣＰＵの代わりにインサーキットエミュレータを利用するデバッグ手法が知られている。しかしながら、この手法は、ＣＰＵごとにインサーキットエミュレータを用意しなければならないという問題がある。また、採用するＣＰＵに対応するインサーキットエミュレータが存在する保証がないこともある。さらに、基板が製品に組み込まれた状態でインサーキットエミュレータを利用するのは非常に困難である。これに対して、上述した第１実施形態のデバッグ手法では、ＣＰＵの代わりに利用するというものでないので、このような問題から解消される。
【００８７】
第５に、ユーザが情報処理装置を利用している時点でも、製品のデバック情報を収集することが可能である。すなわち、実環境にて、リアルタイムで不具合の有無を監視することも可能である。たとえば、特開２００１−２２２５０３（特許文献４）には、組込システムが持っている通信回線を一次的にデバックモード用の入出力として利用することでデバックを行なうデバック手法が提案されているが、この手法では、特殊なデバック用のモードの実装を必要とすることに加えて、通信回線を利用した機能の動作のデバックには利用できないという問題がある。
【００８８】
これに対して、上述した第１実施形態のデバッグ手法では、情報処理装置間の通信ライン上の通信データ（特に制御コマンド）を監視するだけでよく、特殊なデバック用のモードの実装を必要としないし、説明するまでもなく、通信回線を利用した機能の動作のデバック自体にも適用可能であるので、このような問題から解消される。
【００８９】
第６に、通信ログを記録するための記憶媒体に自由度あることに加えて、コメントコマンドに格納することが可能なメッセージに制限はないため、所定の装置にて、たとえばソフトウェアで必要な処理を施してからデバック情報を表示出力あるいは印刷出力することも可能である。
【００９０】
たとえば、特開平０５−０１２０６９（特許文献２）には、デバックに必要なログを内蔵メモリ上の一定領域に格納し、後からログを内蔵メモリから何らかの手段によって読み取ることによりデバックを行なう手法が提案されている。しかし、この手法では、ログ記録用の記録領域が余分に必要となること、ログに利用可能な記憶容量は通常最小限とされているため、ログとして記録可能な大きさが十分でない場合が多いという問題がある。また、システムが暴走した場合などには内蔵メモリ上のログ自体が破壊されている可能性があること、あるいは内蔵メモリからログを読み出す手段を別途用意する必要があるという問題がある。
【００９１】
これに対して、上述した第１実施形態のデバッグ手法では、通信ログの記録はプロトコルアナライザにて行なうので、ログに利用可能な記憶容量に自由度があり、また情報処理装置間の通信ライン上の通信データ（特に制御コマンド）を監視するだけでよく内蔵メモリからログを読み出す手段を用意する必要はなく、加えて、通信データを取得した後にはプリントサーバ１０やプリンタ２０のシステム暴走の影響を受けないので、内蔵メモリをログ記録に利用することに起因する前記の問題から解消される。
【００９２】
なお、上述した第１実施形態のデバッグ手法は、デバックに必要なログを外部記憶装置に格納し、後からログを外部記憶装置から読み取ることによりデバックを行なうと言う点では、デバック履歴を外部メモリに記録するタイプのデバック手法と共通する。しかしながら、従来の外部メモリに記録する手法では、外部記憶装置を別途用意しなければこのデバッグ手法を利用できないし、外部記憶装置が実装されている組込システム自体が少ないという問題がある。
【００９３】
これに対して、上述した第１実施形態のデバッグ手法では、情報処理装置間の通信ライン上の通信データをデバッグツールにて監視するだけでよく、特別な外部メモリを用意するまでもなく、このデバッグツールに組み込まれている記憶装置をログ記録に利用することができる。また、システムからのデバッグ情報の出力を待つ必要がなく、監視により取得した制御コマンドを解釈して所用のデバッグ情報を抽出し即時に所定の記録媒体に記録することができる。
【００９４】
また、従来のデバック履歴を外部メモリに記録する手法では、ファイルシステムにしたがってデバッグ履歴を外部メモリに記録するので、ファイルシステムにて予め定められているファイルサイズ（たとえば４キロバイト以上というように比較的大きい）にしてからデバッグ情報を外部メモリに記録しなければならず、書き込みが行なわれるまでの遅延が大きいく、また情報処理システム側にてデバッグ履歴を外部メモリに記録する仕組みが必要であり、システム自体が落ちるような場合は、必要なログの多くが外部メモリに記録されないことも起こり得る。
【００９５】
これに対して、上述した第１実施形態のデバッグ手法では、通信コマンドのコマンドコードを抽出する都度、あるいはそれの引数を抽出する都度、それらの情報を所定の記憶媒体に記録するので、書き込みが行なわれるまでの遅延は非常に小さく、加えて、ログ記録の動作はプロトコルアナライザなどのデバッグツール側にて行なうので、システム自体が落ちるような場合であっても、必要なログをほぼ確実に外部メモリに残すことができる。
【００９６】
また、特開平０９−３３０１９１（特許文献３）には、デバックに必要なログをプリンタなどを利用して紙媒体などに印刷することによりデバック履歴を残す手法が提案されているが、この手法では、紙が無駄になること、書き込みが行なわれるまでの遅延が大きいため、システム自体が落ちるような場合は必要なログの多くが記録されないこと、あるいは紙に出力されたログは、その後所定の装置で直接処理することが難しいという問題がある。
【００９７】
これに対して、上述した第１実施形態のデバッグ手法では、取得したデバック履歴をプロトコルアナライザにて記録するので、電子データとして残すことができ、その後に所定の装置で直接処理することも容易である。なお、プロトコルアナライザにて記録したデバック履歴に基づいて、その後、プリンタ２４６にて印刷出力するのは自由である。なお、この場合、紙が無駄になることの問題が解消されないが、デバッグ情報を常に紙出力にて行なうものではなく、紙出力をするか否かはデバッグ作業者の判断に委ねられることであり、事実上、問題にはならない。
【００９８】
第７に、通信を介して利用される制御系コマンドとデバック情報の時間的な前後関係が明確になるという、従来のデバック手法では得られない効果を享受することができる。一般的な通信系のデバック手法では、通信を行なったときとその前後の情報の時間的関係が必要となる。しかし、従来のデバッグ手法で得られるデバック情報は、多くの場合、通信ログと別の扱いとなるため、時間的関係を決定付けるのが不可能か困難であるという問題がある。
【００９９】
これに対して、上述した第１実施形態のデバッグ手法では、エラーメッセージの情報を残すだけでなく、通信コマンドのコマンドコードもエラーメッセージに対応付けて残すようにしているので、コマンドコードの履歴を追うことで、通信を行なったときとその前後の情報の時間的関係を決定付けることができ、円滑にデバックを進めることができる。
【０１００】
図７は、第１実施形態の構成におけるデバッグ処理の変形例（以下第２例という）を説明する図である。ここで、図７（Ａ）は、プリンタ２０にて使用されるプログラムコードの第２例を示し、図７（Ｂ）は、この第２例を利用した場合に得られる通信ログを可視情報として出力した一例を示す。
【０１０１】
この第２例は、無効コマンドの付加情報として、この無効コマンドの前（好ましくは直前）に送られたコマンドを表す情報を埋め込む点に特徴を有する。以下具体的に説明する。
【０１０２】
先ず、図７（Ａ）に示す第２例のプログラムコードについて説明する。第１例と同様に、プリンタ２０のコマンド制御部１３０は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用して通信コマンドＳｔａｔｕｓを通信部１２０を介してプリントサーバ１０に返す（Ｓ１３２）。ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数の呼出しが行なわれた後、次にエラー検出用のプログラムコードが挿入されており、エラー要因が起きているか否かを検査する（Ｓ１３４）。
【０１０３】
ここで、第２例においては、正常であるか否かに拘わらず、無効コマンド（コメントコマンド）である通信コマンドＣｏｍｍｅｎｔ  の直前に送られたコマンドを表す情報を引数に埋め込む。たとえば、Ｓｔａｔｕｓが“Ｒｅａｄｙ  ”として出力された場合は“Ｓｔａｔｕｓ  Ｒｅａｄｙ”であることを示すメッセージを（Ｓ１３６−ＯＫ）、またＳｔａｔｕｓが“ＮｏｔＲｅａｄｙ”として出力された場合には“Ｓｔａｔｕｓ  ＮｏｔＲｅａｄｙ  ”であることを示すメッセージを（Ｓ１３６−ＮＧ）、それぞれ通信コマンドＣｏｍｍｅｎｔ  の引数に埋め込む。
【０１０４】
この図７（Ａ）に示すプログラムコードを利用すると、プロトコルアナライザ３０にてプリントサーバ１０とプリンタ２０との間のメッセージ交換を監視すれば、図７（Ｂ）のような通信ログが得られる。たとえば、通信コマンドＳｔａｔｕｓを通信部１２０を介してプリントサーバ１０に返すと（Ｓ１３２）、バグが発生している場合には、デバッグ情報抽出部２３０は、図７（Ｂ）に示すように、第１例のステップＳ１２２，Ｓ１２４と同様に通信コマンドＳｔａｔｕｓとその引数ＮｏｔＲｅａｄｙの１６進数コードである“０３”，“０１”を抽出し（Ｓ１４２，Ｓ１４４）、さらにこの通信コマンドＳｔａｔｕｓの直後に、第１例のステップＳ１２６と同様に通信コマンドＣｏｍｍｅｎｔ  のコマンドコード“０４”を抽出し、引き続き、引数が“Ｓｔａｔｕｓ  ＮｏｔＲｅａｄｙ  ”であることを示すメッセージを抽出することができる（Ｓ１４４）。
【０１０５】
つまり、図７（Ｂ）に示す通信ログの例では、デバック作業者は、通信コマンドＳｔａｔｕｓとその引数ＮｏｔＲｅａｄｙの１６進数コードである“０３”，“０１”を送信した（Ｓ１４２，Ｓ１４４）直後に送られた通信コマンドと引数が“Ｓｔａｔｕｓ  ＮｏｔＲｅａｄｙ  ”であることを示すメッセージを容易に認識することができる（Ｓ１４６，Ｓ１４８）。
【０１０６】
図７（Ｂ）に示す通信ログの例は、バグが存在していた場合であるが、正常であれば、デバッグ情報抽出部２３０は、通信コマンドＳｔａｔｕｓとその引数Ｒｅａｄｙ  の１６進数コードである“０３”，“００”を抽出し、さらにこの通信コマンドＳｔａｔｕｓの直後に、通信コマンドＣｏｍｍｅｎｔ  のコマンドコード“０４”を抽出し、引き続き、引数が“Ｓｔａｔｕｓ  Ｒｅａｄｙ”であることを示すメッセージを抽出することができる。
【０１０７】
したがって、デバック作業者は、図７（Ｂ）の通信ログ中に通信コマンドＣｏｍｍｅｎｔ  を利用したエラーメッセージ“Ｓｔａｔｕｓ  ＮｏｔＲｅａｄｙ  ”を簡単に発見することができる。また、通信コマンドＳｔａｔｕｓ（Ｓ１４２）およびその引数（Ｓ１４４）が送信された直後にエラーが発生したことを知ることができる。つまり、通信系のデバックにおいて、通信を行なったときとその前後の情報の時間的関係を決定付けることができる。これにより、第２例においても、円滑にデバックを行なうことが可能となる。
【０１０８】
図８は、第１実施形態の構成におけるデバッグ処理の他の変形例（以下第３例という）を説明する図である。ここで、図８（Ａ）は、プリンタ２０にて使用されるプログラムコードの第３例を示し、図８（Ｂ）は、この第３例を利用した場合に得られる通信ログを可視情報として出力した一例を示す。
【０１０９】
この第３例は、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が呼び出された直後とＴｒａｎｓｍｉｔＳｔａｔｕｓ関数から抜ける直前にメッセージを通信コマンドＣｏｍｍｅｎｔ  で送信することにより通信ログに残るようにする点に特徴を有する。つまり、無効コマンドの付加情報として、情報処理装置の一例であるプリントサーバ１０やプリンタ２０における処理履歴を通信ログに残すようにした点に特徴を有する。以下具体的に説明する。
【０１１０】
先ず、図８（Ａ）に示す第３例のプログラムコードについて説明する。ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が呼び出された直後には、コマンド制御部１３０は、先ずコメントコマンドである通信コマンドＣｏｍｍｅｎｔ  と引数としての“ＴｒａｎｓｍｉｔＳｔａｔｕｓ  Ｆｕｎｃｔｉｏｎ  ｅｎｔｅｒ．”を送信する（Ｓ１５０）。次に、コマンド制御部１３０は、通信コマンドＳｔａｔｕｓを通信部１２０を介してプリントサーバ１０に返す（Ｓ１５２）。
【０１１１】
この後、第１例と同様に、エラー検出用のプログラムコードが挿入されている（Ｓ１５４）。コマンド制御部１３０は、このコードにおいて、ＲｅｃｅｉｖｅＲｅｑｕｅｓｔ変数が“ｔｒｕｅ”であるのかそれとも“ｆａｌｓｅ  ”であるのかを検査することで、エラーを判定する。通信コマンドＲｅｑＳｔａｔｕｓ  を受け取っていればＲｅｃｅｉｖｅＲｅｑｕｅｓｔ変数が“ｔｒｕｅ”になっているので、このことも通信ログに残すべく、コマンド制御部１３０は、通信コマンドＣｏｍｍｅｎｔ  とその引数としての“ＲｅｃｅｉｖｅｄＲｅｑｕｅｓｔ  ＝  ｔｒｕｅ  ”を送信する（Ｓ１５４−ＯＫ）。
【０１１２】
一方、ＲｅｃｅｉｖｅＲｅｑｕｅｓｔ変数が“ｆａｌｓｅ”になっていれば、コマンド制御部１３０は、通信コマンドＣｏｍｍｅｎｔ  とその引数としての“ＲｅｃｅｉｖｅｄＲｅｑｕｅｓｔ  ＝  ｆａｌｓｅ  ”を送信することで、このことが通信ログに残るようにする（Ｓ１５４−ＮＧ）。
【０１１３】
そして、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数から抜ける直前には、コマンド制御部１３０は、コメントコマンドである通信コマンドＣｏｍｍｅｎｔ  と引数としての“ＴｒａｎｓｍｉｔＳｔａｔｕｓ
Ｆｕｎｃｔｉｏｎ  ｅｘｉｔ．  ”を送信する（Ｓ１５６）。
【０１１４】
この図８（Ａ）に示すプログラムコードを利用すると、プロトコルアナライザ３０にてプリントサーバ１０とプリンタ２０との間のメッセージ交換を監視すれば、図８（Ｂ）のような通信ログが得られる。先ず、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が呼び出された直後にメッセージ“ＴｒａｎｓｍｉｔＳｔａｔｕｓ  Ｆｕｎｃｔｉｏｎ  ｅｎｔｅｒ．”が通信コマンドＣｏｍｍｅｎｔ  の引数として送信されたことが通信ログに残っているので、デバック作業者は、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が呼び出されたことを認識することができる（Ｓ１６０，Ｓ１６１）。同様に、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数から抜ける直前にもメッセージ“ＴｒａｎｓｍｉｔＳｔａｔｕｓ  Ｆｕｎｃｔｉｏｎ  ｅｘｉｔ．  ”が通信コマンドＣｏｍｍｅｎｔ  引数として送信されたことが信ログに残っているので、デバック作業者は、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数から抜けたことを認識することができる（Ｓ１６８，Ｓ１６９）。
【０１１５】
また、関数の途中で通信コマンドＣｏｍｍｅｎｔ  を利用して“ＲｅｃｅｉｖｅｄＲｅｑｕｅｓｔ  ”の値が通信ログに出力されているので、デバック作業者は、ＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が呼び出された後に抜け出すまでどのような状況であったのかを容易に認識することができる。図８（Ｂ）に示す例では、通信コマンドＳｔａｔｕｓとその引数Ｒｅａｄｙ  の１６進数コードである“０３”，“００”が抽出され（Ｓ１６２，Ｓ１６４）、さらに通信コマンドＣｏｍｍｅｎｔ  のコマンドコード“０４”の後に（Ｓ１６６）、“ＲｅｃｅｉｖｅＲｅｑｕｅｓｔ  ＝  ｔｒｕｅ”が記録されているので（Ｓ１６７）、正常であったことを認識することができる。
【０１１６】
つまり、通信を行なったときとその前後の情報の時間的関係を第１例や第２例よりも簡易に決定付けることができる。これにより、第３例においても、円滑にデバックを行なうことが可能となる。また、エラー情報だけでなく、プリントサーバ１０やプリンタ２０における処理履歴がほぼ完全に通信ログに残るので、コマンドコードの履歴を追うことで、通信を行なったときとその前後の情報の時間的関係を決定付けることができ、第１例や第２例の手法よりも、より簡易かつ確実に、円滑にデバックを進めることができる。
【０１１７】
図９は、本発明に係るデバッグ方法を実施するデバッグ装置を組み込んだ情報処理システムの第２実施形態を示す図である。
【０１１８】
図示するように、図示しないパソコンなどから印刷データを受け取り印刷処理を指示するプリントサーバ１０と、印刷処理を実行するプリンタ２０と、プリントサーバ１０とプリンタ２０との間のメッセージ交換を監視するデバッグ装置の一例であるプロトコルアナライザ３０とが、印刷制御線７により接続されて、第２実施形態の情報処理システム１や情報処理システム１についての第２実施形態のデバックシステム３が構築されている。
【０１１９】
第１実施形態の構成との違いは、プリントサーバ１０とプリンタ２０との間のメッセージ交換において、現在送信されている通信データを無視させるどうかを指示するための通信制御線８を印刷制御線７とは別に設けている点である。コマンド制御部１３０は、通信制御線８を介して、現在送信されている通信データを無視させるどうかを指示する。
【０１２０】
図１０は、第２実施形態のデバックシステム３に使用される情報処理装置であって、プリントサーバ１０やプリンタ２０などの情報処理装置におけるデバック機能に着目したブロック図である。
【０１２１】
この第２実施形態の情報処理装置１００は、第１実施形態の構成に加えて、コマンド制御部１３０が送付させた制御コマンドを無視することを情報処理ユニットの他方に指示する無視開始指示部１３２と、無視開始指示部１３２が制御コマンドの無視を指示した後、所定のタイミングで、コマンド制御部１３０が送付させた制御コマンドを受け付けるよう（つまり再開するよう）情報処理ユニットの他方に指示する受付開始指示部１３４とを備えている点が異なる。
【０１２２】
また、コマンド制御部１３０は、従来のものと同様に、制御コマンドを他方の情報処理ユニットに送付させるがデバッグ情報の抽出に利用される無効コマンドを送出させることはしない点が第１実施形態と異なる。
【０１２３】
なお、図中点線で示すように、コマンド制御部１３０が、無視開始指示部１３２や受付開始指示部１３４の機能を兼ね備えた構成としてもよい。
【０１２４】
このような構成においては、情報処理装置１００の一方は、他方の情報処理ユニットとの間で情報処理をする過程において、一旦、コマンド制御部１３０から他方へ送付される制御コマンドを無視するよう無視開始指示部１３２にて他方に指示する。この後、所定のタイミングで、制御コマンドの受付けを再開するよう受付開始指示部１３４にて他方に指示する。
【０１２５】
コマンド制御部１３０は、制御コマンドの受付けの再開が指示されるまでの間に、デバッグ情報に関連する制御コマンドとして、デバッグ作業に利用可能な制御コマンド（たとえばコメントコマンド）を他方へ送付する。
【０１２６】
第２実施形態のデバックシステム３に使用されるプロトコルアナライザ３０などのデバッグ装置の構成は、第１実施形態のものと同じである。ただし、その機能が異なる。
【０１２７】
すなわち、第２実施形態のデバッグ装置２００は、制御コマンドの交換履歴を監視し、制御コマンドの受付けの再開が指示されるまでの間における交換履歴（通信ログ）から、デバッグに資する情報（デバッグ情報）を抽出してデバッグ作業者に提示する。
【０１２８】
また、第１実施形態と同様に、第２実施形態の構成においても、情報処理装置（情報処理ユニット）やデバッグ装置は、第２実施形態特有の機能をなす専用のハードウェア回路で構成してもよいし、パソコンやワークステーションなどの汎用のコンピュータを利用して構成してもよい。
【０１２９】
図１１は、第２実施形態のデバックシステム３において利用する通信コマンド体系の一例を示す図である。通信コマンドＣｏｍｍｅｎｔ  が存在しない以外は第１実施形態のデバックシステム３において利用する通信コマンド体系と同様である。
【０１３０】
図１２は、図１１に示す通信コマンドを利用したプリントサーバ１０とプリンタ２０との間の通信例（以下第４例という）を説明する図である。ここで、図１２（Ａ）は、プリンタ２０にて使用されるプログラムコードの第４例を示し、図１２（Ｂ）は、この第４例を利用した場合に得られる通信ログを可視情報として出力した一例を示す。
【０１３１】
第２実施形態においては、ＣｏｍｍａｎｄＶａｌｉｄ関数およびＣｏｍｍａｎｄＩｎｖａｌｉｄ関数を利用する点が第１実施形態と異なる。以下、具体的に説明する。先ず、図１２（Ａ）に示すプログラムコードで利用されている関数や環境について説明する。
【０１３２】
ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数は、第１実施形態と同様に、印刷制御線７に通信コマンドを送信するために利用される関数であり、通信コマンドを受け取り、また存在するならば通信コマンドの引数も受け取り、通信コマンドに対応したコマンドコードと引数を印刷制御線７上に送信する。
【０１３３】
なお、第２実施形態のＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数は、第１実施形態と異なり、最初の引数に通信コマンドではなく文字列を設定することも可能である。この場合は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数は、文字列をそのまま印刷制御線７上に送信する。
【０１３４】
ＣｏｍｍａｎｄＶａｌｉｄ関数およびＣｏｍｍａｎｄＩｎｖａｌｉｄ関数は、印刷制御線７で送信している通信が無効な通信か有効な通信かを切り換える関数である。たとえば、ＣｏｍｍａｎｄＩｎｖａｌｉｄ関数は、無視開始指示部１３２が司令を担当する関数であって、この関数を実行した以後に送信するデータがプリントサーバ１０にとって意味がない、また通信コマンドであると解釈すると誤作動する可能性のあるデータであるため通信データを無視することを指示するためのものである。つまりＣｏｍｍａｎｄＩｎｖａｌｉｄ関数は、関数内でタイミングを取り、通信制御線８を通して今後送信されるデータを無視するようにプリントサーバ１０に指示する。これ以降に送信される通信データは受信されても無視される。
【０１３５】
一方、ＣｏｍｍａｎｄＶａｌｉｄ関数は、受付開始指示部１３４が司令を担当する関数であって、ＣｏｍｍａｎｄＩｎｖａｌｉｄ関数と逆の働きをする。たとえば、関数内でタイミングを取り、通信制御線８を通して今後送信されるデータが通信コマンドであることをプリントサーバ１０に知らせる。これにより、ＣｏｍｍａｎｄＩｎｖａｌｉｄ関数の呼び出しにより無視されていた通信コマンドは、ＣｏｍｍａｎｄＶａｌｉｄ関数呼出し以後、再び通信コマンドとして解釈されるようになる。
【０１３６】
次に、図１２（Ａ）に示す第４例のプログラムコードについて説明する。先ず、プリンタ２０のコマンド制御部１３０は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用して通信コマンドＳｔａｔｕｓを通信部１２０を介してプリントサーバ１０に返す（Ｓ２０２）。
【０１３７】
コマンド制御部１３０あるいは無視開始指示部１３２は、通信コマンドＳｔａｔｕｓ送信後にＣｏｍｍａｎｄＩｎｖａｌｉｄ関数を呼び出して送信されるデータを無視するようにプリントサーバ１０に指示する（Ｓ２０４）。その後、コマンド制御部１３０は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用してデバック用のメッセージを他方の情報処理装置（本例ではプリントサーバ１０）に送信する（Ｓ２０６）。
【０１３８】
ここでは、第２実施形態のＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数の特徴である、通信コマンドではなく文字列を最初の引数に設定することで、その文字列を印刷制御線７上に送信することとする。このメッセージはＣｏｍｍａｎｄＩｎｖａｌｉｄ関数呼び出し後に送信されるため、プリントサーバ１０においては、単に無視される。最後に、コマンド制御部１３０あるいは受付開始指示部１３４は、その後の通信コマンドが無視されないようにＣｏｍｍａｎｄＶａｌｉｄ関数を呼び出す（Ｓ２０８）。
【０１３９】
この図１２（Ａ）に示すプログラムコードを利用すると、プロトコルアナライザ３０にてプリントサーバ１０とプリンタ２０との間のメッセージ交換を監視すれば、図１２（Ｂ）のような通信ログが得られる。たとえば、通信コマンドＳｔａｔｕｓを通信部１２０を介してプリントサーバ１０に返すと（Ｓ２０２）、デバッグ情報抽出部２３０は、図１２（Ｂ）に示すように、第１例のステップＳ１２２，Ｓ１２４と同様に通信コマンドＳｔａｔｕｓとその引数ＮｏｔＲｅａｄｙの１６進数コードである“０３”，“０１”を抽出する（Ｓ２１２，Ｓ２１４）。この後、デバッグ情報抽出部２３０は、“Ｓｔａｔｕｓ  Ｃｏｍｍａｎｄ  Ｓｅｎｔ”の文字列を抽出する（Ｓ２１６）。
【０１４０】
これにより、第２実施形態においても、デバック作業者は、通信ログ中にあるステップＳ２１６による文字列を見ることで、プリンタ２０のデバックを円滑に進めることが可能となる。
【０１４１】
図１３は、本発明に係るデバッグ方法を実施するデバッグ装置を組み込んだ情報処理システムの第３実施形態において利用する通信コマンド体系の一例を示す図である。なお、システム構成は、図１に示したものと同様であるので、その説明は割愛する。
【０１４２】
この第３実施形態は、プリントサーバ１０およびプリンタ２０の双方から送信可能な通信コマンドＣＭＤ４０として、無効コマンドであるコメントコマンド自体がメッセージの役割を担うように構成している点が、第１実施形態と異なる。
【０１４３】
すなわち、第１実施形態の通信コマンドＣＭＤ３０とは異なり、この通信コマンドＣＭＤ４０は、２０（Ｈｅｘ）から７Ｅ（Ｈｅｘ）までの文字コードの全てである９５個が割り当てられている。これらはＡＳＣＩＩコードのうち英数字と数種の記号が割り当てられている文字コードに一致させてある。なお、２０（Ｈｅｘ）から７Ｅ（Ｈｅｘ）までの文字コードの全てに限らず、その一部のみをコメントコマンド自体がメッセージの役割を担うように割り当ててもよい。
【０１４４】
図１４は、図１３で説明した第３実施形態の通信コマンドを利用したプリントサーバ１０とプリンタ２０との間の通信例（第５例）を説明する図である。ここで、図１４（Ａ）は、プリンタ２０のプログラムコードの第５例を示し、図１４（Ｂ）は、図１４（Ａ）のプログラムコードが実行された場合に結果として行なわれるプリントサーバ１０とプリンタ２０との間の通信の様子を示す。なお、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数の機能については第２実施形態と同様であるため説明を割愛する。
【０１４５】
プリンタ２０のコマンド制御部１３０は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用して通信コマンドＳｔａｔｕｓを通信部１２０を介してプリントサーバ１０に返す（Ｓ３０２）。
【０１４６】
コマンド制御部１３０は、先ず、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用して通信コマンドＳｔａｔｕｓを送信する（Ｓ３０２）。第１実施形態と同様に、通信コマンドＳｔａｔｕｓは引数を取るようになっているので、コマンド制御部１３０は、引き続きＴｒａｎｓｍｉｔＳｔａｔｕｓ関数が受け取った引数の値をそのまま通信コマンドＳｔａｔｕｓの引数として送信する。次にコマンド制御部１３０は、ＣｏｍｍｕｎｉｃａｔｉｏｎＯｕｔｐｕｔ  関数を利用して、プログラムコードの実行履歴を示す文字列を送信する（Ｓ３０４）。
【０１４７】
ここで、この第５例においては、コメントコマンドである通信コマンドＣｏｍｍｅｎｔ  を送信する際に、コメントコマンド自体がメッセージの役割を担うように、通常の英数字を示す文字コードを単に送信する。文字コードは、全て何も動作を起こさない通信コマンドとしてプリントサーバ１０に認識されるため、プリントサーバ１０においては、この文字コードが単に無視される。
【０１４８】
この図１４（Ａ）に示すプログラムコードを利用すると、プロトコルアナライザ３０にてプリントサーバ１０とプリンタ２０との間のメッセージ交換を監視すれば、図１４（Ｂ）のように、第２実施形態（第４例）と同様の通信ログが得られる。したがって、第３実施形態においても、デバック作業者は、通信ログ中にあるステップＳ３０４による文字列を見ることで、プリンタ２０のデバックを円滑に進めることが可能となる。
【０１４９】
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。発明の要旨を逸脱しない範囲で上記実施形態に多様な変更または改良を加えることができ、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれる。
【０１５０】
また、上記の実施形態は、クレーム（請求項）にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組合せの全てが発明の解決手段に必須であるとは限らない。前述した実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜の組合せにより種々の発明を抽出できる。実施形態に示される全構成要件から幾つかの構成要件が削除されても、効果が得られる限りにおいて、この幾つかの構成要件が削除された構成が発明として抽出され得る。
【０１５１】
たとえば、上記実施形態の構成では、複数の情報処理装置（情報処理ユニット）間における制御コマンドの中に、本来の情報処理とは独立した無効コマンドを新規に用意し、無効コマンドを監視することでデバッグを行なうようにした点に特徴を有する。この点においては、無効コマンドの監視手法をどうするかや、無効コマンドを監視することで得たデバッグ情報を記憶する手段としての記憶部を、デバッグ装置の内部に設けるか否かは、不問である。記憶部をデバッグ装置の外部に設ける場合、その記憶部を情報処理システム（装置）の内部に取り込んでもよい。
【０１５２】
また上記実施形態の構成では、複数の情報処理ユニットが別体となった複数の装置間における通信のデバッグについて説明したが、情報処理ユニットが別体であるか一体であるかは不問である。
【０１５３】
たとえば、１つの装置内における複数の処理ユニット間（たとえばＣＰＵと処理部との間）における制御コマンドのやり取りにおけるデバッグに、上述した実施形態の手法を適用することも可能である。
【０１５４】
たとえば、ＣＰＵと処理部との間の制御コマンドのやり取りを監視するデバッグ装置の一例である監視部は、装置本体の内部にあってもよいし、外部にあってもよい。また、監視部が無効コマンドを認識することで得たデバッグ情報を格納する記憶部も、装置本体の内部にあってもよいし、デバッグ装置の外部にあってもよい。
【０１５５】
後者の場合、さらに記憶部を、情報処理装置の内部（何れか一方もしくは双方）に組み込んでもよい。この場合、所定のタイミングで、記憶部に記録したデバッグ情報をその記憶部から読み出すのはいうまでもない。
【０１５６】
また上記実施形態では、デバッグ情報に関わる情報として、エラーメッセージや、無効コマンドの前および後の少なくとも一方に送られるコマンドを表す情報、あるいは情報処理を行なう過程における処理の履歴を示す情報を、無効コマンドの付加情報（前例では引数）として、他方の情報処理ユニットに送付するようにしていたが、引数を利用する送信形態に限定されない。何れにしても、これらの情報が、無効コマンドと対応付けられた形態で送信されるものであればよい。
【０１５７】
また上記実施形態では、エラーメッセージや、無効コマンドの前および後の少なくとも一方に送られるコマンドを表す情報、あるいは情報処理を行なう過程における処理の履歴を示す情報を、ＡＳＣＩＩコードを利用して他方の情報処理ユニットに送付するようにしていたが、制御コードの基本形態は、ＡＳＣＩＩコードに限るものではない。何れにしても、コード体系の一部に情報処理を行なう過程で使用される制御コードを含み、かつエラーメッセージや処理履歴情報を示す文字情報を示し得るものであればよい。
【０１５８】
【発明の効果】
以上のように、本発明によれば、先ず第１の構成として、複数の情報処理ユニット間の制御コマンドの中に、本来の情報処理とは独立した無効コマンドを用意し、無効コマンドを認識することで所用のデバッグ情報を抽出するようにしたので、従来のデバッグ手法に比べて、デバッグを、確実、簡単、あるいは効率的に行なうことができるようになり、また、使い勝手がよくなる。
【０１５９】
また、第２の構成として、情報処理ユニットの一方から他方へ送付される制御コマンドを無視するように、一旦、他方に指示し、この後、制御コマンドの受付けを再開するまでの間をデバッグ作業に利用することとした。これにより、たとえば、制御コマンドの無視を指示した後受付けを再開するまでの間に、本来の情報処理に何ら影響を与えることなくデバッグに資する情報を送付することができる。これにより、このデバッグに資する情報を抽出してデバッグ作業者に提示すれば、従来のデバッグ手法に比べて、デバッグを、確実、簡単、あるいは効率的に行なうことができるようになり、また、使い勝手がよくなる。
【図面の簡単な説明】
【図１】本発明に係るデバッグ方法を実施するデバッグ装置を組み込んだ情報処理システムの第１実施形態を示す図である。
【図２】プリントサーバやプリンタなどの情報処理装置におけるデバック機能に着目したブロック図（第１実施形態）である。
【図３】プロトコルアナライザなどのデバッグ装置におけるデバッグ機能に着目したブロック図（第１実施形態）である。
【図４】第１実施形態のデバックシステムにおいて利用する通信コマンド体系の一例を示す図である。
【図５】図４で説明した通信コマンドを利用したプリントサーバとプリンタとの間の通信例（第１例）を説明する図である。
【図６】図５で示した通信例を含む通信ログをプロトコルアナライザを利用して収集し可視情報として出力した一例を示す図である。
【図７】第１実施形態の構成におけるデバッグ処理の第２例を説明する図である。
【図８】第１実施形態の構成におけるデバッグ処理の第３例を説明する図である。
【図９】本発明に係るデバッグ方法を実施するデバッグ装置を組み込んだ情報処理システムの第２実施形態を示す図である。
【図１０】プリントサーバやプリンタなどの情報処理装置におけるデバック機能に着目したブロック図（第２実施形態）である。
【図１１】第２実施形態のデバックシステムにおいて利用する通信コマンド体系の一例を示す図である。
【図１２】図１１に示す通信コマンドを利用したプリントサーバとプリンタとの間の通信例（第４例）を説明する図である。
【図１３】第３実施形態のデバックシステム３において利用する通信コマンド体系の一例を示す図である。
【図１４】図１３で説明した第３実施形態の通信コマンドを利用したプリントサーバとプリンタとの間の通信例（第５例）を説明する図である。
【符号の説明】
１…情報処理システム、３…デバックシステム、７…印刷制御線、８…通信制御線、９…通信回線、１０…プリントサーバ、２０…プリンタ、３０…プロトコルアナライザ、１００…情報処理装置、１１０…情報処理部、１２０…通信部、１３０…コマンド制御部、１３２…無視開始指示部、１３４…受付開始指示部、２００…デバッグ装置、２１０…通信ログ取得部、２２０…記憶部、２３０…デバッグ情報抽出部、２４０…デバッグ情報出力制御部、２４２…液晶デバイス、２４４…ＣＲＴモニタ、２４６…プリンタ
【図１】
2004171318.tif 000003
【図２】
2004171318.tif 000004
【図３】
2004171318.tif 000005
【図４】
2004171318.tif 000006
【図５】
2004171318.tif 000007
【図６】
2004171318.tif 000008
【図７】
2004171318.tif 000009
【図８】
2004171318.tif 000010
【図９】
2004171318.tif 000011
【図１０】
2004171318.tif 000012
【図１１】
2004171318.tif 000013
【図１２】
2004171318.tif 000014
【図１３】
2004171318.tif 000015
【図１４】
2004171318.tif 000016