(57)【特許請求の範囲】
【請求項１】
印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションのプロセスを複数搭載可能とし、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行うプログラムのプロセスとを備え、前記プログラムまたは前記アプリケーションが各プロセスの動作情報を出力する検証コードを含んでいる画像形成装置であって、
監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した前記監視情報を前記プログラムまたは前記アプリケーションにプロセス間通信により送信するプロセス監視手段を備え、
前記プログラムまたは前記アプリケーションの各プロセスは、前記監視情報に基づいて自プロセスが監視対象であるか否かを判断し、監視対象である場合に、前記動作情報を前記プロセス監視手段にプロセス間通信により受け渡し、
前記プロセス監視手段は、前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、受信した前記監視情報に基づいて前記動作情報をプロセス間通信によって取得することを特徴とする画像形成装置。
【請求項２】
前記プロセス監視手段は、さらに前記プログラムのプロセスまたは前記アプリケーションのプロセスの内部で並列に実行される２以上のスレッドの各動作情報を取得することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記プログラムのプロセスまたは前記アプリケーションのプロセス、および前記プロセス監視手段のプロセスから共通にアクセス可能な共有メモリをさらに備え、
前記プロセス監視手段は、前記共有メモリを介して前記プログラムのプロセスまたは前記アプリケーションのプロセスから前記動作情報を取得することを特徴とする請求項１または２に記載の画像形成装置。
【請求項４】
前記共有メモリは、前記動作情報を格納順に取出し可能なＦＩＦＯキューを備え、
前記プログラムのプロセスまたは前記アプリケーションのプロセスは、前記動作情報を前記ＦＩＦＯキューに格納し、
前記プロセス監視手段は、前記ＦＩＦＯキューから前記動作情報を取得することを特徴とする請求項３に記載の画像形成装置。
【請求項５】
前記プログラムのプロセスまたは前記アプリケーションのプロセスは、現在の実行位置を示す現在位置情報を、前記共有メモリに格納し、
前記プロセス監視手段は、前記共有メモリに格納された前記現在位置情報に基づいて、前記動作情報を取得することを特徴とする請求項３または４に記載の画像形成装置。
【請求項６】
印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションのプロセスを複数搭載可能とし、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行うプログラムのプロセスとを備えた画像形成装置であって、
監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した前記監視情報を前記プログラムまたは前記アプリケーションにプロセス間通信により送信し、並列実行される複数のプロセスを監視するプロセス監視手段を有し、
前記プロセス監視手段は、プロセス監視要求があったときに、前記プログラムまたは前記アプリケーションの監視要求のあったプログラムに、各プロセスの動作情報を出力する検証コードを付加する検証コード付加手段と、監視対象の前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、前記動作情報を、プロセス間通信によって取得するプロセス情報取得手段と、を備え、
前記プログラムまたは前記アプリケーションの各プロセスは、前記監視情報に基づいて自プロセスが監視対象であるか否かを判断し、監視対象である場合に、前記動作情報を前記プロセス情報取得手段にプロセス間通信により受け渡し、
前記プロセス情報取得手段は、前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、受信した前記監視情報に基づいて前記動作情報をプロセス間通信によって取得することを特徴とする画像形成装置。
【請求項７】
前記検証コード付加手段は、前記プログラムまたは前記アプリケーションのプログラムのアドレス解決情報が記述されたマップ情報に基づいて、前記検証コードを前記プログラムまたは前記アプリケーションのプログラムに付加することを特徴とする請求項６に記載の画像形成装置。
【請求項８】
前記検証コード付加手段は、監視対象のプロセスに対する監視内容を指定した監視情報に基づいて前記監視対象のプロセスに前記検証コードを付加することを特徴とする請求項６または７に記載の画像形成装置。
【請求項９】
前記アプリケーションに含まれ、前記プロセス監視手段として動作するプロセス監視アプリを備えたことを特徴とする請求項１〜８のいずれか一つに記載の画像形成装置。
【請求項１０】
印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションのプロセスを複数搭載可能とし、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行うプログラムのプロセスとを備え、前記プログラムまたは前記アプリケーションが各プロセスの動作情報を出力する検証コードを含んでいる画像形成装置で実行されるプロセスの動作情報を取得するプロセス監視方法であって、
プロセス監視手段によって、監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した前記監視情報を前記プログラムまたは前記アプリケーションにプロセス間通信により送信するプロセス監視ステップと、
プロセッサによって実行される前記プログラムまたは前記アプリケーションの各プロセスによって、前記監視情報に基づいて自プロセスが監視対象であるか否かを判断し、監視対象である場合に、前記動作情報を前記プロセス監視手段にプロセス間通信により受け渡す受け渡しステップと、を含み、
前記プロセス監視ステップは、前記プロセス監視手段によって、前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、受信した前記監視情報に基づいて前記動作情報をプロセス間通信によって取得することを特徴とするプロセス監視方法。
【請求項１１】
前記プロセス監視ステップは、さらに、前記プロセス監視手段によって、前記プログラムのプロセスまたは前記アプリケーションのプロセスの内部で並列に実行される２以上のスレッドの各動作情報を取得することを特徴とする請求項１０に記載のプロセス監視方法。
【請求項１２】
前記プロセス監視ステップは、前記プロセス監視手段によって、前記プログラムのプロセスまたは前記アプリケーションのプロセス、およびプロセス監視を実行するプロセスから共通にアクセス可能な共有メモリを介して前記プログラムのプロセスまたは前記アプリケーションのプロセスから前記動作情報を取得することを特徴とする請求項１０または１１に記載のプロセス監視方法。
【請求項１３】
前記プロセッサにより実行される前記プログラムのプロセスまたは前記アプリケーションのプロセスは、前記動作情報を、前記共有メモリに確保された前記動作情報を格納順に取出し可能なＦＩＦＯキューに格納し、
前記プロセス監視ステップは、前記プロセス監視手段によって、前記ＦＩＦＯキューから前記動作情報を取得することを特徴とする請求項１２に記載のプロセス監視方法。
【請求項１４】
前記プロセッサによって実行される前記プログラムのプロセスまたは前記アプリケーションのプロセスは、現在の実行位置を示す現在位置情報を、前記共有メモリに格納し、
前記プロセス監視ステップは、前記プロセス監視手段によって、前記共有メモリに格納された前記現在位置情報に基づいて、前記動作情報を取得することを特徴とする請求項１２または１３に記載のプロセス監視方法。
【請求項１５】
印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションのプロセスを複数搭載可能とし、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行うプログラムのプロセスとを備えた画像形成装置で並列実行される複数のプロセスからプロセスの動作情報を取得するプロセス監視方法であって、
検証コード付加手段によって、プロセス監視要求があったときに、前記プログラムまたは前記アプリケーションの監視要求のあったプログラムに、各プロセスの動作情報を出力する検証コードを付加する検証コード付加ステップと、
送信手段によって、監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した前記監視情報を前記プログラムまたは前記アプリケーションにプロセス間通信により送信する送信ステップと、
プロセス情報取得手段によって、監視対象の前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、前記動作情報を、プロセス間通信によって取得するプロセス情報取得ステップと、を含み、
前記プロセッサによって実行される前記プログラムまたは前記アプリケーションの各プロセスによって、前記監視情報に基づいて自プロセスが監視対象であるか否かを判断し、監視対象である場合に、前記動作情報を前記プロセス情報取得手段にプロセス間通信により受け渡す受け渡しステップと、
前記プロセス情報取得ステップは、前記プロセス情報取得手段によって、前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、受信した前記監視情報に基づいて前記動作情報をプロセス間通信によって取得することを特徴とするプロセス監視方法。
【請求項１６】
前記検証コード付加ステップは、前記検証コード付加手段によって、前記プログラムまたは前記アプリケーションのプログラムのアドレス解決情報が記述されたマップ情報に基づいて、前記検証コードを前記プログラムまたは前記アプリケーションのプログラムに付加することを特徴とする請求項１５に記載のプロセス監視方法。
【請求項１７】
前記検証コード付加ステップは、前記検証コード付加手段によって、監視対象のプロセスに対する監視内容を指定した監視情報に基づいて前記監視対象のプロセスに前記検証コードを付加することを特徴とする請求項１５または１６に記載のプロセス監視方法。
【請求項１８】
請求項１０〜１７のいずれか一つに記載された方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コピー、プリンタ、スキャナおよびファクシミリなどの画像形成処理にかかるユーザサービスを、複数プロセスの並列実行により提供し、各プロセスの動作情報を監視することができる画像形成装置、このようなプロセス監視方法およびこの方法をコンピュータに実行させるプログラムに関するものである。
【０００２】
【従来の技術】
近年、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という。）が一般的に知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応する３種類のソフトウェアを設け、ソフトウェアの切り替えによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
このような複合機では、プリンタ、コピー、ファクシミリ、スキャナなどの各機能単位でアプリケーションプログラムを開発して複合機上で動作させているため、複合機で動作するプロセス数も機能単位ごとに存在し、比較的小さいプロセス数となっている。このため、かかる従来の複合機の開発段階では、各機能単位のプロセスが正常に動作しているか否かを監視するデバッグ作業が重要な位置づけとなってくる。
【０００４】
ここで、近年、計算機システムにおいて利用するソフトウェア開発が広く行われている。このソフトウェア開発の過程で発生するエラーの検出テストには、静的なものと動的なものの２分類がある。静的なテストとは、プログラムを実行せずに検出テストを行う方法である。また、動的なテストとは、プログラムにある種のプローブを埋め込んでプログラムの振る舞いを監視する方法である。
【０００５】
通常、プローブの埋め込み技術を「タグ付け」と呼び、「１．プログラムのソースコードレベルで命令を追加する」、「２．実際の変換プロセスを変更して、ソースコードによる表現のないオブジェクトコードを追加する」、「３．静的なリンクプロセスの特性を利用して選択されたライブラリ関数の呼出しを横取りし、それと同等な「タグ付け」された関数の呼出しに置き換える」、「４．そのまま実行できる状態の実行モジュールにプログラムの流れをオブジェクトコードレベルで分析した結果に基づいて追加コードを挿入する」、というような４種類のタグ付けが一般的に知られている。
【０００６】
タグとは、ファイルやファイル内のデータの一部に付加する属性情報のことをいい、ユーザやプログラムがこのタグを参照することで、様々な判断や処理ができるようになっている。タグ付けは、検証対象のソフトウェアに検証作業専用のコードを挿入することによって、ソフトウェア検証を客観的かつ正確に行う手法である。この機能を使用して並列に動作するソフトウェアの並列動作を識別するタグ関数を挿入する。タグ付けによるマルチタスク（同時に異なる２つ以上の処理（アプリケーション）を実行できる利用環境のこと）の検証すなわち、並列動作するソフトウェア動作（ソフトウェアシステム）の検証は、ソフトウェア機能を識別するタグ関数を挿入し、同時刻に動作する各タスクの処理をトレースすることによってエラーとなる箇所を検出する方法で行う。
【０００７】
【発明が解決しようとする課題】
しかしながら、並列動作するソフトウェアシステムにおいて協調動作を行う処理やリアルタイム性が要求されるような処理では、エラーの起因が並列動作によるものである場合、エラー、バグなどの検出は困難である。
【０００８】
ここで、上述の従来の複合機では、コピー、プリンタ、スキャナおよびファクシミリなどの大きな機能単位でプロセスが実行されているため、プロセス間のデータの送受信などはさほど発生せず、従来のデバッグ方法でも障害原因を容易に検出することが可能であった。
【０００９】
しかしながら、このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置（複合機）を発明した。この複合機によれば、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることが可能となる。
【００１０】
このような新規な複合機では、アプリケーションのプロセスが機能ごとに複数存在するばかりか、アプリケーションの少なくとも２つが共通的に必要とするサービスを提供するコントロールサービスのプロセスが存在し、複合機内部には、従来の複合機に比べて非常に多くのプロセスが動作している。しかも、かかる複合機では、コントロールサービスのプロセスは、複数のアプリケーションが共通に必要とするサービスを提供するという位置づけにあるため、各コントロールサービスは多数のアプリケーションのプロセスとの間でデータ送受信が発生する。また、アプリケーションのプロセスとの間ばかりではなく、コントロールサービス同士のプロセス間においてもデータの送受信が生じる。
【００１１】
このように、出願人が発明をした新規な複合機は、多数のプロセスが複雑に絡み合って協働するという特徴的な構成となっているため、従来の複合機のように、各プロセスごとにデバッグ作業を行うだけでは、並列に実行される複数のプロセスの動作を正確に把握することができず、デバッグ作業が困難になるという問題がある。
【００１２】
また、かかる複合機は、アプリケーションとコントロールサービスとを別個に設けており、複合機の出荷後にユーザもしくは第三者であるサードベンダが新規なアプリケーションを開発して複合機に搭載可能な構成となっている。このため、新規アプリケーションの開発段階で、新規アプリケーションのプロセスが正常に動作しているか否か、および新規アプリケーションのプロセスと既存のアプリケーションおよびコントロールサービスの各プロセスとの間のデータ送受信が正常に行われているか否かを正確かつ容易に判断しなければならないという、従来の複合機開発では問題にならなかった新規な課題が生じている。
【００１３】
この発明は上記に鑑みてなされたもので、多数のプロセスが並列実行される環境で並列動作するプロセスの動作状態を監視して、デバッグ作業を正確かつ容易に行うことができる画像形成装置、プロセス監視方法およびこの方法をコンピュータに実行させるプログラムを得ることを目的とする。
【００１４】
【課題を解決するための手段】
上記目的を達成するため、請求項１にかかる発明は、印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションのプロセスを複数搭載可能とし、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行うプログラムのプロセスとを備え、前記プログラムまたは前記アプリケーションが各プロセスの動作情報を出力する検証コードを含んでいる画像形成装置であって、監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した前記監視情報を前記プログラムまたは前記アプリケーションにプロセス間通信により送信するプロセス監視手段を備え、前記プログラムまたは前記アプリケーションの各プロセスは、前記監視情報に基づいて自プロセスが監視対象であるか否かを判断し、監視対象である場合に、前記動作情報を前記プロセス監視手段にプロセス間通信により受け渡し、前記プロセス監視手段は、前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、受信した前記監視情報に基づいて前記動作情報をプロセス間通信によって取得することを特徴とする。
【００１５】
この請求項１の発明によれば、プロセス監視手段によって、プログラムまたはアプリケーションの並列実行されている２以上のプロセスから、検証コードの実行による各プロセスの動作情報をプロセス間通信によって取得することで、画像形成装置上で並列実行されるプログラムまたはアプリケーションのプロセスの検証を確実に行うことができ、並列ソフトウェアの特性分析などのデバッグ作業の効率化を図ることができる。
また、この請求項１の発明によれば、プロセス監視手段が監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した監視情報に基づいてプロセスの動作情報を取得することで、所望の並列プロセスのみの検証を行うことができ、デバッグ作業を効率的に行うことができる。
本発明における監視情報とは、監視対象のプロセスに対する監視内容を指定したものであればよく、例えば、監視対象のプロセス識別情報、監視開始位置、監視終了位置、監視項目など任意に設定することができる。また、監視情報は、プロセス監視手段が受信するものであればよく、例えばデバッグ作業を行うユーザがオペレーションパネルなどの操作部から入力した情報や、デバッグ作業を行うユーザがネットワーク経由で、ＰＣなどから入力して送信した情報、あるいはネットワーク上の他の画像形成装置やネットワーク上の画像形成装置開発元のホストコンピュータなどから送信された情報も含まれる。
【００１６】
本発明におけるプロセス監視手段は、並列実行されるプロセスの動作情報をプロセス間通信によって取得するものであればよく、プロセス間通信の手法については特に限定されるものではない。例えば、プロセス間通信の例として、各プロセスからプロセスの動作情報をメッセージ送受信により取得したり、関数呼び出しにより取得したり、あるいはプロセス間で共有の共有メモリを介して動作情報を取得することは任意である。
【００１７】
また、本発明におけるコントロールサービス、アプリケーションのプログラムには、プロセス監視手段による監視処理を行う時点で検証コードが含まれていればよく、あらかじめ各プログラムのソースコードに検証コードを付加しておき、検証コードごと実行ファイルを生成しておく他、監視処理を開始する段階で、検証コードをコントロールサービスまたはアプリケーションの実行形式のプログラムに付加する場合も含まれる。従って、本発明における検証コードにはソースコード形式の他、実行可能コード形式も含まれる。
【００１８】
また、請求項２にかかる発明は、請求項１に記載の画像形成装置において、前記プロセス監視手段は、さらに前記プログラムのプロセスまたは前記アプリケーションのプロセスの内部で並列に実行される２以上のスレッドの各動作情報を取得することを特徴とする。
【００１９】
この請求項２の発明によれば、プロセス監視手段がプログラムのプロセスまたはアプリケーションのプロセスの内部で並列に実行される２以上のスレッドの各動作情報を取得することで、並列実行される複数プロセスの動作情報だけでなく、プロセス間通信によってプロセス内部で並列実行される複数のスレッドの動作情報を取得できるので、ソフトウェア特性分析などのデバッグ作業のさらなる効率化を図ることができる。
【００２０】
特に、本発明における画像形成装置を、複数のプロセスの他、多種多様な機能を実現するために複数のスレッドを生成して実行させるような特徴的な構成とした場合には、複雑なスレッド間の協調動作により画像形成処理にかかるユーザサービス（例えば、コピー、プリント、スキャナ、ファクシミリなど）が正常に動作しているか否かを、正確かつ容易に検証することができ、従来の画像形成装置におけるデバッグ作業に比べて検証作業の確実性および効率化を向上させることができる。
【００２１】
また、請求項３にかかる発明は、請求項１または２に記載の画像形成装置において、前記プログラムのプロセスまたは前記アプリケーションのプロセス、および前記プロセス監視手段のプロセスから共通にアクセス可能な共有メモリをさらに備え、前記プロセス監視手段は、前記共有メモリを介して前記プログラムのプロセスまたは前記アプリケーションのプロセスから前記動作情報を取得することを特徴とする。
【００２２】
この請求項３の発明によれば、プロセス監視手段が共有メモリを介してプログラムのプロセスまたはアプリケーションのプロセスからプロセスの動作情報を取得することで、共有メモリを利用したプロセス間通信によってプロセスの動作情報を取得することができ、画像形成装置上で並列実行されるプロセスの検証を確実に実現することができる。
【００２３】
また、請求項４にかかる発明は、請求項３に記載の画像形成装置において、前記共有メモリは、前記動作情報を格納順に取出し可能なＦＩＦＯキューを備え、前記プログラムのプロセスまたは前記アプリケーションのプロセスは、前記動作情報を前記ＦＩＦＯキューに格納し、前記プロセス監視手段は、前記ＦＩＦＯキューから前記動作情報を取得することを特徴とする。
【００２４】
この請求項４の発明によれば、プログラムのプロセスまたはアプリケーションのプロセスがプロセスの動作情報を共有メモリ内の格納順に取出し可能なＦＩＦＯキューに格納し、プロセス監視手段がＦＩＦＯキューからプロセスの動作情報を取得することで、並列実行されるプロセスの動作情報を時系列に取得することができ、並列実行されるプロセスの検証が複雑になることを回避して、デバッグ作業を効率的に行うことができる。
【００２５】
また、請求項５にかかる発明は、請求項３または４に記載の画像形成装置において、前記プログラムのプロセスまたは前記アプリケーションのプロセスは、現在の実行位置を示す現在位置情報を、前記共有メモリに格納し、前記プロセス監視手段は、前記共有メモリに格納された前記現在位置情報に基づいて、前記動作情報を取得することを特徴とする。
【００２６】
この請求項５の発明によれば、プロセス監視手段が共有メモリに格納された、プログラムのプロセスまたはアプリケーションのプロセスの現在の実行位置を示す現在位置情報に基づいてプロセスの動作情報を取得することで、プロセスの実行状況を常に把握しながらプロセスの検証を行うことができる。
【００３０】
また、請求項６にかかる発明は、印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションのプロセスを複数搭載可能とし、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行うプログラムのプロセスとを備えた画像形成装置であって、監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した前記監視情報を前記プログラムまたは前記アプリケーションにプロセス間通信により送信し、並列実行される複数のプロセスを監視するプロセス監視手段を有し、前記プロセス監視手段は、プロセス監視要求があったときに、前記プログラムまたは前記アプリケーションの監視要求のあったプログラムに、各プロセスの動作情報を出力する検証コードを付加する検証コード付加手段と、監視対象の前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、前記動作情報を、プロセス間通信によって取得するプロセス情報取得手段と、を備え、前記プログラムまたは前記アプリケーションの各プロセスは、前記監視情報に基づいて自プロセスが監視対象であるか否かを判断し、監視対象である場合に、前記動作情報を前記プロセス情報取得手段にプロセス間通信により受け渡し、前記プロセス情報取得手段は、前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、受信した前記監視情報に基づいて前記動作情報をプロセス間通信によって取得することを特徴とする。
【００３１】
この請求項６の発明によれば、プロセス監視要求があったときに、検証コード付加手段によってプログラムまたはアプリケーションの監視要求のあったプログラムに、各プロセスの動作情報を出力する検証コードを付加し、プロセス情報取得手段によって監視対象の前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスからプロセスの動作情報をプロセス間通信によって取得することで、監視要求のあった時点で監視対象のプログラムのみに検証コードを付加すればよいため、プログラム開発段階で、デバッグ用に検証コードをすべてのプログラムに付加する必要がなくなり、全体としてデバッグ作業の効率化を図ることができる。
【００３２】
本発明における検証コード付加手段は、プロセス監視要求があったときに、監視対象のプログラムに検証コードを付加するものであればよく、その付加方法については特に限定されるものではない。例えば、プログラム開発時に作成される関数名および変数名とアドレスとを対応付けたリンクマップや、ソースコードと実行プログラムコードのアドレスを対応付けた表などのアドレス解決情報を用いて、検証コードを所望の位置に付加することができる。
【００３３】
また、検証コード付加手段は、各プログラムごとに検証コードを付加するために各プログラムごとに存在しても、一つの検証コード付加手段によって各プログラムに対し検証コードを付加するように構成することは任意である。
【００３４】
また、請求項７にかかる発明は、請求項６に記載の画像形成装置において、前記検証コード付加手段は、前記プログラムまたは前記アプリケーションのプログラムのアドレス解決情報が記述されたマップ情報に基づいて、前記検証コードを前記プログラムまたは前記アプリケーションのプログラムに付加することを特徴とする。
【００３５】
この請求項７の発明によれば、検証コード付加手段によって、プログラムまたはアプリケーションのプログラムのアドレス解決情報が記述されたマップ情報に基づいて検証コードをプログラムまたはアプリケーションのプログラムに付加することで、アドレス解決情報に従って監視位置が明確になるので、確実に検証コードを任意の位置に付加することができる。
【００３６】
また、請求項８にかかる発明は、請求項６または７に記載の画像形成装置において、前記検証コード付加手段は、監視対象のプロセスに対する監視内容を指定した監視情報に基づいて前記監視対象のプロセスに前記検証コードを付加することを特徴とする。
【００３７】
この請求項８の発明によれば、検証コード付加手段によって、監視対象のプロセスに対する監視内容を指定した監視情報に基づいて監視対象のプロセスに検証コードを付加することで、監視情報で指定されたプログラムのみに検証コードを付加すれば良く、さらにデバッグ作業の効率化を図ることができる。
【００３８】
また、請求項９にかかる発明は、請求項１〜８のいずれか一つに記載の画像形成装置において、前記アプリケーションに含まれ、前記プロセス監視手段として動作するプロセス監視アプリを備えたことを特徴とする。
【００３９】
この請求項９の発明によれば、プロセス監視手段としてアプリケーション層で動作するプロセス監視アプリを備えたことで、プロセス監視アプリとプログラムとの間のプロセス間通信をアプリケーションプログラムインタフェースを利用して実現することができ、プログラム開発の効率化を図ることができる。
【００４０】
また、請求項１０にかかる発明は、印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションのプロセスを複数搭載可能とし、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行うプログラムのプロセスとを備え、前記プログラムまたは前記アプリケーションが各プロセスの動作情報を出力する検証コードを含んでいる画像形成装置で実行されるプロセスの動作情報を取得するプロセス監視方法であって、プロセス監視手段によって、監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した前記監視情報を前記プログラムまたは前記アプリケーションにプロセス間通信により送信するプロセス監視ステップと、プロセッサによって実行される前記プログラムまたは前記アプリケーションの各プロセスによって、前記監視情報に基づいて自プロセスが監視対象であるか否かを判断し、監視対象である場合に、前記動作情報を前記プロセス監視手段にプロセス間通信により受け渡す受け渡しステップと、を含み、前記プロセス監視ステップは、前記プロセス監視手段によって、前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、受信した前記監視情報に基づいて前記動作情報をプロセス間通信によって取得することを特徴とする。
【００４１】
この請求項１０の発明によれば、プロセス監視ステップによって、プログラムまたはアプリケーションの並列実行されている２以上のプロセスから、検証コードの実行による各プロセスの動作情報をプロセス間通信によって取得することで、画像形成装置上で並列実行されるプログラムまたはアプリケーションのプロセスの検証を確実に行うことができ、並列ソフトウェアの特性分析などのデバッグ作業の効率化を図ることができる。
この請求項１０の発明によれば、プロセス監視ステップが監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した監視情報に基づいてプロセスの動作情報を取得することで、所望の並列プロセスのみの検証を行うことができ、デバッグ作業を効率的に行うことができる。
【００４２】
また、請求項１１にかかる発明は、請求項１０に記載のプロセス監視方法において、前記プロセス監視ステップは、さらに、前記プロセス監視手段によって、前記プログラムのプロセスまたは前記アプリケーションのプロセスの内部で並列に実行される２以上のスレッドの各動作情報を取得することを特徴とする。
【００４３】
この請求項１１の発明によれば、プロセス監視ステップがさらにプログラムのプロセスまたはアプリケーションのプロセスの内部で並列に実行される２以上のスレッドの各動作情報を取得することで、並列実行される複数プロセスの動作情報だけでなく、プロセス間通信によってプロセス内部で並列実行される複数のスレッドの動作情報を取得できるので、ソフトウェア特性分析などのデバッグ作業のさらなる効率化を図ることができる。
【００４４】
特に、本発明におけるプロセス監視方法を、複数のプロセスの他、多種多様な機能を実現するために複数のスレッドを生成して実行させるような特徴的な画像形成装置で使用した場合には、複雑なスレッド間の協調動作により画像形成処理にかかるユーザサービス（例えば、コピー、プリント、スキャナ、ファクシミリなど）が正常に動作しているか否かを、正確かつ容易に検証することができ、従来の画像形成装置におけるデバッグ作業に比べて検証作業の確実性および効率化を向上させることができる。
【００４５】
また、請求項１２にかかる発明は、請求項１０または１１に記載のプロセス監視方法において、前記プロセス監視ステップは、前記プロセス監視手段によって、前記プログラムのプロセスまたは前記アプリケーションのプロセス、およびプロセス監視を実行するプロセスから共通にアクセス可能な共有メモリを介して前記プログラムのプロセスまたは前記アプリケーションのプロセスから前記動作情報を取得することを特徴とする。
【００４６】
この請求項１２の発明によれば、プロセス監視ステップが共有メモリを介してプログラムのプロセスまたはアプリケーションのプロセスからプロセスの動作情報を取得することで、共有メモリを利用したプロセス間通信によってプロセスの動作情報を取得することができ、画像形成装置上で並列実行されるプロセスの検証を確実に実現することができる。
【００４７】
また、請求項１３にかかる発明は、請求項１２に記載のプロセス監視方法において、前記プロセッサにより実行される前記プログラムのプロセスまたは前記アプリケーションのプロセスは、前記動作情報を、前記共有メモリに確保された前記動作情報を格納順に取出し可能なＦＩＦＯキューに格納し、前記プロセス監視ステップは、前記プロセス監視手段によって、前記ＦＩＦＯキューから前記動作情報を取得することを特徴とする。
【００４８】
この請求項１３の発明によれば、プログラムのプロセスまたはアプリケーションのプロセスがプロセスの動作情報を共有メモリ内の格納順に取出し可能なＦＩＦＯキューに格納し、プロセス監視ステップがＦＩＦＯキューからプロセスの動作情報を取得することで、並列実行されるプロセスの動作情報を時系列に取得することができ、並列実行されるプロセスの検証が複雑になることを回避して、デバッグ作業を効率的に行うことができる。
【００４９】
また、請求項１４にかかる発明は、請求項１２または１３に記載のプロセス監視方法において、前記プロセッサによって実行される前記プログラムのプロセスまたは前記アプリケーションのプロセスは、現在の実行位置を示す現在位置情報を、前記共有メモリに格納し、前記プロセス監視ステップは、前記プロセス監視手段によって、前記共有メモリに格納された前記現在位置情報に基づいて、前記動作情報を取得することを特徴とする。
【００５０】
この請求項１４の発明によれば、プロセス監視ステップが共有メモリに格納された、プログラムのプロセスまたはアプリケーションのプロセスの現在の実行位置を示す現在位置情報に基づいてプロセスの動作情報を取得することで、プロセスの実行状況を常に把握しながらプロセスの検証を行うことができる。
【００５３】
また、請求項１５にかかる発明は、印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションのプロセスを複数搭載可能とし、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行うプログラムのプロセスとを備えた画像形成装置で並列実行される複数のプロセスからプロセスの動作情報を取得するプロセス監視方法であって、検証コード付加手段によって、プロセス監視要求があったときに、前記プログラムまたは前記アプリケーションの監視要求のあったプログラムに、各プロセスの動作情報を出力する検証コードを付加する検証コード付加ステップと、送信手段によって、監視対象のプロセスに対する監視内容を指定した監視情報を受信し、受信した前記監視情報を前記プログラムまたは前記アプリケーションにプロセス間通信により送信する送信ステップと、プロセス情報取得手段によって、監視対象の前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、前記動作情報を、プロセス間通信によって取得するプロセス情報取得ステップと、を含み、前記プロセッサによって実行される前記プログラムまたは前記アプリケーションの各プロセスによって、前記監視情報に基づいて自プロセスが監視対象であるか否かを判断し、監視対象である場合に、前記動作情報を前記プロセス情報取得手段にプロセス間通信により受け渡す受け渡しステップと、前記プロセス情報取得ステップは、前記プロセス情報取得手段によって、前記プログラムまたは前記アプリケーションの並列実行されている２以上のプロセスから、受信した前記監視情報に基づいて前記動作情報をプロセス間通信によって取得することを特徴とする。
【００５４】
この請求項１５の発明によれば、プロセス監視要求があったときに、検証コード付加ステップによってプログラムまたはアプリケーションの監視要求のあったプログラムに、各プロセスの動作情報を出力する検証コードを付加し、プロセス情報取得ステップによって監視対象のプログラムまたはアプリケーションの並列実行されている２以上のプロセスからプロセスの動作情報をプロセス間通信によって取得することで、監視要求のあった時点で監視対象のプログラムのみに検証コードを付加すればよいため、プログラム開発段階で、デバッグ用に検証コードをすべてのプログラムに付加する必要がなくなり、全体としてデバッグ作業の効率化を図ることができる。
【００５５】
また、請求項１６にかかる発明は、請求項１５に記載のプロセス監視方法において、前記検証コード付加ステップは、前記検証コード付加手段によって、前記プログラムまたは前記アプリケーションのプログラムのアドレス解決情報が記述されたマップ情報に基づいて、前記検証コードを前記プログラムまたは前記アプリケーションのプログラムに付加することを特徴とする。
【００５６】
この請求項１６の発明によれば、検証コード付加ステップによって、プログラムまたはアプリケーションのプログラムのアドレス解決情報が記述されたマップ情報に基づいて検証コードをプログラムまたはアプリケーションのプログラムに付加することで、アドレス解決情報に従って監視位置が明確になるので、確実に検証コードを任意の位置に付加することができる。
【００５７】
また、請求項１７にかかる発明は、請求項１５または１６に記載のプロセス監視方法において、前記検証コード付加ステップは、前記検証コード付加手段によって、監視対象のプロセスに対する監視内容を指定した監視情報に基づいて前記監視対象のプロセスに前記検証コードを付加することを特徴とする。
【００５８】
この請求項１７の発明によれば、検証コード付加ステップによって、監視対象のプロセスに対する監視内容を指定した監視情報に基づいて監視対象のプロセスに検証コードを付加することで、監視情報で指定されたプログラムのみに検証コードを付加すれば良く、さらにデバッグ作業の効率化を図ることができる。
【００６５】
また、請求項１８にかかる発明は、請求項１０〜１７のいずれか一つに記載された方法をコンピュータに実行させるプログラムであるので、請求項１０〜１７のいずれか一つの動作をコンピュータによって実行することができる。
【００６６】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる画像形成装置、プロセス監視方法およびこの方法をコンピュータに実行させるプログラムの好適な実施の形態を詳細に説明する。
【００６７】
（実施の形態１）
図１は、この発明の実施の形態１である画像形成装置（以下、「複合機」という）の構成を示すブロック図である。図１に示すように、複合機１００は、白黒ラインプリンタ（B&W LP）１０１と、カラーラインプリンタ（Color LP）１０２と、スキャナ、ファクシミリ、ハードディスク、メモリ、ネットワークインタフェースなどのハードウェアリソース１０３を有するとともに、プラットホーム１２０とアプリケーション１３０とから構成されるソフトウェア群１１０とを備えている。
【００６８】
プラットホーム１２０は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）１２３と、汎用ＯＳ１２１とを有する。
【００６９】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）１２２と、ＥＣＳ（エンジンコントロールサービス）１２４と、ＭＣＳ（メモリコントロールサービス）１２５と、ＯＣＳ（オペレーションパネルコントロールサービス）１２６と、ＦＣＳ（ファックスコントロールサービス）１２７と、ＮＣＳ（ネットワークコントロールサービス）１２８とから構成される。なお、このプラットホーム１２０は、あらかじめ定義された関数により前記アプリケーション１３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【００７０】
汎用ＯＳ１２１は、ＵＮＩＸなどの汎用オペレーティングシステムであり、プラットホーム１２０並びにアプリケーション１３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００７１】
ＳＲＭ１２３のプロセスは、ＳＣＳ１２２とともにシステムの制御およびリソースの管理を行うものである。ＳＲＭ１２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ、ＩＥＥＥ１３９４  Ｉ／Ｆ、ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【００７２】
具体的には、このＳＲＭ１２３は、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ１２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容（例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００７３】
ＳＣＳ１２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などを行う。
【００７４】
ＥＣＳ１２４のプロセスは、白黒ラインプリンタ（B&W LP）１０１、カラーラインプリンタ（Color LP）１０２、スキャナ、ファクシミリなどからなるハードウェアリソース１０３のエンジンの制御を行う。
【００７５】
ＭＣＳ１２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などを行う。
【００７６】
ＦＣＳ１２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供する。
【００７７】
ＮＣＳ１２８のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。
【００７８】
ＯＣＳ１２６のプロセスは、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネル）２１０の制御を行う。なお、実施の形態１にかかる複合機１００では、ＯＣＳ１２６はプロセスとして複合機１００の内部で動作しているが、この他、上述のＯＣＳ１２６の機能を関数として実装したＯＣＳ関数ライブラリを、各アプリケーション１３０にリンク（結合）することにより、上記ＯＣＳ１２６の機能を実現する構成としても良い。
【００７９】
アプリケーション１３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１１１と、コピー用アプリケーションであるコピーアプリ１１２と、ファクシミリ用アプリケーションであるファックスアプリ１１３と、スキャナ用アプリケーションであるスキャナアプリ１１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ１１５と、工程検査用アプリケーションである工程検査アプリ１１６とプロセス監視アプリ１１７とを有している。
【００８０】
プロセス監視アプリ１１７は、本発明におけるプロセス監視手段を構成するものであり、アプリケーション層で動作するプロセスである。このプロセス監視アプリ１１７は、監視情報の指定に従って、複合機１００で動作するプロセスのロギング情報を取得する。ここで、ロギング情報とは、プログラムの処理内容やプロセス情報を時間の流れに沿って記録したものであり、本発明におけるプロセスの動作情報を構成する。
【００８１】
プロセス監視アプリ１１７は、具体的には、オペレーションパネル２１０からのデバッグ作業を行うユーザの操作あるいはネットワークに接続されたリモートＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）でデバッグ作業を行うユーザから監視情報を受信し、監視情報に設定された情報を後述する共有メモリのロギング管理テーブルに設定し、このロギング管理テーブルの設定情報に従って各プロセスから共有メモリのＦＩＦＯキューに出力したロギング情報を取得する。
【００８２】
ここで、監視情報とは、監視対象のプロセス（例えば、プリンタアプリ１１１、コピーアプリ１１２、ＥＣＳ１２４、ＭＣＳ１２５など）、監視位置（コピー開始から終了まで、特定の関数の開始から終了まで、上位１０個のスレッドなど）、監視内容（関数など）を設定したものである。
【００８３】
そして、プロセス監視アプリ１１７は、取得したロギング情報からログファイルを生成して、プリンタやオペレーションパネル２１０の表示部に出力したり、あるいはロギング情報をネットワークに接続されたリモートＰＣに送信する。なお、プロセス監視アプリ１１７の詳細な動作については後述する。
【００８４】
図２は、図１に示した実施の形態１の複合機１００のハードウェア構成図である。図２に示すように、この複合機１００は、ＣＰＵ２０２、ＳＤＲＡＭ２０３、ＳＲＡＭ２０８、フラッシュメモリ２０４、およびＨＤ２０５などをＡＳＩＣ２０１に接続したコントローラボード２００と、オペレーションパネル２１０と、ファックスコントロールユニット（ＦＣＵ）２２０と、ＵＳＢ２３０と、ＩＥＥＥ1394 ２４０と、プリンタ２５０とから構成されている。オペレーションパネル２１０はＡＳＩＣ２０１に直接接続され、ＦＣＵ２２０、ＵＳＢ２３０、ＩＥＥＥ1394 ２４０およびプリンタ２５０はＰＣＩバスを介してＡＳＩＣ２０１に接続されている。フラッシュメモリ２０４には、上述の各アプリ、プラットホーム１２０を構成する各コントロールサービスやＳＲＭ１２３の各プログラムが格納されている。
【００８５】
オペレーションパネル２１０は、ユーザが複合機１００に対して機能選択などの指示を与える操作パネルである。複合機１００のデバッグ作業を行うユーザは、このオペレーションパネル２１０から監視対象のプロセスや監視位置、監視内容などを指定した監視情報を入力するようになっている。ユーザ操作により入力された監視情報は、ＳＣＳ１２２およびＯＣＳ１２６を介してプロセス監視アプリ１１７に送信される。
【００８６】
ＳＤＲＡＭ２０３には、プロセス監視アプリ１１７のプロセス、他のアプリケーション１３０のプロセスおよび各コントロールサービスのプロセスで共有され、共通にアクセス可能な共有メモリ領域（以下、「共有メモリ」という。）が確保されている。
【００８７】
実施の形態１にかかる複合機１００で実行されるプロセス監視プログラム（プロセス監視アプリ１１７のプログラム）は、ソフトウェア開発キット（ＳＤＫ：Ｓｏｆｔｗａｒｅ  Ｄｅｐｅｌｏｐｍｅｎｔ  Ｋｉｔ）の一部または全部として、ＣＤ−ＲＯＭまたはＦＤなどの記憶媒体に実行可能な形式またはインストール可能な形式のファイルで提供される。また、このような実行可能な形式またはインストール可能な形式のファイルを、ネットワーク経由でＮＣＳ１２８を介して（あるいはＮＣＳ１２８を介さずに直接ダウンロードするなど）取得可能な方法で提供するようにしても良い。
【００８８】
図３は、実施の形態１にかかる複合機１００で行われるプロセス監視方法において、監視対象プロセスの実行状況、プロセス監視アプリ１１７の動作状況および共有メモリの状態の模式図である。
【００８９】
図３に示すように、複合機１００は、プロセス監視アプリ１１７とアプリケーション１３０およびコントロールサービス（図３の例では、コピーアプリ１１２のプロセス、ＭＣＳ１２５のプロセス）が共有し共にアクセス可能な共有メモリ３００を有しており、プロセス監視アプリ１１７はこの共有メモリ３００を利用したプロセス間通信によって、アプリケーション１３０およびコントロールサービスの各プロセスの動作状況を監視している。
【００９０】
この共有メモリ３００には、ロギング管理テーブル３０１と、現在位置テーブル３０２と、ロギング出力ＦＩＦＯキュー３０３の各領域が確保されている。ロギング管理テーブル３０１は、オペレーションパネル２１０またはリモートＰＣ３２０からの監視情報の設定内容がプロセス監視アプリ１１７によって書き込まれる。監視対象のプロセス（図３の場合、コピーアプリ１１２およびＭＣＳ１２５の各プロセス）は、共有メモリ３００のロギング管理テーブル３０１を参照して、ロギングすべき状態か否かを判断する。
【００９１】
現在位置テーブル３０２は、各プロセスが実行するタグ関数によって、現在のプロセスＩＤ（ＰＩＤ）、スレッドＩＤ（ｔｈｒＩＤ）、タグＩＤが書き込まれる。ロギング出力ＦＩＦＯキュー３０３は、格納順に取り出すことが可能ないわゆるＦＩＦＯ(Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ)形式のキューであり、監視対象の各プロセスにおけるタグ関数によりロギング情報が格納され、格納されたロギング情報が格納順にプロセス監視アプリ１１７から取り出せるようになっている。
【００９２】
プロセス監視アプリ１１７は、監視情報設定部３０４とロギング情報取得部３０５とを備えている。監視情報設定部３０４は、オペレーションパネル２１０またはリモートＰＣ３２０から監視情報を受信し、監視情報の設定内容を共有メモリ３００のロギング管理テーブル３０１に設定するものである。ロギング情報取得部３０５は、共有メモリ３００のロギング出力ＦＩＦＯキュー３０３を一定間隔でポーリングし、ロギング出力ＦＩＦＯキュー３０３に格納されているロギング情報を格納順に取得し、取得したロギング情報をオペレーションパネル２１０にＯＣＳ１２６経由で出力したり、プリンタに出力する。あるいは取得したロギング情報をリモートＰＣ３２０にＮＣＳ１２８経由で送信する。
【００９３】
プロセス監視処理実行時には、コピーアプリ１１２およびＭＣＳ１２５のプログラムの中にタグ関数が挿入されているものとする。ここで、タグ関数とは本発明における検証コードを構成するものである。このタグ関数は、コピーアプリ１１２やＭＣＳ１２５のプログラム作成段階において各プログラムに挿入したり、あるいはプロセス監視アプリ１１７によって動的に各プログラムに挿入されるが、実施の形態１ではタグ関数の挿入方法については特に限定せず、プロセス監視アプリ１１７によるプロセス監視時にタグ関数が監視対象のプロセスのプログラムに付加された状態となっていれば良い。なお、図３に示す各タグ関数の関数名に続く括弧内の番号はタグ関数を識別するためのタグＩＤである。
【００９４】
図３に示すタグ関数ｔａｇ＿ｓｅｔｕｐは、プログラムの起動開始箇所に挿入され、プロセス起動時に実行するタグ関数である。図３の例では、コピーアプリ１１２およびＭＣＳ１２５の開始時の位置に挿入されている。このタグ関数ｔａｇ＿ｓｅｔｕｐは、共有メモリ３００にアクセスするための初期設定を行う。
【００９５】
タグ関数ｔａｇ＿ｉｎは、関数の入口に挿入するタグ関数であり、プロセス監視アプリ１１７が制御するロギング管理テーブル３０１および現在位置テーブル３０２を参照し、ロギングすべき状態であれば、例えば汎用ＯＳ１２１から提供されるシステムコールなどによって、プロセスＩＤ、プロセス占有時間、プロセス優先順位などのプロセス情報を取得し、取得したプロセス情報をロギング情報として共有メモリのロギング出力ＦＩＦＯキュー３０３に出力する。
【００９６】
タグ関数ｔａｇ＿ｏｕｔは、関数の出口に挿入するタグ関数であり、プロセス監視アプリ１１７が制御するロギング管理テーブル３０１および現在位置テーブル３０２を参照し、ロギングすべき状態であれば上述のプロセス情報を取得し、取得したプロセス情報をロギング情報として共有メモリのロギング出力ＦＩＦＯキュー３０３に出力する。
【００９７】
タグ関数ｔａｇ＿ｃｌｏｓｅは、プログラムの終了箇所に挿入され、プロセス終了時に実行され、ロギング情報出力の後処理などを行う。図３の例では、コピーアプリ１１２およびＭＣＳ１２５の開始時の位置に挿入されている。
【００９８】
図３に示すように、コピーアプリ１１２のプロセス（プロセスＩＤ（ＰＩＤ）＝１００）は、メインスレッド（スレッドＩＤ（ｔｈｒＩＤ）＝１）からｔｈｒｅａｄ＿ｃｒｅａｔｅ関数によってサブスレッド（スレッドＩＤ（ｔｈｒＩＤ）＝２）が生成されて、両スレッドは並列実行されている。また、このコピーアプリ１１２のプロセスと、ＭＣＳ１２５のプロセスも並列に実行されている。このようにプロセス監視アプリ１１７は、コピーアプリ１１２のプロセス内の並列実行される２つのスレッドと、コピーアプリ１１２のプロセスと並列実行されるＭＣＳ１２５のプロセスの動作を監視して、ロギング情報を取得するようになっている。
【００９９】
つぎに、このように構成された実施の形態１にかかる複合機１００によるプロセス監視方法について説明する。図４は、実施の形態１の複合機１００におけるプロセス監視アプリ１１７によるプロセス監視処理の手順を示すフローチャートである。
【０１００】
図４に示すように、プロセス監視アプリ１１７の監視情報設定部３０４では、オペレーションパネル２１０またはリモートＰＣ３２０から監視情報を受信すると（ステップＳ４０１）、監視情報に設定されているロギング対象、ロギング開始位置、ロギング終了位置、ロギング項目などを、共有メモリ３００のロギング管理テーブル３０１に書き込む（ステップＳ４０２）。図３の例では、監視情報として、ロギング対象が「コピーアプリ、ＭＣＳ」、ロギング開始位置が「コピースタート」、ロギング終了位置が「コピーエンド」、ロギング項目が「関数」とされており、ロギング管理テーブル３０１に、これらの内容がそのまま設定される。
【０１０１】
なお、図３に示すロギング管理テーブル３０１（および監視情報）の設定内容は一例であり、他の内容を設定することも可能である。たとえば、ロギング開始位置やロギング終了位置をタグ関数のタグＩＤで指定してもよく、またロギング対象を、「ｔｏｐ１０のスレッド」のように指定することもできる。
【０１０２】
つぎに、ロギング情報を取得するため、ロギング情報取得部３０５は、一定時間ごとに共有メモリ３００のロギング出力ＦＩＦＯキュー３０３を参照し、データが格納されているか否かを調べる（ステップＳ４０３）。そして、データが格納されている場合には、ロギング出力ＦＩＦＯキュー３０３から格納順にロギング情報を取得する（ステップＳ４０４）。取得したロギング情報は、プリンタに出力あるいはオペレーションパネル２１０への表示、もしくはリモートＰＣ３２０に送信される（ステップＳ４０５）。
【０１０３】
図５は、コピーアプリ１１２、ＭＣＳ１２５の各プロセスにおけるタグ関数ｔａｇ＿ｉｎおよびｔａｇ＿ｏｕｔで実行される処理手順を示すフローチャートである。タグ関数は、まず共有メモリ３００のロギング管理テーブル３０１を参照し（ステップＳ５０１）、その設定内容からロギングすべき状態か否かを判断する（ステップＳ５０２）。かかる判断は、現在のタグ関数がロギング対象、ロギング開始位置およびロギング終了位置の条件に含まれているか否かをチェックすることにより行う。
【０１０４】
たとえば、図３の例において、現在位置であるタグ関数ｔａｇ＿ｉｎ（５）の場合には、かかる関数はコピーアプリ１１２のプロセスで実行されるため、ロギング対象の条件を満たし、またコピーアプリ１１２のプロセスの開始から終了前に実行されるので、ロギング開始位置およびロギング終了位置の条件を満たす。従って、この場合、ロギングすべき状態であると判断する。
【０１０５】
そして、ロギングすべき状態の場合には、自プロセスのプロセスＩＤ、自スレッドのスレッドＩＤ、タグ関数のタグＩＤなどの情報を現在位置テーブル３０２に書き込む（ステップＳ５０３）。
【０１０６】
ついで、汎用ＯＳ１２１で提供されるシステムコールなどを利用して、プロセス情報を取得する（ステップＳ５０４）。このプロセス情報には、プロセスの開始時間、実行時間、優先順位などプロセスに関する種々の情報があげられる。そして、取得したプロセス情報をタグＩＤとともにロギング情報として、共有メモリ３００のロギング出力ＦＩＦＯキュー３０３に書き込む（ステップＳ５０５）。ロギング出力ＦＩＦＯキュー３０３に書き込まれたロギング情報は、上述のようにプロセス監視アプリ１１７によって読み出される。
【０１０７】
このように、実施の形態１にかかる複合機１００では、プロセス監視アプリ１１７によって、コントロールサービスまたはアプリケーション１３０の並列実行されている２以上のプロセスから、タグ関数の実行による各プロセスの動作情報であるロギング情報を、共有メモリ３００を利用したプロセス間通信によって取得しているので、複合機１００で並列実行されるコントロールサービスまたはアプリケーションのプロセスの検証を確実に行うことができ、並列ソフトウェアの特性分析などのデバッグ作業の効率化を図ることができる。
【０１０８】
また、実施の形態１にかかる複合機１００では、プロセス監視アプリ１１７によって、プロセス内で並列実行される複数のスレッドの動作情報であるロギング情報を、共有メモリ３００を利用したプロセス間通信により取得することができるので、複雑なスレッド間の協調動作により、コピー、プリント、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスが正常に動作しているか否かを、正確かつ容易に検証することができ、検証作業の確実性および効率化を向上させることができる。
【０１０９】
（実施の形態２）
実施の形態１の複合機１００では、監視対象のプロセスのプログラムに検証コードとしてのタグ関数を付加する点については特に限定していなかったが、この実施の形態２にかかる複合機１００は、タグ関数を監視対象のプログラムに動的に付加するものである。
【０１１０】
実施の形態２にかかる複合機の構成、ハードウェア構成については、図１および図２に示した実施の形態１の複合機１００と同様であるので、詳細な説明を省略する。実施の形態２にかかる複合機１００は、プロセス監視アプリ１１７が監視対象のプロセスのプログラムに本発明の検証コードとしてのタグ関数を付加する点が実施の形態１の複合機１００と異なる。
【０１１１】
図６は、実施の形態２の複合機１００におけるプロセス監視アプリ１１７の構成図である。図６に示すように、実施の形態２のプロセス監視アプリ１１７は、実施の形態１と同様に監視情報設定部３０４とロギング情報取得部３０５の他、さらにタグ関数を監視対象プロセスのプログラムに付加するタグ関数付加部３０６を備えている。ここで、ロギング情報取得部３０５は本発明におけるプロセス情報取得手段を構成し、タグ関数付加部３０６は本発明における検証コード付加手段を構成する。
【０１１２】
タグ関数付加部３０６は、プログラムのリンク時に生成されたリンクマップをハードディスクから読み出して、監視情報の監視対象プロセスおよび監視する関数名などの指定から監視位置のアドレスを決定する。そして、決定されたアドレスにある命令を、タグ関数を付加した命令に置換する処理を行うことにより、動的にタグ関数を監視対象のプログラムに付加する。
【０１１３】
図７は、プロセス監視アプリ１１７によるタグ関数の付加およびプロセス監視の処理手順を示すフローチャートである。プロセス監視アプリ１１７は、まず監視情報設定部３０４によって、監視情報を、オペレーションパネル２１０またはリモートＰＣ３２０から受信する（ステップＳ７０１）。そして、タグ関数付加部３０６によって受信した監視情報に設定されている監視対象プロセスのプログラムをフラッシュメモリ２０４から読み出すとともに、ハードディスクからリンクマップを読み出し、監視情報に監視対象位置として指定された関数などのアドレスを決定する（ステップＳ７０２）。
【０１１４】
つぎに、タグ関数付加部３０６は、決定されたアドレスにあるプログラムの命令を、タグ関数を付加した命令に置換する（ステップＳ７０３）。そして、タグ関数付加部３０６は、ＳＣＳ１２２に対して監視対象のプロセスの再起動の依頼メッセージを送信する（ステップＳ７０４）。これにより、監視対象のプロセスはＳＣＳ１２２によって、タグ関数が付加されたプロセスとして再起動される。
【０１１５】
監視情報設定部３０４は、監視対象プロセスが再起動したか否かをチェックし（ステップＳ７０５）、再起動した場合には、実施の形態１のプロセス監視アプリ１１７と同様に監視処理を実行する（ステップＳ７０６）。
【０１１６】
監視処理の実行が終了した場合には、タグ関数付加部３０６によって監視対象のプログラムにおいてタグ関数に置換した命令を元に戻し（ステップＳ７０７）、再度監視対象プロセスの再起動依頼メッセージをＳＣＳ１２２に送信する（ステップＳ７０８）。これにより、監視対象プロセスは元の状態に戻り監視処理が完了する。
【０１１７】
このように実施の形態２にかかる複合機１００では、監視情報を受信したときに、タグ関数付加部３０６によって、コントロールサービスまたはアプリケーション１３０の監視要求のあったプログラムに、タグ関数を動的に付加し、プロセス情報取得手段によって監視対象の前記コントロールサービスまたは前記アプリケーションの並列実行されている２以上のプロセスからプロセスのロギング情報を共有メモリ３００を利用したプロセス間通信によって取得しているので、監視要求のあった時点で監視対象のプログラムのみに検証コードを付加すればよい。このため、プログラム開発段階で、デバッグ用にタグ関数などの検証コードをすべてのプログラムに付加する必要がなくなり、全体としてデバッグ作業の効率化を図ることができる。
【０１１８】
なお、実施の形態１および２の複合機１００では、本発明のプロセス監視手段をプロセス監視アプリ１１７としてアプリケーション層に設けているが、例えば、プロセス監視コントロールサービスとして、コントロールサービス層に設けることも可能である。また、アプリケーション層やコントロールサービス層とは別個にプロセス監視手段のプロセスを設けても良い。
【０１１９】
（実施の形態３）
実施の形態２の複合機１００では、タグ関数をプロセス監視の際に動的にプログラムに付加していたが、この実施の形態３では、プログラムの開発段階でタグ関数を付加している。図８は、ソフトウェア機能を識別するタグ関数を挿入するサンプルプログラムを示した説明図である。ここでは、一例としてＣソースコードレベルで命令を追加する方法でタグ関数を挿入する場合について説明する。
【０１２０】
まず、関数の入口８０１に入口用のタグ関数（ｔａｇ＿ｉｎ（１））を、関数の出口８０２、８０３に出口用のタグ関数（ｔａｇ＿ｏｕｔ（１））を挿入する。タグ関数の引数番号（（）内の番号）はタグ関数を識別するためのタグＩＤであり、関数単位で任意のＩＤ番号を割り付ける。関数の入口は必ず一箇所であるが、出口に関しては複数存在する場合があるので、全ての出口に出口用のタグ関数を挿入する。なお、タグ関数の挿入は関数単位だけでなく、必要に応じてソフトウェア機能単位で挿入するようにしてもよい。
【０１２１】
図９は、並列実行されるマルチスレッドのＣソースプログラムの動作シーケンスを示した説明図である。図９に示すように、タグ関数は関数単位で挿入されており、ｔａｇ＿ｓｅｔｕｐ（１）、ｔａｇ＿ｉｎ（３）、ｔａｇ＿ｏｕｔ（４）、ｔａｇ＿ｃｌｏｓｅ（２）などの各タグ関数内において、タグＩＤ番号を保持することにより、並列動作の関数を識別することができる。タグ関数では、実施の形態１と同様に、プロセス情報および関数識別のためのタグＩＤ番号をロギング情報として、共有メモリ３００のロギング出力ＦＩＦＯキュー３０３に出力している。なお、各タグ関数の機能は、実施の形態１で説明した各タグ関数の機能と同様であるため説明を省略する。
【０１２２】
図１０は、実施の形態３にかかるデバッグ方法で使用するデバッグシステムの構成およびかかるデバッグシステムによる並列プロセスの監視手順を示した説明図である。図１０に示すように、実施の形態３にかかるデバッグシステムは、タグ付け自動装置１０１８と、プロファイル装置１０１７（以下、「プロセス・プロファイル１０１７」という）と、共有メモリ３００とを備えている。
【０１２３】
タグ付け自動装置１０１８は、プログラムやソフトウェア機能に対して、本発明における検証コードとしてのタグ付けを自動的に行う装置である。このタグ付け自動装置１０１８は、ソースコードプログラムにタグ関数を付加するタグ付けツール１０１９と、監視情報となるロギング設定ファイルを生成するロギング設定ツール１０２０と、さらにプリプロセッサ、コンパイラおよびリンカなど通常のプログラム開発を行うために必要なコンポーネントを備えている。
【０１２４】
プロセス・プロファイル１０１７は、タグ付け関数が出力するロギング管理テーブルへの監視情報の設定およびプログラムの処理内容やプロセス情報を時間の流れに沿って記録したロギング情報を取得して、一括管理したりプリンタなどに出力を行うものである。このプロセス・プロファイル１０１７は、ロギング設定ファイルの設定内容を監視情報として共有メモリ３００のロギング管理テーブル３０１に設定する監視情報設定部３０４と、共有メモリ３００のロギング出力ＦＩＦＯキュー３０３からロギング情報を取得して、プリンタなどにロギング出力ファイルとして出力するロギング情報取得部３０５とを備えている。監視情報設定部３０４は、監視情報をロギング設定ファイル１００７から生成する点が実施の形態１で説明したプロセス監視アプリ１１７の監視情報設定部３０４と異なっており、他の処理内容は実施の形態１と同様である。また、ロギング情報設定部３０５の処理内容は、実施の形態１で説明したプロセス監視アプリ１１７におけるロギング情報取得部３０５と同様である。
【０１２５】
共有メモリ３００は、監視対象のプロセスと、プロセス・プロファイル１０１７のプロセスから共有してアクセスされるものであり、実施の形態１と同様に、ロギング管理テーブル３０１とロギング出力ＦＩＦＯキュー３０３の領域が確保されている。
【０１２６】
つぎに、以上のように構成された実施の形態３のデバッグシステムによるソフトウェアのデバッグ方法について説明する。実施の形態３に係るデバッグ方法では、エラーを検出するために検証するプロセスに検証コードとしてのタグ関数が挿入されており、共有メモリ３００を介して各プロセスのロギング情報を取得するようになっている。
【０１２７】
まず、一例としてＣ言語ソースプログラムコード（以下、「Ｃプログラムコード」という。）にタグ関数を挿入する処理手順について説明する。実施の形態３のタグ付け自動装置１０１８では、図１０に示すように、ユーザのＣプログラムコードにタグ付け関数を挿入しやすいようにＣプログラムコードに対してプリプロセッサ処理を行い、＃ｉｎｃｌｕｄｅ、＃ｄｅｆｉｎｅの定義マクロを展開する（ステップＳ１００１）。そして、タグ付け自動装置１０１８のタグ付けツールによって関数の出入り口にタグ関数を自動挿入する（ステップＳ１００２）。このタグ付けツールは、タグ関数名とタグＩＤ番号の対応関係であるタグＩＤ辞書ファイル１００６を出力する。このタグＩＤ辞書ファイル１００６は、監視情報のロギング管理テーブル３０１への設定時にタグ関数名からタグＩＤ番号を検索する場合の辞書ファイルとして使用される。そして、タグ付け自動装置１０１８は、タグ付けされたＣプログラムコート１００５をコンパイルしてリンクすることによって、タグ付きプログラムの実行ファイル１０２１を作成する（ステップＳ１００３）。
【０１２８】
ロギング設定ツール１０２０は、プロセス・プロファイル１０１７がロギング管理テーブル３０１に設定する監視情報の項目を設定したロギング設定ファイル１００７を生成する（ステップＳ１００４）。プロセス・プロファイル１０１７は、ロギング設定ファイル１００７の設定内容を解析して、ロギング対象プロセスやロギング開始位置および終了位置などの監視対象位置、ロギング項目などの監視情報をロギング管理テーブル３０１に設定する。
【０１２９】
図１０の例では、ロギング管理テーブル３０１に、ロギング対象として「ｔｏｐ１０のスレッド」が設定されているので、プロセスｐｒｏｃ１およびｐｒｏｃ２で生成される最初の１０個のスレッドが監視対象となる。
【０１３０】
また、図１０の例では、ロギング開始位置がタグＩＤが３であるタグ関数であり、ロギング終了位置がタグＩＤが４であるタグ関数となっており、このため図１０の矢印で示したロギング開始からロギング終了までのプロセスｐｒｏｃ１およびｐｒｏｃ２で生成される最初の１０個のスレッドの処理がロギング情報として出力されることになる。
【０１３１】
そして、ロギング対象およびロギング開始位置から終了位置までのタグ関数によってプロセス情報とタグＩＤが共有メモリ３００のロギング出力ＦＩＦＯキュー３０３に格納される。そして、プロセス・プロファイル１０１７のロギング情報取得部３０５によってロギング情報がロギング出力ＦＩＦＯキュー３０３から格納順に取得され、プリンタなどにロギング出力ファイルとして出力される。このようなプロセス監視処理の詳細な手順は、実施の形態１において図４および図５を用いて説明した処理と同様である。
【０１３２】
以上のように、実施の形態３にかかるデバッグシステムを利用したデバッグ方法では、複数のプロセスおよび複数のスレッドを並列実行可能な計算機システムにおいて、並列動作のソフトウェアシステムの各ソースプログラムに自動的にタグ付けを行っているので、プログラム実行の際に変数などの状態を記録しながら動作を調べるという、ロギング情報を取得することができ、並列動作するソフトウェアシステムの特性分析が容易になり、ソフトウェアシステムの処理速度を向上することができる。
【０１３３】
また、実施の形態３にかかるデバッグシステムを利用したデバッグ方法では、プログラムにタグ付けを自動的に行うタグ付け自動装置１０１８と、タグ付けによる実行プログラムのロギング情報を取得し、一括管理するプロファイル装置１０１７とによって、プログラムのロギング情報を管理するので、タグＩＤ番号をユーザに対して隠すことができ、デバッグ方法の操作性、検出効率を向上することができる。
【０１３４】
さらに、実施の形態３に係るデバッグシステムによる方法は、単一の計算機システム内で独立したアドレス空間を持つマルチプロセスの処理の並列動作ソフトウェアシステムでもエラー、バグの検出をすることができる。
【０１３５】
なお、実施の形態１〜３において説明したタグ関数は検証コードの一例を示すものであり、取得するプロセスの情報により任意の関数、検証用プログラムを検証コードとして使用することができる。
【０１３６】
また、実施の形態１〜３において説明した監視情報およびロギング情報も一例を示すものであり、他の情報を監視情報またはロギング情報に含めることも可能である。
【０１３７】
また、実施の形態１〜３では、共有メモリを利用したプロセス間通信によってロギング情報をプロセス間で送受信しているが、この他メッセージ送受信や関数呼び出しとその戻り値送信などの他のプロセス間通信の手法によって、ロギング情報をプロセス間で送受信するように構成することも可能である。
【０１３８】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、画像形成装置上で並列実行されるプログラムまたはアプリケーションのプロセスの検証を確実に行うことができ、並列ソフトウェアの特性分析などのデバッグ作業の効率化を図ることができるという効果を奏する。
また、請求項１にかかる発明によれば、所望の並列プロセスのみの検証を行うことができ、デバッグ作業を効率的に行うことができるという効果を奏する。
【０１３９】
また、請求項２にかかる発明によれば、並列実行される複数プロセスの動作情報だけでなく、プロセス間通信によってプロセス内部で並列実行される複数のスレッドの動作情報を取得できるので、ソフトウェア特性分析などのデバッグ作業のさらなる効率化を図ることができるという効果を奏する。特に、この発明によれば、画像形成装置を複数のプロセスの他、多種多様な機能を実現するために複数のスレッドを生成して実行させるような特徴的な構成とした場合において、複雑なスレッド間の協調動作により画像形成処理にかかるユーザサービスが正常に動作しているか否かを、正確かつ容易に検証することができ、検証作業の確実性および効率化を向上させることができるという効果を奏する。
【０１４０】
また、請求項３にかかる発明によれば、共有メモリを利用したプロセス間通信によってプロセスの動作情報を取得することができ、画像形成装置上で並列実行されるプロセスの検証を確実に実現することができるという効果を奏する。
【０１４１】
また、請求項４にかかる発明によれば、並列実行されるプロセスの動作情報を時系列に取得することができ、並列実行されるプロセスの検証が複雑になることを回避して、デバッグ作業を効率的に行うことができるという効果を奏する。
【０１４２】
また、請求項５にかかる発明によれば、プロセスの実行状況を常に把握しながらプロセスの検証を行うことができるという効果を奏する。
【０１４４】
また、請求項６にかかる発明によれば、プログラム開発段階で、デバッグ用に検証コードをすべてのプログラムに付加する必要がなくなり、全体としてデバッグ作業の効率化を図ることができるという効果を奏する。
【０１４５】
また、請求項７にかかる発明によれば、アドレス解決情報に従って監視位置が明確になるので、確実に検証コードを任意の位置に付加することができるという効果を奏する。
【０１４６】
また、請求項８にかかる発明によれば、監視情報で指定されたプログラムのみに検証コードを付加すれば良く、さらにデバッグ作業の効率化を図ることができるという効果を奏する。
【０１４７】
また、請求項９にかかる発明によれば、プロセス監視アプリとプログラムとの間のプロセス間通信をアプリケーションプログラムインタフェースを利用して実現することができ、プログラム開発の効率化を図ることができるという効果を奏する。
【０１４８】
また、請求項１０にかかる発明によれば、画像形成装置上で並列実行されるプログラムまたはアプリケーションのプロセスの検証を確実に行うことができ、並列ソフトウェアの特性分析などのデバッグ作業の効率化を図ることができるという効果を奏する。
また、請求項１０にかかる発明によれば、所望の並列プロセスのみの検証を行うことができ、デバッグ作業を効率的に行うことができるという効果を奏する。
【０１４９】
また、請求項１１にかかる発明によれば、並列実行される複数プロセスの動作情報だけでなく、プロセス間通信によってプロセス内部で並列実行される複数のスレッドの動作情報を取得できるので、ソフトウェア特性分析などのデバッグ作業のさらなる効率化を図ることができるという効果を奏する。特に、複数のプロセスの他、多種多様な機能を実現するために複数のスレッドを生成して実行させるような特徴的な構成の画像形成装置で本発明のプロセス監視方法を使用することで、複雑なスレッド間の協調動作により画像形成処理にかかるユーザサービスが正常に動作しているか否かを、正確かつ容易に検証することができ、検証作業の確実性および効率化を向上させることができるという効果を奏する。
【０１５０】
また、請求項１２にかかる発明によれば、共有メモリを利用したプロセス間通信によってプロセスの動作情報を取得することができ、画像形成装置上で並列実行されるプロセスの検証を確実に実現することができるという効果を奏する。
【０１５１】
また、請求項１３にかかる発明によれば、並列実行されるプロセスの動作情報を時系列に取得することができ、並列実行されるプロセスの検証が複雑になることを回避して、デバッグ作業を効率的に行うことができるという効果を奏する。
【０１５２】
また、請求項１４にかかる発明によれば、プロセスの実行状況を常に把握しながらプロセスの検証を行うことができるという効果を奏する。
【０１５４】
また、請求項１６にかかる発明によれば、プログラム開発段階で、デバッグ用に検証コードをすべてのプログラムに付加する必要がなくなり、全体としてデバッグ作業の効率化を図ることができるという効果を奏する。
【０１５５】
また、請求項１７にかかる発明によれば、アドレス解決情報に従って監視位置が明確になるので、確実に検証コードを任意の位置に付加することができるという効果を奏する。
【０１６０】
また、請求項１８にかかる発明は、請求項１０〜１７のいずれか一つに記載された方法をコンピュータに実行させるプログラムであるので、請求項１０〜１７のいずれか一つの動作をコンピュータによって実行することができるという効果を奏する。
【図面の簡単な説明】
【図１】実施の形態１にかかる複合機の構成を示すブロック図である。
【図２】実施の形態１の複合機のハードウェア構成図である。
【図３】実施の形態１にかかる複合機で行われるプロセス監視方法において、監視対象プロセスの実行状況、プロセス監視アプリの動作状況および共有メモリの状態を示す模式図である。
【図４】実施の形態１の複合機におけるプロセス監視アプリによるプロセス監視処理の手順を示すフローチャートである。
【図５】実施の形態１の複合機において、コピーアプリ、ＭＣＳの各プロセスにおけるタグ関数ｔａｇ＿ｉｎおよびｔａｇ＿ｏｕｔで実行される処理手順を示すフローチャートである。
【図６】実施の形態２の複合機におけるプロセス監視アプリの構成図である。
【図７】実施の形態２の複合機におけるプロセス監視アプリによるタグ関数の付加およびプロセス監視の処理手順を示すフローチャートである。
【図８】実施の形態３のデバッグシステムにおいて、ソフトウェア機能を識別するタグ関数を挿入するサンプルプログラムを示した説明図である。
【図９】実施の形態３のデバッグシステムにおいて、並列実行されるマルチスレッドのＣソースプログラムの動作シーケンスを示した説明図である。
【図１０】実施の形態３にかかるデバッグ方法で使用するデバッグシステムの構成およびかかるデバッグシステムによる並列プロセスの監視手順を示した説明図である。
【符号の説明】
１００  複合機
１０１  白黒ラインプリンタ
１０２  カラーラインプリンタ
１０３  ハードウェアリソース
１１０  ソフトウェア群
１１１  プリンタアプリ
１１２  コピーアプリ
１１３  ファックスアプリ
１１４  スキャナアプリ
１１５  ネットファイルアプリ
１１６  工程検査アプリ
１１７  プロセス監視アプリ
１２０  プラットホーム
１２１  汎用ＯＳ
１２２  ＳＣＳ
１２３  ＳＲＭ
１２４  ＥＣＳ
１２５  ＭＣＳ
１２６  ＯＣＳ
１２７  ＦＣＳ
１２８  ＮＣＳ
１３０  アプリケーション
２００  コントローラボード
２０１  ＡＳＩＣ
２０２  ＣＰＵ
２０３  ＳＤＲＡＭ（ＲＡＭ）
２０４  フラッシュメモリ（ＲＯＭ）
２０５  ＨＤ
２０８  ＳＲＡＭ
２１０  オペレーションパネル
２３０  ＵＳＢ
２４０  ＩＥＥＥ１３９４
２５０  プリンタ
３００  共有メモリ
３０１  ロギング管理テーブル
３０２  現在位置テーブル
３０３  ロギング出力ＦＩＦＯキュー
３０４  監視情報設定部
３０５  ロギング情報取得部
３０６  タグ関数付加部
３２０  リモートＰＣ
３３０  ネットワーク
１００６  タグＩＤ辞書ファイル
１００７  ロギング設定ファイル
１００８  プロセス
１００９〜１０１６  タグ関数
１０１７  プロセス・プロファイル
１０１８  タグ付け自動装置
１０１９  タグ付けツール
１０２０  ロギング設定ツール
１０２１  実行ファイル
【図１】
0004037079.tif 000002
【図２】
0004037079.tif 000003
【図３】
0004037079.tif 000004
【図４】
0004037079.tif 000005
【図５】
0004037079.tif 000006
【図６】
0004037079.tif 000007
【図７】
0004037079.tif 000008
【図８】
0004037079.tif 000009
【図９】
0004037079.tif 000010
【図１０】
0004037079.tif 000011