JP4080739B2 - Application generating method for image forming apparatus and program causing computer to execute the method - Google Patents

Application generating method for image forming apparatus and program causing computer to execute the method Download PDF

Info

Publication number
JP4080739B2
JP4080739B2 JP2001388320A JP2001388320A JP4080739B2 JP 4080739 B2 JP4080739 B2 JP 4080739B2 JP 2001388320 A JP2001388320 A JP 2001388320A JP 2001388320 A JP2001388320 A JP 2001388320A JP 4080739 B2 JP4080739 B2 JP 4080739B2
Authority
JP
Japan
Prior art keywords
function
application
service
verification
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001388320A
Other languages
Japanese (ja)
Other versions
JP2003186700A (en
Inventor
光男 安藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2001388320A priority Critical patent/JP4080739B2/en
Publication of JP2003186700A publication Critical patent/JP2003186700A/en
Application granted granted Critical
Publication of JP4080739B2 publication Critical patent/JP4080739B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Accessory Devices And Overall Control Thereof (AREA)
  • Debugging And Monitoring (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、コピー、プリンタ、スキャナおよびファクシミリなどの画像形成処理にかかるユーザサービスを提供する画像形成装置に搭載するアプリケーションをデバッグ作業の検証のために生成する画像形成装置用アプリケーション生成方法およびその方法をコンピュータに実行させるプログラムに関するものである。
【0002】
【従来の技術】
近年、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を1つの筐体内に収納した画像形成装置(以下、「複合機」という。)が一般的に知られている。この複合機は、1つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応する3種類のソフトウェアを設け、ソフトウェアの切り替えによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【0003】
このような複合機では、画像データを生成して出力するため、メモリに対するアクセスが頻繁に生じてくる。このため、各ソフトウェアの開発段階において、メモリに対するアクセスが正常に行われているか否かを検証することが重要となる。
【0004】
このようなメモリアクセスの検証を行う従来の方法としては、アプリケーションプログラムのソースファイルにおいて、プログラムがメモリに対して読み込み、書き込み、割り当て関数などの操作を行う箇所に、メモリアクセスを検証するための検証コード(タグ付け)を埋め込み、メモリアクセスが正常であるか否かを判断する方法が一般的に知られている。
【0005】
【発明が解決しようとする課題】
しかしながら、このようなメモリアクセスの検証方法では、すべてのコンポーネントのソースコードが開示されている場合には、メモリアクセスを行うすべての箇所に検証コードを埋め込むことによりメモリアクセスが正常か否かを検証することができるが、一部のコンポーネントのソースコードが開示されていない場合には、非公開のコンポーネント内部で生じたメモリアクセスの障害を検証することができず、正確なデバッグ作業を行うことができないという問題がある。
【0006】
例えば、あるソースコードが公開されているコンポーネントからC言語標準ライブラリとして文字列操作や入出力の標準関数のオブジェクトファイルだけが提供され、各関数のソースコードが公開されていない場合には、かかる標準関数の内部で行われるメモリアクセスについては検証することができない。
【0007】
また、関数ライブラリとして提供されるすべてのコンポーネントのソースコードが公開されている場合でも、特定の関数ライブラリだけを除外したメモリアクセスの検証を行うと、除外した関数の内部でメモリアクセスエラーが生じている場合には、正確なデバッグ作業を行うことができない。
【0008】
ここで、従来の複合機の場合、プリンタ、コピー、ファクシミリ、スキャナなどのアプリケーションプログラムはすべて複合機の生産者側で開発しており、サードベンダーなどの第三者が新規なアプリケーションを開発することは想定していないため、すべてのコンポーネントのソースコードは開発者に公開されている。また、従来の複合機では、プリンタ、コピー、ファクシミリ、スキャナなどの各機能単位でプロセスとして動作するアプリケーションプログラムを開発しているため、C言語標準ライブラリの標準関数などソースコードが公開されていないコンポーネントを利用する場合でも、メモリに対するアクセスが複雑になることはなく、デバッグ作業に支障をきたすことは少ない。
【0009】
ところで、このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置(複合機)を発明した。
【0010】
この複合機によれば、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることが可能となる。
【0011】
このような新規な複合機では、アプリケーションのプロセスが機能ごとに複数存在するばかりか、アプリケーションの少なくとも2つが共通的に必要とするサービスを提供するコントロールサービスのプロセスが存在し、複合機内部には、従来の複合機に比べて非常に多くのプロセスが互いにプロセス間通信を行いながら並列実行されている。また、各プロセス内部には、複数のスレッドが起動されており、スレッドレベルでの並列実行を実現しながら他のプロセスとプロセス間通信を行ってユーザサービスの機能を実現している。すなわち、出願人が発明をした新規な複合機は、多数のプロセスやスレッドが複雑に絡み合って協働することによりコピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するという特徴的な構成となっている。
【0012】
このため、複合機の動作をより正確に検証するために、プロセス単位でデバッグ作業を行うよりも、多数のプロセスを協調動作させた状態でデバッグ作業を行う必要がある。このような複合機では多数のプロセスが動作しているため、複数のプロセスで共通にアクセス可能な共有メモリを用い、かかる共有メモリに対して多数のプロセスからアクセスを行っている。従って、従来の複合機におけるデバッグ作業とは異なり、多数のプロセスからの共有メモリへのアクセスを検証する必要性が生じてくる。このため、一部のソースコードが公開されていない関数などを利用する場合、当該関数内部でメモリアクセスエラーが生じた場合には、他のプロセスへの影響が大きく、従来の複合機に比べて正確なデバッグ作業を行うことができないという問題がある。
【0013】
しかも、このような新規な複合機では、アプリケーションとコントロールサービスとを別個に設けているため、複合機の出荷後にユーザもしくは第三者であるサードベンダーが新規なアプリケーションを開発して複合機に搭載することを想定した構成となっている。このため、新規に開発したアプリケーションがコントロールサービスに提供される関数ライブラリを使用して関数呼び出しを行う場合に、関数の実行に伴ってメモリアクセスが正常に行われているか否かを検証することが必要となってくる。
【0014】
しかしながら、コントロールサービスはハードウェア資源に近い層のモジュールであることから各コントロールサービスの処理手順を第三者に公開することは好ましくないため、コントロールサービスのソースプログラムを第三者に公開しない場合が多い。このため、新規アプリケーションの開発者は、自己の開発するアプリケーションのソースプログラムにメモリアクセスの検証コードを埋め込むことはできても、コントロールサービスのソースプログラムに検証コードを埋め込むことができず、この結果、メモリアクセス状態に矛盾が生じてしまい、新規アプリケーション開発においてメモリアクセスの検証を正確に行うことができないという、従来の複合機開発では問題にならなかった新規な課題が生じている。
【0015】
この発明は上記に鑑みてなされたもので、多数のプロセスが動作する画像形成装置で動作するアプリケーションの開発において、メモリアクセスを正確に検証することができる画像形成装置用アプリケーション生成方法およびその方法をコンピュータに実行させるプログラムを得ることを目的とする。
【0016】
【課題を解決するための手段】
上記目的を達成するため、請求項1にかかる発明は、印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションと、前記アプリケーションから呼び出され前記ハードウェア資源の制御を行うサービス関数として定義される制御部とを記憶する記憶部と、プロセッサと、前記プロセッサが前記記憶部から前記アプリケーションと前記制御部とを読み出して、読み出した前記アプリケーションと前記制御部とをそれぞれプロセスとして実行し、前記アプリケーションのプロセスは、前記制御部に対して前記サービス関数の呼び出しを行って前記制御部から前記サービス関数の戻り値の受信を行うことにより前記制御部のプロセスとプロセス間通信を行う画像形成装置前記アプリケーションを検証用に生成する画像形成装置用アプリケーション生成装置で実行される画像形成装置用アプリケーション生成方法であって、前記画像形成装置用アプリケーション生成装置は、前記サービス関数の呼び出しの記述を含む前記アプリケーションのアプリソースファイルと、前記サービス関数の呼び出し処理と前記サービス関数の呼び出しの際の引数と戻り値に使用されるメモリ領域の状態遷移の正当性を検証する検証処理とを実行するサービス検証関数の前記呼び出し処理と前記検証処理と戻り値を返す復帰処理が記述された検証関数ソースファイルと、前記サービス関数のオブジェクト形式のファイルを登録したサービス関数ライブラリとを記憶する第2記憶部、を備え、関数処理手段が、前記第2記憶部に記憶された前記ソースファイルを読み出して、読み出した前記アプリソースファイルの前記サービス関数の呼び出しの記述を、前記サービス検証関数の呼び出しの記述に置換する関数処理ステップと、コード生成手段が、前記第2記憶部に記憶された前記検証関数ソースファイルを読み出して、前記関数処理ステップによって前記サービス検証関数の呼び出しの記述に置換された前記アプリソースファイルに読み出した前記検証関数ソースファイルを連結してコンパイルし、コンパイルにより生成されたオブジェクトファイルと前記第2の記憶部に記憶された前記サービス関数ライブラリとをリンクすることにより実行形式の前記アプリケーションを生成するコード生成ステップと、を含んだことを特徴とする。
【0017】
この請求項1にかかる発明によれば、関数処理ステップによって、第2記憶部に記憶された前記ソースファイルを読み出して、読み出した前記アプリソースファイルの前記サービス関数の呼び出しの記述を、前記サービス検証関数の呼び出しの記述に置換する関数処理ステップと、コード生成ステップによって、前記第2記憶部に記憶された前記検証関数ソースファイルを読み出して、前記関数処理ステップによって前記サービス検証関数の呼び出しの記述に置換された前記アプリソースファイルに読み出した前記検証関数ソースファイルを連結してコンパイルし、コンパイルにより生成されたオブジェクトファイルと前記第2の記憶部に記憶された前記サービス関数ライブラリとをリンクすることにより実行形式の前記アプリケーションを生成することで、サービス関数のソースコードが公開されていない場合でも、サービス関数の機能を把握していれば、アプリケーションの実行時にサービス検証関数によってメモリアクセスによるメモリ状態を検証することができ、一部のソースコードが不明な場合でも正確なデバッグ作業を行うことができる。
また、この請求項1にかかる発明によれば、サービス検証関数によってサービス関数の呼び出しの際の引数と戻り値に使用されるメモリ領域の状態遷移の正当性を検証する検証処理とを実行することで、生成されたアプリケーションの実行時にメモリ確保アクセスが正当か否かをメモリ状態遷移によって把握することができるので、メモリ確保アクセスによる障害を正確に検知することができ、より正確なデバッグ作業を行うことができる。
【0018】
また、請求項2にかかる発明は、入力手段が、検証対象の前記サービス関数の呼び出しの記述が指定された設定情報の入力を受け付ける入力ステップをさらに含み、
前記関数処理ステップは、前記アプリソースファイル前記サービス関数の呼び出しの記述の中から、前記設定情報に指定されたサービス関数の呼び出しの記述を、前記サービス検証関数の呼び出しの記述に置換することを特徴とする。
【0019】
この請求項2にかかる発明によれば、入力ステップによって、検証対象の前記サービス関数の呼び出しの記述が指定された設定情報の入力を受け付け、関数処理ステップによって、アプリソースファイル前記サービス関数の呼び出しの記述の中から、前記設定情報に指定されたサービス関数の呼び出しの記述を、前記サービス検証関数の呼び出しの記述に置換することで、一部の関数のみにおけるメモリアクセスの検証を行うことができ、デバッグ作業を効率的に行うことができる。
【0022】
また、請求項にかかる発明は、前記サービス検証関数は、前記メモリ領域に対する書き込みによる前記状態遷移を検証することを特徴とする。
【0023】
この請求項にかかる発明によれば、サービス検証関数によってサービス検証関数は、前記メモリ領域に対する書き込みによる前記状態遷移を検証することで、生成されたアプリケーションの実行時にメモリ書き込みアクセスが正当か否かをメモリ状態遷移によって把握することができるので、メモリ書き込みアクセスによる障害を正確に検知することができ、より正確なデバッグ作業を行うことができる。
【0024】
また、請求項にかかる発明は、前記サービス検証関数は、前記メモリ領域に対する読み込みによる前記状態遷移を検証することを特徴とすることを特徴とする。
【0025】
この請求項にかかる発明によれば、サービス検証関数によって前記メモリ領域に対する読み込みによる前記状態遷移を検証することで、生成されたアプリケーションの実行時にメモリ読み込みアクセスが正当か否かをメモリ状態遷移によって把握することができるので、メモリ読み込みアクセスによる障害を正確に検知することができ、より正確なデバッグ作業を行うことができる。
【0026】
また、請求項にかかる発明は、前記サービス検証関数は、前記メモリ領域の開放による前記状態遷移を検証することを特徴とすることを特徴とする。
【0027】
この請求項にかかる発明によれば、サービス検証関数によって前記メモリ領域の開放による前記状態遷移を検証することを特徴とすることで、生成されたアプリケーションの実行時にメモリ開放アクセスが正当か否かをメモリ状態遷移によって把握することができるので、メモリ開放アクセスによる障害を正確に検知することができ、より正確なデバッグ作業を行うことができる。
【0028】
また、請求項にかかる発明は、前記アプリソースファイルには、さらに、プログラミング言語で予め提供される汎用的な関数である標準関数の呼び出しが記述され、前記第2記憶部は、さらに、前記標準関数の呼び出し処理と前記標準関数の呼び出しの際の引数と戻り値に使用されるメモリ領域の状態遷移の正当性を検証する検証処理と戻り値を返す復帰処理を実行する標準検証関数の前記呼び出し処理と前記検証処理と前記復帰処理とが記述された標準検証関数ソースファイルと、前記標準関数のオブジェクト形式のファイルを登録した標準関数ライブラリとを記憶し、前記関数処理ステップは、さらに前記アプリソースファイルの前記標準関数の呼び出しの記述を、前記標準検証関数の呼び出しの記述に置換し、前記コード生成ステップは、さらに、前記第2記憶部に記憶された前記標準関数ソースファイルを読み出して、前記関数処理ステップによって前記標準検証関数の呼び出しの記述に置換された前記アプリソースファイルに読み出した前記検証関数ソースファイルを連結してコンパイルし、コンパイルにより生成されたオブジェクトファイルと前記第2の記憶部に記憶された前記標準関数ライブラリとをリンクすることにより実行形式の前記アプリケーションを生成することを特徴とする。
【0029】
この請求項にかかる発明によれば、関数処理ステップによって、さらに、前記アプリソースファイルの前記標準関数の呼び出しの記述を、前記標準検証関数の呼び出しの記述に置換し、前記コード生成ステップは、さらに、前記第2記憶部に記憶された前記標準関数ソースファイルを読み出して、前記関数処理ステップによって前記標準検証関数の呼び出しの記述に置換された前記アプリソースファイルに読み出した前記検証関数ソースファイルを連結してコンパイルし、コンパイルにより生成されたオブジェクトファイルと前記第2の記憶部に記憶された前記標準関数ライブラリとをリンクすることにより実行形式の前記アプリケーションを生成することで、サービス関数だけでなく、ソースコードが公開されない標準関数からメモリアクセスを行う場合でも、標準関数の機能を把握していれば、アプリケーションの実行時に標準検証関数によってメモリアクセスによるメモリ状態を検証することができ、標準関数のライブラリのみが提供されている場合でも正確なデバッグ作業を行うことができる。
【0030】
また、請求項にかかる発明は、前記第2記憶部は、さらに、前記サービス関数の呼び出しの際の引数と前記メモリ領域に対するアクセス方法とを対応付けた関数テーブルを記憶し、検証関数コード生成手段が、前記第2記憶部から前記関数テーブルを参照して、前記アプリソースファイルの前記サービス関数の呼び出しの記述に対応する前記アクセス方法に基づいて、前記サービス検証関数ソースファイルを生成し、前記第2記憶部に保存する検証関数コード生成ステップさらに含んだことを特徴とする。
【0031】
この請求項にかかる発明によれば、検証関数コード生成ステップによって、第2記憶部から前記関数テーブルを参照して、前記アプリソースファイルの前記サービス関数の呼び出しの記述に対応する前記アクセス方法に基づいて、前記サービス検証関数ソースファイルを生成し、前記第2記憶部に保存することで、サービス関数のソースコードが公開されていない場合でも、サービス検証関数ソースファイルをデバッグ作業者自ら作成する必要がない。このため、アプリケーションの実行時に、ソースファイルが自動生成されたサービス検証関数によってメモリアクセスによるメモリ状態を検証することができ、一部のソースコードが不明な場合でも正確なデバッグ作業を効率的に行うことができる。
【0034】
また、請求項にかかる発明は、前記検証関数コード生成ステップは、前記サービス関数の処理内容に基づいて、前記メモリ領域に対する書き込みによる前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成することを特徴とすることを特徴とする。
【0035】
この請求項にかかる発明によれば、検証関数コード生成ステップによって、前記サービス関数の処理内容に基づいて、前記メモリ領域に対する書き込みによる前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成することで、アプリケーションの実行時に、ソースファイルが自動生成されたメモリ書き込みアクセスを検証するサービス検証関数によって、メモリ書き込みアクセスが正当か否かをメモリ状態遷移によって把握することができるので、メモリ書き込みアクセスによる障害を正確に検知することができ、より正確なデバッグ作業を効率的に行うことができる。
【0036】
また、請求項にかかる発明は、前記検証関数コード生成ステップは、前記サービス関数の処理内容に基づいて、前記メモリ領域に対する読み込みによる前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成することを特徴とする。
【0037】
この請求項にかかる発明によれば、検証関数コード生成ステップによって、前記サービス関数の処理内容に基づいて、前記メモリ領域に対する読み込みによる前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成することで、アプリケーションの実行時に、ソースファイルが自動生成されたメモリ読み込みアクセスを検証するサービス検証関数によって、メモリ読み込みアクセスが正当か否かをメモリ状態遷移によって把握することができるので、メモリ読み込みアクセスによる障害を正確に検知することができ、より正確なデバッグ作業を効率的に行うことができる。
【0038】
また、請求項10にかかる発明は、前記検証関数コード生成ステップは、前記サービス関数の処理内容に基づいて、前記メモリ領域の開放による前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成する。
【0039】
この請求項10にかかる発明によれば、検証関数コード生成ステップによって、前記サービス関数の処理内容に基づいて、前記メモリ領域の開放による前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成することで、アプリケーションの実行時に、ソースファイルが自動生成されたメモリ開放アクセスを検証するサービス検証関数によって、メモリ開放アクセスが正当か否かをメモリ状態遷移によって把握することができるので、メモリ開放アクセスによる障害を正確に検知することができ、より正確なデバッグ作業を効率的に行うことができる。
【0042】
また、請求項11にかかる発明は、請求項1〜10のいずれか一つに記載された方法をコンピュータに実行させるプログラムであるので、請求項1〜10のいずれか一つの動作をコンピュータによって実行することができる。
【0043】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる画像形成装置用アプリケーション生成方法およびその方法をコンピュータに実行させるプログラムの好適な実施の形態を詳細に説明する。
【0044】
(実施の形態1)
図1は、この発明の実施の形態1であるデバッグ装置100のソフトウェア構成を示すブロック図である。実施の形態1にかかるデバッグ装置100は、画像形成装置(以下、「複合機」という。)で動作する新規アプリケーションをデバッグ用に生成し、その新規アプリケーションを複合機に搭載して起動させ、ネットワーク経由でアプリケーションからのメモリアクセスを検証するものである。実施の形態1にかかるデバッグ装置100は、図1に示すように、デバッグ機能付きコンパイラ110と、リンカ120とから構成される。
【0045】
デバッグ機能付きコンパイラ110は、ハードディスク(HD)130に格納されたアプリケーションのソースコードが記述されたソースファイル131を、コマンドの指定に従って、検証コード(以下、「タグ」という。)や後述するオーバロードタグ関数処理を行って、アプリケーションのオブジェクトコードからなるオブジェクトファイルを生成するものである。デバッグ機能付きコンパイラ110は、図1に示すように、さらにコマンド解析部111と、構文解析部112と、オーバロードタグ関数処理部113と、タグ付加部114と、コード生成部115とから構成される。ここで、オーバロードタグ関数は、本発明におけるサービス検証関数および標準検証関数を構成する。
【0046】
HD(ハードディスク)130には、アプリケーションのC言語ソースコードが記述されたソースファイル131と、後述するオーバロードタグ関数が指定されたXML(eXtended Markup Language)形式のオーバロードタグ関数設定ファイル133と、C言語ソースコードでオーバロードタグ関数宣言が記述されたオーバロードタグ関数インクルードファイル134と、C言語ソースコードでオーバロードタグ関数の処理が記述されたオーバロードタグ関数ソースファイル135が格納されている。また、HD130には、デバッグ機能付きコンパイラ110によって一時的に、サービス関数および標準関数をオーバロードタグ関数に置換された中間ソースファイル138、およびソースファイル131または中間ソースファイル138から生成されたオブジェクトファイル139が生成され、さらにリンカ120によってアプリケーションのデバッグ用実行形式ファイル132が生成される。
【0047】
オーバロードタグ関数設定ファイル133は、本発明における設定情報を構成するものであり、ユーザによって作成される。このオーバロードタグ関数設定ファイル133には、オーバロードタグ関数に置換する関数の指定、オーバロードタグ関数インクルードファイル名およびオーバロードタグ関数ソースファイル名の指定、オーバロードタグ関数インクルードファイル134とオーバロードタグ関数ソースファイル135の格納先ディレクトリの指定がされる。
【0048】
デバッグ機能付きコンパイラ110のコマンド解析部111は、ユーザからキーボードなどの入力装置によって入力されたコマンドのパラメータや構文の解析を行って、入力されたコマンドが文法的に正確か否かを判断するものである。
【0049】
構文解析部112は、HD130に格納されたアプリケーションのソースファイル131を入力して、ソースファイル131に記述されたC言語ソースコードを、C言語文法に従って解析し、導出木や構文木などを生成するものであり、通常のコンパイラにおける構文解析と同様の処理を行う。
【0050】
オーバロードタグ関数処理部113は、ソースファイル131に記述された関数の中からオーバロードタグ関数設定ファイル133にデバッグ対象として設定されているコントロールサービスの関数やC言語標準関数を、対応するオーバロードタグ関数に置換した中間ソースファイル138を生成するものである。タグ付加部114は、ソースファイル131に記述された関数の入口と出口にメモリアクセス検証コードであるタグを付加した中間ソースファイル138を生成するものである。
【0051】
コード生成部115は、オーバロードタグ関数設定ファイル133によるオーバロードタグ関数指定がある場合には、タグ付加部114によってタグを付加されたアプリケーションの中間ソースファイル138を、オブジェクトコードからなるアプリケーションのオブジェクトファイル139を生成する。さらに、コード生成部115は、オーバロードタグ関数処理部113によってサービス関数および標準関数をオーバロードタグ関数に置換した中間ソースファイル138と、オーバロードタグ関数インクルードファイル134と、オーバロードタグ関数ソースファイル135と、一ファイルに結合して、オブジェクトコードからなるアプリケーションのオブジェクトファイル139を生成する。
【0052】
リンカ120は、コード生成部115によって生成されたオブジェクトファイル139と、HD130に格納されているコントロールサービス関数ライブラリ136および標準関数ライブラリ137とをリンク(結合)して、複合機およびコンピュータのOS上で実行可能なアプリケーションのデバッグ用実行形式ファイル132を生成するものである。
【0053】
図2は、実施の形態1にかかるデバッグ装置100のハードウェア構成を示すブロック図である。図2に示すように、このデバッグ装置100は、CPUなどの制御装置203と、RAM(Random Access Memory)205と、HD130と、ディスプレイ装置などの表示装置202と、キーボードやマウスなどの入力装置201と、LANボードやモデムなどの通信装置204とを備えており、PC(Personal Computer)、ワークステーションなどのコンピュータを利用した通常の構成である。このデバッグ装置100は、LAN206などのネットワークによって画像形成装置(以下、「複合機」という。)300と接続されており、デバッグ装置100からネットワーク上の複合機300のデバッグを行うようになっている。
【0054】
上記デバッグ機能付きコンパイラ110の各部およびリンカ120は、このデバッグ用アプリケーション生成プログラムを実行したときに、RAM205上に生成されて実行される。このデバッグ用アプリケーション生成プログラムは、ソフトウェア開発キット(SDK:Software Development Kit)などの開発用ツールキットの一部または全部として、CD−ROMまたはFDなどの記憶媒体に実行可能な形式またはインストール可能な形式のファイルで提供される。また、このような実行可能な形式またはインストール可能な形式のファイルを、ネットワーク経由で取得可能な方法で提供するようにしても良い。
【0055】
次に、デバッグ対象である複合機300について説明する。図3は、複合機300の機能的構成を示すブロック図である。図3に示すように、複合機300は、白黒ラインプリンタ(B&W LP)301と、カラーラインプリンタ(Color LP)302と、スキャナ、ファクシミリ、ハードディスク(HD)、メモリ、ネットワークインタフェースなどのハードウェアリソース303を有するとともに、プラットホーム320とアプリケーション330とから構成されるソフトウェア群310とを備えている。
【0056】
プラットホーム320は、アプリケーション330からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)323と、汎用OS321とを備えている。
【0057】
コントロールサービスは、複数のサービスモジュールから形成され、SCS(システムコントロールサービス)322と、ECS(エンジンコントロールサービス)324と、MCS(メモリコントロールサービス)325と、OCS(オペレーションパネルコントロールサービス)326と、FCS(ファックスコントロールサービス)327と、NCS(ネットワークコントロールサービス)328とから構成される。なお、このプラットホーム320は、あらかじめ定義された関数により前記アプリケーション330から処理要求を受信可能とするアプリケーションプログラミングインタフェース(API)を有する。
【0058】
汎用OS321は、UNIX(登録商標)などの汎用オペレーティングシステムであり、プラットホーム320並びにアプリケーション330の各ソフトウェアをそれぞれプロセスとして並列実行する。
【0059】
SRM323のプロセスは、SCS322とともにシステムの制御およびリソースの管理を行うものである。SRM323のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F、IEEE1394 I/F、RS232C I/Fなど)のハードウェア資源を利用する上位層からの要求に従って調停を行い、実行制御する。
【0060】
具体的には、このSRM323は、要求されたハードウェア資源が利用可能であるか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、SRM323は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容(例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施している。
【0061】
SCS322のプロセスは、アプリ管理、操作部制御、システム画面表示、LED表示、リソース管理、割り込みアプリ制御などを行う。
【0062】
ECS324のプロセスは、白黒ラインプリンタ(B&W LP)301、カラーラインプリンタ(Color LP)302、スキャナ、ファクシミリなどからなるハードウェアリソース303のエンジンの制御を行う。
【0063】
MCS325のプロセスは、画像メモリの取得および解放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などを行う。
【0064】
FCS327のプロセスは、システムコントローラの各アプリ層からPSTN/ISDN網を利用したファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのAPIを提供する。
【0065】
NCS328のプロセスは、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。具体的には、ftpd、httpd、lpd、snmpd、telnetd、smtpdなどのサーバデーモンや、同プロトコルのクライアント機能などを有している。
【0066】
OCS326は、オペレータ(ユーザ)と本体制御間の情報伝達手段となるオペレーションパネル(操作パネル)の制御を行う。OCS326は、オペレーションパネルからキー押下をキーイベントとして取得し、取得したキーに対応したキーイベント関数をSCS322に送信するOCSプロセスの部分と、アプリケーション330またはコントロールサービスからの要求によりオペレーションパネルに各種画面を描画出力する描画関数やその他オペレーションパネルに対する制御を行う関数などがあらかじめ登録されたOCSライブラリの部分とから構成される。このOCSライブラリは、アプリケーション330およびコントロールサービスの各モジュールにリンクされて実装されている。なお、OCS326のすべてをプロセスとして動作させるように構成しても良く、あるいはOCS326のすべてをOCSライブラリとして構成しても良い。
【0067】
アプリケーション330は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ311と、コピー用アプリケーションであるコピーアプリ312と、ファクシミリ用アプリケーションであるファックスアプリ313と、スキャナ用アプリケーションであるスキャナアプリ314と、ネットワークファイル用アプリケーションであるネットファイルアプリ315と、工程検査用アプリケーションである工程検査アプリ316とを有している。これらのアプリケーション330はいずれも複合機300の起動時に初期化部(図示せず)によりプロセスとして生成され、動作する。
【0068】
アプリケーション330の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【0069】
このように、実施の形態1にかかる複合機300には、複数のアプリケーション330および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一または複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション330に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。
【0070】
そして、複合機300には、サードベンダーなどの第三者がコントロールサービス層の上のアプリケーション層に新規なアプリケーション(新規アプリ317)を開発して搭載することが可能となっている。実施の形態1にかかるデバッグ装置100は、この新規アプリ317の開発段階で、メモリアクセスを検証するためにデバッグ作業を行うようになっている。
【0071】
図4は、新規アプリ317とコントロールサービスの関数呼び出しの関係を示すブロック図である。すなわち、新規アプリ317のプロセスからコントロールサービスのプロセス(図4ではECS324)に対してAPI(アプリケーションプログラミングインタフェース)を利用してコントロールサービスで提供される関数の呼び出し(図4ではecs_func関数)によるプロセス間通信を行った場合に、コントロールサービス側で呼び出された関数が実行される。
【0072】
このとき、この関数実行に伴ってメモリに対する領域確保、メモリに対するリード/ライト、あるいはメモリの領域解放が行われた場合に、かかるメモリアクセスによるメモリ領域の状態遷移が正常か否かを判断するようになっている。このような場合、オーバロードタグ関数を使用せずに、メモリアクセス検証コードであるタグを新規アプリ317およびコントロールサービスのメモリアクセスを行う箇所に付加すればメモリアクセスの検証を行うことも可能である。しかしながら、実施の形態1にかかる複合機300では、コントロールサービスが提供する関数は関数ライブラリというオブジェクトコードでのみ提供し、提供する各関数のソースコードは第三者に公開していないため、タグ付けによりメモリアクセスの検証を行えず、このためオーバロードタグ関数を用いたメモリアクセスの検証を行っている。
【0073】
次に、以上のように構成された実施の形態1にかかるデバッグ装置100およびデバッグ用アプリケーション生成プログラムによるデバッグ用新規アプリの生成およびメモリアクセス検証方法について説明する。図5は、デバッグ用新規アプリの生成処理において、使用および生成されるファイルと、デバッグ用新規アプリの全体の流れを示した説明図である。
【0074】
新規アプリのデバッグ作業を行うユーザは、デバッグ用新規アプリの実行形式ファイルを生成するために、デバッグ装置100のキーボードなどの入力装置201から、コマンドプロンプト%で次のコマンドを入力する。
【0075】
% dbgcc ソースファイル名 −o 実行形式ファイル名
ここで、「dbgcc」は、デバッグ機能付きコンパイラおよびリンカの起動の指定を、「ソースファイル名」は新規アプリのソースファイル名を、「−o 実行形式ファイル名」は新規アプリの実行形式ファイル名を示す。また、かかるコマンドの実行時に、環境変数OVR_XMLに何も設定されていない場合には、新規アプリのソースファイルの中の関数の入口および出口にメモリアクセス検証コードであるタグを付加する処理が行われて、実行形式ファイルが生成される。
【0076】
一方、環境変数OVR_XMLにオーバロードタグ関数設定ファイル名が設定されている場合には、オーバロードタグ関数を利用したメモリアクセス検証が可能な実行形式ファイルが生成されるようになっている。例えば、図5の例では、次のような環境変数の設定およびコマンド入力することにより、オーバロードタグ関数を利用した新規アプリの実行形式ファイルの生成処理が開始される。
【0077】
環境変数OVR_XML=”newappl.xml”
% dbgcc newappl.c −o newappl.exe
【0078】
図5の例では、新規アプリ317がコントロールサービスとしてECS124のプロセスとプロセス間通信を行う場合において、ECS324で提供される関数ecs_jobmode()を呼び出し、ecs_jobmode()の中で行われるメモリアクセスのメモリ状態を検証するとともに、標準関数strcpy()の中で行われるメモリアクセスのメモリ状態を検証するデバッグ用新規アプリを生成するものである。ここで、ecs_jobmode()が登録されているECS関数ライブラリ136(ecs.lib)とstrcpy()が登録されている標準関数ライブラリ137(standard.lib)はいずれもオブジェクトファイルとしてユーザに提供されており、従って、ecs_jobmode()とstrcpy()のソースコードは公開されておらず、かかる関数のソースコードにタグ付けを行うことは不可能である。このため、図5の例では、オーバロードタグ関数を利用することでメモリアクセス検証を可能としている。
【0079】
オーバロードタグ関数設定ファイル133(newappl.xml)には、オーバロードタグ関数インクルードファイル134(ecs_ovrlfunc.h)およびオーバロードタグ関数ソースファイル135(ecs_ovrlfunc.c)の指定と、オーバロードタグ関数に置換する関数ecs_jobmodeおよびstrcpyの指定がなされている。
【0080】
図6は、図5の例におけるオーバロードタグ関数設定ファイル133の内容を示す説明図である。このオーバロードタグ関数設定ファイル133はデバッグ作業の開始前にユーザによって作成される。
【0081】
図5に示すように、タグ<dbgcc>の属性「path」にはオーバロードタグ関数インクルードファイル134とオーバロードタグ関数ソースファイル135のディレクリトリパスを指定する。また、タグ<incfile>の属性「source」にはオーバロードタグ関数ソースファイル135のファイル名(ecs_ovrlfunc.c)を、属性「include」にはオーバロードタグ関数インクルードファイル134のファイル名(ecs_ovrlfunc.h)を指定する。タグ<func>には、オーバロードタグ関数に置換する対象となる関数名、すなわち、メモリアクセス検証を行う関数名を指定する。図5および図6の例では、「ecs_jobmode」と「strcpy」をタグ<func>にそれぞれ指定する。
【0082】
図7は、デバッグ用新規アプリの生成処理の手順を示すフローチャートである。なお、以下、図5の各ファイルを例にあげて説明する。ユーザが環境変数OVR_XMLにオーバロードタグ関数設定ファイル133(newappl.xml)を設定して、コマンドdbgccを引数に新規アプリソースファイル(newappl.c)を指定して起動すると、まずデバッグ機能付きコンパイラ110が起動し、コマンド解析部111によって入力されたコマンドの解析を行う(ステップS701)。具体的にはパラメータや構文の解析を行って、入力されたコマンドが文法的に正確か否かを判断する。
【0083】
次に、構文解析部112によって、新規アプリのソースファイル131(newappl.c)を読み込み(ステップS702)、ソースファイル131に記述されたC言語ソースコードの構文解析を行う(ステップS703)。具体的には、構文解析部112は、C言語ソースコードをC言語文法に従って解析し、導出木や構文木などを生成する。
【0084】
そして、コマンド解析部111によって、環境変数OVR_XMLの設定内容を調べる(ステップS704)。そして、環境変数OVR_XMLに何も設定されていない場合には、オーバロードタグ関数の処理は行わず、ソースファイル131の関数の入口と出口にメモリアクセス検証コードとしてタグを付加し(ステップS706)、タグ付けされたソースファイル131から新規アプリのオブジェクトコードを生成し、オブジェクトファイル139としてHD130に格納する(ステップS707)。
【0085】
一方、ステップS704において、環境変数OVR_XMLにオーバロードタグ関数設定ファイル133のファイル名(newappl.xml)が設定されている場合には、オーバロードタグ関数処理部113によるオーバロードタグ関数処理とコード生成部115によるコード生成処理を行って、新規アプリのオブジェクトコードを生成し、オブジェクトファイル139としてHD130に格納する(ステップS705)。
【0086】
そして、生成された新規アプリ317のオブジェクトコードで記述されたオブジェクトファイル139と、ECS関数ライブラリ136と、標準関数ライブラリ137とをリンクして、デバッグ用新規アプリ317の実行形式ファイル132を生成する(ステップS708)。
【0087】
次に、上述のステップS705で行われるオーバロードタグ関数処理およびコード生成処理について説明する。図8は、オーバロードタグ関数処理およびコード生成処理の手順を示すフローチャートである。
【0088】
まず、オーバロードタグ関数処理部113によって、環境変数OVR_XMLに設定されたオーバロードタグ関数設定ファイル133(newappl.xml)を読み込む(ステップS801)。そして、オーバロードタグ関数処理部113は、オーバロードタグ関数設定ファイル133(newappl.xml)の<func>タグを参照し、オーバロードタグ関数に置換する関数を全てリストアップする(ステップS802)。そして、HD130に中間ソースファイル138を生成し、ソースファイル131(newappl.c)の内容を中間ソースファイル138にコピーする(ステップS803)。
【0089】
ついで、オーバロードタグ関数処理部113は、図5に示すように、ソースファイル131(newappl.c)からコピーされた中間ソースファイル138の中で、<func>タグで指定された関数名「ecs_jobmode」をオーバーロードタグ関数「ecs_jobmode_」に置換する(ステップS804)。なお、オーバロードタグ関数名は、図5に示すようにソースファイル131に記述された関数名の後ろに「_」を付加したものとして定めているが、各関数ごとに対応したオーバロードタグ関数を設ければオーバロードタグ関数の名称は任意に定めることができる。
【0090】
置換の際、オーバーロードタグ関数ecs_jobmode_の第1引数と第2引数を付加し、第3引数以降に、元の関数ecs_jobmodeの引数を記述する。ここで、オーバーロードタグ関数の第1引数は、検証結果の表示のために、ソースファイル名(newappl.c)を指定し、第2引数はソースファイル131における置換された関数の行数であり、これも検証結果の表示のために指定される。
【0091】
このような関数のオーバロードタグ関数への置換を、ステップS802でリストアップされたすべての関数に対して繰り返し行う(ステップS805)。これにより、図5に示すように、標準関数strcpyもオーバロードタグ関数strcpy_に、ECSサービス関数ecs_msgallocもオーバロードタグ関数ecs_msgalloc_に置換される。
【0092】
次に、コード生成部115によって、オーバロードタグ関数設定ファイル133(newappl.xml)の<dbgcc>タグの属性「path」からオーバロードタグ関数インクルードファイル134とオーバロードタグ関数ソースファイル135のディレクトリパスを、<incfile>タグの属性「include」からオーバロードタグ関数インクルードファイル名をそれぞれ取得し、中間ソースファイル138の先頭にオーバロードタグ関数インクルードファイル134(ecs_ovrlfunc.h)を挿入する(ステップS806)。また、コード生成部115によって、<incfile>タグの属性「source」からオーバロードタグ関数ソースファイル名を取得し、中間ソースファイル138の後ろにオーバロードタグ関数ソースファイル135(ecs_ovrlfunc.c)を挿入する(ステップS807)。
【0093】
そして、コード生成部115は、オーバロードタグ関数インクルードファイル134およびオーバロードタグ関数ソースファイル135が挿入された中間ソースファイル138のソースコードを、通常のコンパイラと同様の処理手順でオブジェクトコードに変換し、デバッグ用新規アプリのオブジェクトファイル139(newappl.o)を生成する(ステップS808)。このオブジェクトファイル139は、図7のステップS708で説明したとおり、リンカ120によってECS関数ライブラリ136(ecs.lib)と標準関数ライブラリ137(standard.lib)とリンクされて、デバッグ用新規アプリの実行形式ファイル132(newappl.exe)が生成される。
【0094】
次に、オーバロードタグ関数ソースファイル135について詳細に説明する。実施の形態1のデバッグ装置100では、オーバロードタグ関数ソースファイル135はユーザがdbgccコマンドの実行前にあらかじめ作成しておく必要がある。図9は、オーバロードタグ関数ソースファイル135の詳細の一例を示す説明図である。図9は、図5に示したオーバロードタグ関数ソースファイル135において、さらにメモリアクセス追跡処理の部分を詳細に示したものである。
【0095】
オーバロードタグ関数では、まず置換元の関数を実行した後、かかる関数のメモリアクセスの処理内容に応じて、メモリの状態遷移をチェックするメモリ追跡処理が実行される。
【0096】
ここで、メモリ領域の状態遷移について説明する。図10は、メモリの状態遷移とメモリアクセスの関係を示す説明図である。図10において、初期状態とは、そのメモリに領域確保も初期化もされていない状態であり、初期状態のメモリに対してはメモリ確保アクセスが可能であるが、他のアクセスが行われるとエラーとなる。確保状態とは、メモリに領域確保がされているが、まだ初期化されていない状態である。確保状態のメモリに対しては、開放または書き込みアクセスが可能であるが、他のアクセスが行われるとエラーとなる。書き込み状態とはメモリに領域確保され、かつ初期化されている状態である。書き込み状態のメモリに対しては、書き込みアクセス、読み込みアクセスおよび開放アクセスが可能であるが、他のアクセスが行われるとエラーとなる。
【0097】
また、メモリの状態遷移については次の通りである。図10に示すように、初期状態のメモリに確保アクセスをおこなうとメモリは確保状態となる。また、確保状態のメモリに書き込みアクセスを行うとメモリは書き込み状態となる。書き込み状態のメモリに読み込みアクセスまたは書き込みアクセスを行うと、メモリは書き込み状態を維持したままである。確保状態または書き込み状態のメモリに開放アクセスを行うと、メモリは初期状態となる。実施の形態1にかかるデバッグ装置100で実行されるデバッグ用アプリケーション生成プログラムは、かかる状態遷移を検査するために、メモリの状態遷移を検査する次のメモリ状態イベント関数を備えている。ここで、第1引数addrは、検査対象のメモリ領域の先頭アドレスであり、第2引数は検査対象のメモリ領域のサイズを示している。
【0098】
(1)event_alloc(char* addr,int size)
メモリアドレスaddrからsizeバイトの範囲の領域にメモリ確保イベントを生成し、メモリ状態遷移が正常か否かを検査するものである。メモリ状態が、初期状態から確保状態に遷移している場合には正常の戻り値を返し、かかる遷移以外の場合には異常の戻り値を返す。異常の戻り値は、遷移元の状態によって異なる戻り値としている。
【0099】
(2)event_read(char* addr,int size)
メモリアドレスaddrからsizeバイトの範囲の領域にメモリ読み込みイベントを生成し、メモリ状態遷移が正常か否かを検査するものである。メモリ状態が、書き込み状態から書き込み状態に遷移している場合には正常の戻り値を返し、かかる遷移以外の場合には異常の戻り値を返す。異常の戻り値は、遷移元の状態によって異なる戻り値としている。
【0100】
(3)event_write(char* addr,int size)
メモリアドレスaddrからsizeバイトの範囲の領域にメモリ書き込みイベントを生成し、メモリ状態遷移が正常か否かを検査するものである。メモリ状態が、書き込み状態から書き込み状態に遷移している場合あるいは確保状態から書き込み状態に遷移している場合には正常の戻り値を返し、かかる遷移以外の場合には異常の戻り値を返す。異常の戻り値は、遷移元の状態によって異なる戻り値としている。
【0101】
(4)event_free(char* addr,int size)
メモリアドレスaddrからsizeバイトの範囲の領域にメモリ開放イベントを生成し、メモリ状態遷移が正常か否かを検査するものである。メモリ状態が、確保状態から初期状態に遷移している場合あるいは書き込み状態から初期状態に遷移している場合には正常の戻り値を返し、かかる遷移以外の場合には異常の戻り値を返す。異常の戻り値は、遷移元の状態によって異なる戻り値としている。
【0102】
なお、上記各メモリ状態イベント関数は、上記範囲の領域に対しメモリの現在の状態と遷移前の状態を得るOSのシステムコールを発行して、遷移前および遷移後をメモリ状態の取得している。図9のオーバロードタグ関数の例では、置換元のecs_jobmode関数は引数のポインタpara1およびポインタpara2が指すメモリ領域の内容をreadする処理を行った上で、pidで指定されたプロセスIDのプロセスに対しジョブモード設定処理を行うECSのサービス関数である。このため、ecs_jobmode関数に対応するオーバロードタグ関数ecs_jobmode_では、図9に示すように、まず置換元のecs_jobmode関数を実行した後、para1およびポインタpara2の指す各メモリ領域に対し、event_readのメモリ状態イベント関数を発行して各メモリ領域の状態遷移をチェックしている。
【0103】
また、置換元のstrcpy関数は引数のポインタsrcが指す領域の内容を引数destポインタで示される領域にコピーする処理を標準関数である。このため、strcpy関数に対応するオーバロードタグ関数strcpy_では、図9に示すように、まず置換元のstrcpy関数を実行した後、srcの指すメモリ領域に対し、event_readのメモリ状態イベント関数を発行し、destの指すメモリ領域に対し、event_writeのメモリ状態イベント関数を発行して各メモリ領域の状態遷移をチェックしている。
【0104】
また、置換元のecs_msgalloc関数は引数のポインタmsg_areaが指す領域をメッセージ領域として確保する処理をECSのサービス関数である。このため、ecs_msgalloc関数に対応するオーバロードタグ関数ecs_msgalloc_では、図9に示すように、まず置換元のecs_msgalloc関数を実行した後、msg_areaの指すメモリ領域に対し、event_allocのメモリ状態イベント関数を発行しメモリ領域の状態遷移をチェックしている。
【0105】
従って、デバッグ用の新規アプリ317の実行形式ファイル132を実行すると、上述したオーバロードタグ関数によって、メモリの状態遷移がチェックされ、異常な場合にはエラー表示がなされるので、プログラムの一部の箇所、一部の関数のみのメモリアクセスの検証を矛盾を生じずに行うことができる。
【0106】
これらの各関数の引数ポインタで示されるメモリ領域は、いずれも関数外部で確保されるメモリ領域であり、かかるオーバロードタグ関数を利用することにより、関数内部でアクセスされるメモリ領域の他、関数内部のメモリ領域と区別して関数外部でアクセスされるメモリ領域に対してもメモリアクセスの検証を行うことが可能となっている。
【0107】
このように実施の形態1にかかるデバッグ装置100およびデバッグ用アプリケーション生成プログラムでは、オーバロードタグ関数処理部113によって、新規アプリソースファイル131のコントロールサービス関数を、オーバロードタグ関数に置換し、コード生成部115によって、オーバロードタグ関数に置換された新規アプリソースファイル131と、オーバロードタグ関数インクルードファイル134およびオーバロードタグ関数ソースファイル135から新規アプリのデバッグ用実行形式ファイル132を生成し、新規アプリ317のデバッグ用実行形式ファイル132を実行しているので、コントロールサービス関数や標準関数のソースコードが公開されていない場合でも、メモリアクセスによるメモリ状態遷移を検証することができ、正確なデバッグ作業を行うことができる。
【0108】
また、実施の形態1にかかるデバッグ装置100およびデバッグ用アプリケーション生成プログラムでは、オーバロードタグ関数を利用してメモリアクセス検証を行っているので、デバッグ作業に必要な関数だけをオーバロードタグ関数に置換すれば良く、このため、新規アプリ317の中で一部の箇所または特定の関数についてだけのメモリアクセスの検証を行うことができ、デバッグ作業を効率的に行うことができる。
【0109】
また、このように特定の関数だけをオーバロードタグ関数に置換することでメモリアクセスの検証を行えるので、関数外部へのメモリアクセスや関数内部におけるメモリアクセスを区別したり、CPUまたはコンパイラに依存する箇所と非依存の箇所とを区別してメモリアクセスの検証を行うことができ、デバッグ作業をより効率的に行うことができる。
【0110】
なお、実施の形態1で説明した各ファイルの内容は一例を示すものであり、その内容について特に限定されるものではない。
【0111】
(実施の形態2)
実施の形態1のデバッグ装置100およびデバッグ用アプリケーション生成プログラムは、オーバロードタグ関数インクルードファイル134およびオーバロードタグ関数ソースファイル135を事前にユーザによって作成してから検証を行っていたが、この実施の形態2にかかるデバッグ装置1100およびデバッグ用アプリケーション生成プログラムは、新規アプリのソースファイルのコンパイル時にオーバロードタグ関数インクルードファイル134およびオーバロードタグ関数ソースファイル135を自動的に生成してデバッグ用新規アプリの実行形式ファイルを生成するものである。
【0112】
図11は、実施の形態2にかかるデバッグ装置1100のソフトウェア構成を示すブロック図である。実施の形態2にかかるデバッグ装置1100は、図11に示すように、デバッグ機能付きコンパイラ1110と、リンカ120とから構成される。
【0113】
デバッグ機能付きコンパイラ1110は、ハードディスク(HD)130に格納されたアプリケーションのソースコードが記述されたソースファイル131を、コマンドの指定に従って、タグやオーバロードタグ関数処理を行って、アプリケーションのオブジェクトコードからなるオブジェクトファイルを生成するものである。デバッグ機能付きコンパイラ1110は、図11に示すように、さらにコマンド解析部111と、構文解析部112と、オーバロードタグ関数コード生成部1111と、オーバロードタグ関数処理部113と、タグ付加部114と、コード生成部115とから構成される。
【0114】
実施の形態2のデバッグ機能付きコンパイラ1110は、オーバロードタグ関数コード生成部1111を備えている点が、実施の形態1におけるデバッグ機能付きコンパイラ110と異なり、この他の構成は実施の形態1のデバッグ機能付きコンパイラ110と同様である。
【0115】
オーバロードタグ関数コード生成部1111は、ユーザが設定したオーバロードタグ関数設定ファイル133に指定された関数に対応したオーバロードタグ関数を生成し、生成された各オーバロードタグ関数の宣言を記述したオーバロードタグ関数インクルードファイル134と、各オーバロードタグ関数の処理を記述したオーバロードタグ関数ソースファイル135をHD130に生成するものである。
【0116】
HD(ハードディスク)130には、実施の形態1にかかるデバッグ装置100と同様に、ソースファイル131と、オーバロードタグ関数設定ファイル133とが格納されている。実施の形態2にかかるデバッグ装置1100では、デバッグ用新規アプリ317の生成処理中にデバッグ用実行形式ファイル132と中間ソースファイル138とオブジェクトファイル139がHD130に生成される他、実施の形態1のデバッグ装置100と異なり、オーバロードタグ関数インクルードファイル134とオーバロードタグ関数ソースファイル135もデバッグ機能付きコンパイラ1110によって生成される。なお、各ファイルの構造および内容については、実施の形態1で説明した各ファイル構造および内容と同様である。
【0117】
次に、以上のように構成された実施の形態2にかかるデバッグ装置1100およびデバッグ用アプリケーション生成プログラムによるデバッグ用新規アプリ317の生成およびメモリアクセス検証方法について説明する。コマンド解析部111によるコマンド解析処理、構文解析部112によるソースファイル131の構文解析処理、リンカ120によるオブジェクトファイル139と各ライブラリとのリンク処理については、図7に示す実施の形態1のデバッグ装置100およびデバッグ用アプリケーション生成プログラムにおける処理手順と同様である。
【0118】
図12は、オーバロードタグ関数コード生成処理、オーバロードタグ関数処理およびコード生成処理の手順を示すフローチャートである。まず、オーバロードタグ関数処理部113によって、環境変数OVR_XMLに設定されたオーバロードタグ関数設定ファイル133(newappl.xml)を読み込む(ステップS1201)。そして、オーバロードタグ関数処理部113は、オーバロードタグ関数設定ファイル133(newappl.xml)の<func>タグを参照し、オーバロードタグ関数に置換する関数を全てリストアップする(ステップS1202)。
【0119】
次に、オーバロードタグ関数コード生成部1111によって、リストアップされた関数名に対応するオーバロードタグ関数名を決定し、各オーバロードタグ関数の宣言を記述したオーバロードタグ関数インクルードファイル134とオーバロードタグ関数ソースファイル135を生成し、オーバロードタグ関数設定ファイル133で指定されたディレクトリパスに、同ファイル133に指定された各ファイル名で格納する(ステップS1203)。
【0120】
ここで、オーバロードタグ関数コード生成部1111によるオーバロードタグ関数ソースファイル135の生成処理について説明する。実施の形態1で説明した通り、オーバロードタグ関数は、置換元の関数のメモリに対するアクセスの方法によって、メモリ状態イベント関数を適宜選択してメモリアクセスによる状態遷移を検証している。すなわち、関数の処理の中で、引数ポインタが指すメモリ領域に対し読み込みアクセスを行っている場合には、関数実行後にevent_readのイベント関数によってメモリの遷移状態をチェックし、引数ポインタが指すメモリ領域に対し書き込みアクセスを行っている場合には、関数実行後にevent_writeのイベント関数によってメモリの遷移状態をチェックしている。従って、実施の形態2のデバッグ装置1100では、あらかじめオーバロードタグ関数のへの置換対象となり得る関数に対して、その引数が指す領域に対するアクセス方法を関数テーブルで保持している。
【0121】
図13は、かかる関数テーブルの一例を示す説明図である。図13は、図5に示したオーバロードタグ関数の置換元の関数ecs_jobmode,ecs_msgalloc,strcpyのそれぞれについて、各引数ポインタの指すメモリ領域に対するアクセス方法を記録している。オーバロードタグ関数コード生成部1111は、関数の引数ごとにかかる関数テーブルを参照して、読み込みアクセス、書き込みアクセス、確保アクセス、開放アクセスを判断し、メモリ状態イベント関数event_read、event_write、event_alloc、event_freeの中から選択してオーバロードタグ関数ソースファイル135を生成する。また、オーバロードタグ関数コード生成部1111は、生成したオーバロードタグ関数の宣言を記述してオーバロードタグ関数インクルードファイル134を生成する。
【0122】
図12のステップS1203によって、オーバロードタグ関数インクルードファイル134とオーバロードタグ関数ソースファイル135が生成されたら、HD130に中間ソースファイル138を生成し、ソースファイル131(newappl.c)の内容を中間ソースファイル138にコピーする(ステップS1204)。これ以降の、オーバロードタグ関数処理部113による対象関数のオーバロードタグ関数への置換、コード生成部115によりオブジェクトコードへの変換およびオブジェクトファイル139の生成処理の手順(ステップS1205〜S1209)は、実施の形態1のデバッグ装置100およびデバッグ用アプリケーション生成プログラムによる図8で説明した手順(ステップS804〜S808)と同様に行われる。そして、生成されたオブジェクトファイル139をリンカ120によってECS関数ライブラリ136(ecs.lib)と標準関数ライブラリ137(standard.lib)とリンクすることにより、デバッグ用新規アプリ317の実行形式ファイル132(newappl.exe)が生成される。
【0123】
このように実施の形態2にかかるデバッグ装置1100およびデバッグ用アプリケーション生成プログラムでは、オーバロードタグ関数コード生成部1111によって、コントロールサービス関数および標準関数に対するオーバロードタグ関数のオーバロードタグ関数ソースファイル135およびオーバロードタグ関数インクルードファイル134を自動的に生成しているので、オーバロードタグ関数ソースファイル135およびオーバロードタグ関数インクルードファイル134をデバッグ作業者自ら作成する必要がなく、正確なデバッグ作業を効率的に行うことができる。
【0124】
なお、実施の形態1および2にかかるデバッグ装置1100およびデバッグ用アプリケーション生成プログラムでは、新規アプリを生成する場合について説明しているが、この他コントロールサービスの生成について本発明を適用することも可能である。
【0125】
【発明の効果】
以上説明したように、請求項1にかかる発明によれば、サービス関数のソースコードが公開されていない場合でも、サービス関数の機能を把握していれば、アプリケーションの実行時にサービス検証関数によってメモリアクセスによるメモリ状態を検証することができ、一部のソースコードが不明な場合でも正確なデバッグ作業を行うことができるという効果を奏する。また、請求項1にかかる発明によれば、メモリ確保アクセスによる障害を正確に検知することができ、より正確なデバッグ作業を行うことができるという効果を奏する。
【0126】
また、請求項2にかかる発明によれば、一部の関数のみにおけるメモリアクセスの検証を行うことができ、デバッグ作業を効率的に行うことができるという効果を奏する。
【0128】
また、請求項にかかる発明によれば、メモリ書き込みアクセスによる障害を正確に検知することができ、より正確なデバッグ作業を行うことができるという効果を奏する。
【0129】
また、請求項にかかる発明によれば、メモリ読み込みアクセスによる障害を正確に検知することができ、より正確なデバッグ作業を行うことができるという効果を奏する。
【0130】
また、請求項にかかる発明によれば、メモリ開放アクセスによる障害を正確に検知することができ、より正確なデバッグ作業を行うことができるという効果を奏する。
【0131】
また、請求項にかかる発明によれば、サービス関数だけでなく、ソースコードが公開されない標準関数からメモリアクセスを行う場合でも、標準関数の機能を把握していれば、アプリケーションの実行時に標準検証関数によってメモリアクセスによるメモリ状態を検証することができ、標準関数のライブラリのみが提供されている場合でも正確なデバッグ作業を行うことができるという効果を奏する。
【0132】
また、請求項にかかる発明によれば、サービス関数のソースコードが公開されていない場合でも、サービス検証関数ソースファイルをデバッグ作業者自ら作成することなく、正確なデバッグ作業を効率的に行うことができるという効果を奏する。
【0134】
また、請求項にかかる発明によれば、アプリケーションの実行時に、ソースファイルが自動生成されたメモリ書き込みアクセスを検証するサービス検証関数によってメモリ書き込みアクセスによる障害を正確に検知することができ、より正確なデバッグ作業を効率的に行うことができるという効果を奏する。
【0135】
また、請求項にかかる発明によれば、アプリケーションの実行時に、ソースファイルが自動生成されたメモリ読み込みアクセスを検証するサービス検証関数によってメモリ読み込みアクセスによる障害を正確に検知することができ、より正確なデバッグ作業を効率的に行うことができるという効果を奏する。
【0136】
また、請求項10にかかる発明によれば、アプリケーションの実行時に、ソースファイルが自動生成されたメモリ開放アクセスを検証するサービス検証関数によってメモリ開放アクセスによる障害を正確に検知することができ、より正確なデバッグ作業を効率的に行うことができるという効果を奏する。
【0138】
また、請求項11にかかる発明によれば、請求項1〜10のいずれか一つの動作をコンピュータによって実行することができるという効果を奏する。
【図面の簡単な説明】
【図1】実施の形態1にかかるデバッグ装置の機能的構成を示すブロック図である。
【図2】実施の形態1にかかるデバッグ装置のハードウェア構成を示すブロック図である。
【図3】実施の形態1にかかる複合機の機能的構成を示すブロック図である。
【図4】実施の形態1にかかる複合機の新規アプリとコントロールサービスの関数呼び出しの関係を示すブロック図である。
【図5】実施の形態1にかかるデバッグ装置におけるデバッグ用新規アプリの生成処理において、使用および生成されるファイルと、デバッグ用新規アプリの全体の流れを示した説明図である。
【図6】実施の形態1にかかるデバッグ装置において、図5におけるオーバロードタグ関数設定ファイルの内容の一例を示す説明図である。
【図7】実施の形態1にかかるデバッグ装置におけるデバッグ用新規アプリの生成処理の手順を示すフローチャートである。
【図8】実施の形態1にかかるデバッグ装置におけるオーバロードタグ関数処理およびコード生成処理の手順を示すフローチャートである。
【図9】実施の形態1にかかるデバッグ装置におけるオーバロードタグ関数ソースファイルの詳細の一例を示す説明図である。
【図10】実施の形態1にかかる複合機におけるメモリの状態遷移とメモリアクセスの関係を示す説明図である。
【図11】実施の形態2にかかるデバッグ装置の機能的構成を示すブロック図である。
【図12】実施の形態2にかかるデバッグ装置におけるオーバロードタグ関数コード生成処理、オーバロードタグ関数処理およびコード生成処理の手順を示すフローチャートである。
【図13】実施の形態2にかかるデバッグ装置で使用する関数テーブルの一例を示す説明図である。
【符号の説明】
100,1100 デバッグ装置
110,1110 コンパイラ
111 コマンド解析部
112 構文解析部
113 オーバロードタグ関数処理部
114 タグ付加部
115 コード生成部
120 リンカ
130 ハードディスク(HD)
131 新規アプリソースファイル
132 デバッグ用実行形式ファイル
133 オーバロードタグ関数設定ファイル
134 オーバロードタグ関数インクルードファイル
135 オーバロードタグ関数ソースファイル
136 コントロールサービス関数ライブラリ
137 標準関数ライブラリ
138 中間ソースファイル
139 オブジェクトファイル
201 入力装置
202 表示装置
203 制御装置
204 通信装置
205 RAM
300 複合機
301 白黒ラインプリンタ
302 カラーラインプリンタ
303 ハードウェアリソース
310 ソフトウェア群
311 プリンタアプリ
312 コピーアプリ
313 ファックスアプリ
314 スキャナアプリ
315 ネットファイルアプリ
316 工程検査アプリ
317 新規アプリ
320 プラットホーム
321 汎用OS
322 SCS
323 SRM
324 ECS
325 MCS
326 OCS
327 FCS
328 NCS
330 アプリケーション
1111 オーバロードタグ関数コード生成部
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an image forming apparatus application generation method and method for generating an application mounted on an image forming apparatus that provides a user service for image forming processing such as a copy, a printer, a scanner, and a facsimile, for verification of debugging work. The present invention relates to a program for causing a computer to execute.
[0002]
[Prior art]
2. Description of the Related Art In recent years, an image forming apparatus (hereinafter, referred to as “multifunction machine”) in which functions of apparatuses such as a printer, a copy machine, a facsimile machine, and a scanner are housed in a single housing is generally known. This multifunction device is provided with a display unit, a printing unit, an imaging unit, and the like in one casing, and is provided with three types of software respectively corresponding to a printer, a copying machine, and a facsimile machine. It operates as a copy, scanner or facsimile machine.
[0003]
In such a multi-function peripheral, image data is generated and output, so access to the memory frequently occurs. Therefore, it is important to verify whether or not the memory is normally accessed in the development stage of each software.
[0004]
As a conventional method for verifying such memory access, verification for verifying memory access at a location where an application program reads, writes, and allocates an operation in a source file of an application program. A method of embedding a code (tagging) and determining whether memory access is normal is generally known.
[0005]
[Problems to be solved by the invention]
However, in such a memory access verification method, when the source codes of all components are disclosed, it is verified whether or not the memory access is normal by embedding verification codes in all the locations where memory access is performed. However, if the source code of some components is not disclosed, it is not possible to verify a memory access failure that occurs inside a private component, and it is possible to perform accurate debugging work. There is a problem that you can not.
[0006]
For example, if a component for which a certain source code is disclosed provides only an object file for a standard function for character string manipulation and input / output as a C language standard library, and the source code for each function is not disclosed, such standard The memory access performed inside the function cannot be verified.
[0007]
Even if the source code of all components provided as a function library is released, if memory access is verified by excluding only a specific function library, a memory access error will occur inside the excluded function. If it is, accurate debugging cannot be performed.
[0008]
Here, in the case of a conventional multifunction device, application programs such as printer, copy, facsimile, and scanner are all developed by the producer of the multifunction device, and a third party such as a third vendor must develop a new application. Is not assumed, so the source code for all components is open to developers. Further, in the conventional multifunction peripheral, application programs that operate as processes in units of functions such as printers, copiers, facsimiles, scanners, etc. have been developed, and therefore, source codes such as standard functions of the C language standard library are not disclosed. Even when using, access to the memory is not complicated, and there is little trouble in debugging work.
[0009]
By the way, in such a conventional multi-function machine, software corresponding to a printer, a copy, a scanner, and a facsimile apparatus is provided separately, so that development of each software requires a lot of time. For this reason, the applicant has hardware resources used in image forming processing such as a display unit, a printing unit, and an imaging unit, and has an application that performs processing specific to each user service such as a printer, copy, or facsimile. When a user service is provided by interposing between these applications and hardware resources, hardware resource management, execution control, and image formation processing that are commonly required by at least two of the applications are provided. Invented an image forming apparatus (multifunction machine) equipped with a platform consisting of various control services.
[0010]
According to this multi-function peripheral, it is possible to improve the efficiency of software development by providing a platform for performing management, execution control, and image formation processing of hardware resources commonly required by at least two applications. As a result, the productivity of the entire apparatus can be improved.
[0011]
In such a new multifunction device, there are not only a plurality of application processes for each function, but also a control service process that provides services commonly required by at least two of the applications. As compared with the conventional multi-function machines, a great number of processes are executed in parallel while performing inter-process communication with each other. In addition, a plurality of threads are activated in each process, and a user service function is realized by performing inter-process communication with other processes while realizing parallel execution at the thread level. In other words, the novel multifunction peripheral invented by the applicant provides a user service for image forming processing such as copying, printers, scanners, facsimiles, etc., by cooperating in a complicated manner with many processes and threads. It is a typical composition.
[0012]
For this reason, in order to verify the operation of the multi-function device more accurately, it is necessary to perform the debugging work in a state where a large number of processes are operated cooperatively rather than performing the debugging work in units of processes. Since many processes are operating in such a multi-function peripheral, a shared memory that can be accessed in common by a plurality of processes is used, and the shared memory is accessed from many processes. Therefore, unlike the debugging work in the conventional multi-function peripheral, it becomes necessary to verify access to the shared memory from a large number of processes. For this reason, when using a function for which some source code is not disclosed, if a memory access error occurs inside the function, the impact on other processes is significant, compared to conventional multifunction devices. There is a problem that accurate debugging cannot be performed.
[0013]
Moreover, in such a new multifunction device, the application and the control service are provided separately, so after the multifunction device is shipped, a user or a third party as a third party develops a new application and installs it in the multifunction device. It is a configuration that is supposed to be. For this reason, when a newly developed application makes a function call using the function library provided to the control service, it is possible to verify whether the memory access is normally performed as the function is executed. It becomes necessary.
[0014]
However, since the control service is a module close to hardware resources, it is not desirable to disclose the processing procedure of each control service to a third party. Therefore, the control service source program may not be disclosed to a third party. Many. For this reason, the developer of a new application can embed the verification code for memory access in the source program of the application developed by himself, but cannot embed the verification code in the source program of the control service. A contradiction occurs in the memory access state, and there is a new problem that has not been a problem in the conventional multi-function peripheral development, in which the memory access cannot be accurately verified in the development of a new application.
[0015]
The present invention has been made in view of the above, and provides an image forming apparatus application generation method and method capable of accurately verifying memory access in development of an application that operates in an image forming apparatus in which a large number of processes operate. The object is to obtain a program to be executed by a computer.
[0016]
[Means for Solving the Problems]
  In order to achieve the above object, the invention according to claim 1A storage unit that stores an application for image information processing using hardware resources having a printing unit or an imaging unit, and a control unit that is defined as a service function that is called from the application and controls the hardware resource; , A processor, the processor reads the application and the control unit from the storage unit, and executes the read application and the control unit as processes, respectively. Perform inter-process communication with the process of the control unit by calling the service function and receiving the return value of the service function from the control unitImage forming apparatusofGenerate the application for verificationExecuted by the image forming device application generation deviceAn application generation method for an image forming apparatus,The application generating apparatus for the image forming apparatus is used for an application source file of the application including a description of the service function call, and an argument and a return value when the service function is called and the service function is called. A verification function source file in which the call process of the service verification function for executing the verification process for verifying the correctness of the state transition of the memory area, the verification process, and a return process for returning a return value are described; and an object of the service function A second storage unit that stores a service function library in which a file of a format is registered, and the function processing means is stored in the second storage unit beforeSource fileAnd read the app source fileThe service functionCall invocationTheDescription of the call to the service verification functionA function processing step to replace with,Code generation means reads the verification function source file stored in the second storage unit,The service verification function by the function processing stepCall invocationReplaced byThe appsource fileRead to the aboveVerification function source fileAre linked, and the object file generated by the compilation is linked with the service function library stored in the second storage unit.And a code generation step for generating the application.
[0017]
  According to the invention of claim 1,A function processing step of reading the source file stored in the second storage unit by a function processing step and replacing the description of the service function call in the read application source file with the description of the service verification function call And the code generation step reads the verification function source file stored in the second storage unit, and the function processing step reads the application source file replaced with the description of the service verification function call. The verification function source file is concatenated and compiled, and the executable application is generated by linking the object file generated by the compilation and the service function library stored in the second storage unit.Therefore, even if the source code of the service function is not disclosed, if you know the function of the service function, you can verify the memory status due to memory access by the service verification function when executing the application. Even when the source code is unknown, accurate debugging can be performed.
According to the first aspect of the present invention, the verification process for verifying the validity of the state transition of the memory area used for the argument and the return value when the service function is called by the service verification function is performed. Therefore, it is possible to grasp whether or not the memory allocation access is valid when the generated application is executed by the memory state transition. Therefore, it is possible to accurately detect a failure caused by the memory allocation access and perform more accurate debugging work. be able to.
[0018]
  The invention according to claim 2The input means isThe service function to be verifiedThe call description isSpecified setting informationAccept inputAn input step,
  The function processing step includes the stepThe appsource fileofThe service functionOf the call descriptionService function specified in the setting informationCall invocationThe service verification functionCall invocationIt is characterized by replacing with.
[0019]
  According to the invention of claim 2, the service function to be verified is input in the input step.The call description isSpecified setting informationAccept inputDepending on the function processing step,The appsource fileofThe service functionOf the call descriptionService function specified in the setting informationCall invocationThe service verification functionCall invocationBy substituting for the above, it is possible to verify the memory access in only a part of the functions, and to perform debugging work efficiently.
[0022]
  Claims3The invention according to,in frontThe service verification function isThe memory areaBy writing toSaidIt is characterized by verifying the state transition.
[0023]
  This claim3According to the invention, the service verification function by the service verification function is:The memory areaBy writing toSaidBy verifying the state transition, it is possible to grasp whether or not the memory write access is valid at the time of execution of the generated application, so it is possible to accurately detect the failure due to the memory write access. Accurate debugging can be performed.
[0024]
  Claims4The invention according to,in frontThe service verification function isThe memory areaBy reading againstSaidIt is characterized by verifying the state transition.
[0025]
  This claim4According to the invention, the service verification functionThe memory areaBy reading againstSaidBy verifying the state transition, it is possible to grasp whether or not the memory read access is valid at the time of execution of the generated application, so it is possible to accurately detect the failure due to the memory read access. Accurate debugging can be performed.
[0026]
  Claims5The invention according to,in frontThe service verification function isOf the memory areaBy openingSaidIt is characterized by verifying the state transition.
[0027]
  This claim5According to the invention, the service verification functionOf the memory areaBy openingSaidSince it is characterized by verifying the state transition, it is possible to grasp whether the memory free access is valid or not when executing the generated application, so it is possible to accurately detect a failure caused by the memory free access. More accurate debugging work.
[0028]
  Claims6The invention according toThe application source file further describes a standard function call that is a general-purpose function provided in advance in a programming language, and the second storage unit further includes the standard function call process and the standard function. The standard verification function call process, the verification process, and the return process for executing the verification process for verifying the correctness of the state transition of the memory area used for the argument and the return value at the time of calling and the return process for returning the return value A standard verification function source file in which processing is described, and a standard function library in which the object format file of the standard function is registered;The function processing step further includes theThe appsource fileOf the aboveStandard functionsCall invocationTheDescription of the standard verification function callIs replaced withThe code generation step further reads the standard function source file stored in the second storage unit,The standard verification function by the function processing stepCall invocationReplaced byThe appsource fileRead to the aboveVerification function source fileAre compiled, and the executable file is linked by linking the object file generated by the compilation and the standard function library stored in the second storage unit.The application is generated.
[0029]
  This claim6In accordance with the invention, the function processing step,further,SaidThe appsource fileOf the aboveStandard functionsCall invocationTheDescription of the standard verification function callIs replaced withThe code generation step further reads the standard function source file stored in the second storage unit,The standard verification function by the function processing stepCall invocationReplaced byThe appsource fileRead to the aboveVerification function source fileAre compiled, and the executable file is linked by linking the object file generated by the compilation and the standard function library stored in the second storage unit.By generating the application, even if memory access is performed not only from a service function but also from a standard function whose source code is not disclosed, if the function of the standard function is known, memory access is performed by the standard verification function when the application is executed. The memory state can be verified, and even if only a library of standard functions is provided, accurate debugging can be performed.
[0030]
  Claims7The invention according toThe second storage unit further stores a function table in which an argument at the time of calling the service function and an access method to the memory area are associated with each other, and a verification function code generation unit stores the function table from the second storage unit. With reference to the function table, based on the access method corresponding to the description of the service function call of the application source file, theGenerate service verification function source fileAnd store in the second storage unitVerification function code generation step,ThefurtherIt is characterized by including.
[0031]
  This claim7According to the invention concerningThe verification function code generation step refers to the function table from the second storage unit and generates the service verification function source file based on the access method corresponding to the description of the service function call in the application source file. And store in the second storage unitThus, even when the source code of the service function is not disclosed, it is not necessary for the debug operator to create the service verification function source file. For this reason, when the application is executed, the memory state by the memory access can be verified by the service verification function in which the source file is automatically generated, and accurate debugging work can be efficiently performed even when some source code is unknown. be able to.
[0034]
  Claims8The invention according to,in frontThe verification function code generation step, based on the processing content of the service function,The memory areaBy writing toSaidThe service verification function for verifying state transitionIncluding a description of the call toA service verification function source file is generated.
[0035]
  This claim8According to the invention, the verification function code generation step, based on the processing content of the service function,The memory areaBy writing toSaidThe service verification function for verifying state transitionIncluding a description of the call toBy generating a service verification function source file, when the application is executed, the service verification function that verifies the memory write access in which the source file was automatically generated, and whether or not the memory write access is valid is grasped by the memory state transition Therefore, it is possible to accurately detect a failure due to memory write access, and to perform more accurate debugging work efficiently.
[0036]
  Claims9The invention according to,in frontThe verification function code generation step, based on the processing content of the service function,The memory areaBy reading againstSaidThe service verification function for verifying state transitionIncluding a description of the call toA service verification function source file is generated.
[0037]
  This claim9According to the invention, the verification function code generation step, based on the processing content of the service function,The memory areaBy reading againstSaidThe service verification function for verifying state transitionIncluding a description of the call toBy generating a service verification function source file, when the application is executed, the service verification function that verifies the memory read access automatically generated by the source file is used to grasp whether the memory read access is valid or not by the memory state transition. Therefore, a failure due to memory read access can be detected accurately, and more accurate debugging work can be performed efficiently.
[0038]
  Claims10The invention according to,in frontThe verification function code generation step, based on the processing content of the service function,Release the memory areabySaidThe service verification function for verifying state transitionIncluding a description of the call toGenerate a service verification function source file.
[0039]
  This claim10According to the invention, the verification function code generation step, based on the processing content of the service function,Release the memory areabySaidThe service verification function for verifying state transitionIncluding a description of the call toBy generating a service verification function source file, when the application is executed, the service verification function that verifies the memory release access that automatically generated the source file, and whether or not the memory release access is valid is grasped by the memory state transition Therefore, it is possible to accurately detect a failure due to memory open access, and to perform more accurate debugging work efficiently.
[0042]
  Claims11The invention according to claim 1 to claim 110Since it is a program which makes a computer perform the method described in any one of Claim 1,10Any one of the operations can be executed by a computer.
[0043]
DETAILED DESCRIPTION OF THE INVENTION
Exemplary embodiments of an application forming method for an image forming apparatus and a program for causing a computer to execute the method according to the present invention will be explained below in detail with reference to the accompanying drawings.
[0044]
(Embodiment 1)
FIG. 1 is a block diagram showing a software configuration of a debugging device 100 according to the first embodiment of the present invention. The debugging apparatus 100 according to the first embodiment generates a new application that operates on an image forming apparatus (hereinafter referred to as “multifunction machine”) for debugging, loads the new application on the multifunction machine, and starts the application. This is to verify the memory access from the application. A debugging device 100 according to the first embodiment includes a compiler 110 with a debugging function and a linker 120 as shown in FIG.
[0045]
The compiler 110 with a debugging function uses a verification code (hereinafter referred to as a “tag”) or an overload described later according to a command specification for a source file 131 in which a source code of an application stored in the hard disk (HD) 130 is described. The tag function process is performed to generate an object file composed of the object code of the application. As shown in FIG. 1, the compiler 110 with a debugging function further includes a command analysis unit 111, a syntax analysis unit 112, an overload tag function processing unit 113, a tag addition unit 114, and a code generation unit 115. The Here, the overload tag function constitutes a service verification function and a standard verification function in the present invention.
[0046]
In the HD (hard disk) 130, a source file 131 in which the C language source code of the application is described, an overloaded tag function setting file 133 in an XML (eXtended Markup Language) format in which an overloaded tag function described later is specified, An overload tag function include file 134 in which an overload tag function declaration is described in C language source code and an overload tag function source file 135 in which processing of the overload tag function is described in C language source code are stored. . The HD 130 also includes an intermediate source file 138 in which service functions and standard functions are temporarily replaced with overload tag functions by the compiler 110 with a debugging function, and an object file generated from the source file 131 or the intermediate source file 138. 139 is generated, and an executable file 132 for debugging an application is generated by the linker 120.
[0047]
The overload tag function setting file 133 constitutes setting information in the present invention, and is created by the user. The overload tag function setting file 133 includes a specification of a function to be replaced with an overload tag function, a specification of an overload tag function include file name and an overload tag function source file, an overload tag function include file 134 and an overload. The storage destination directory of the tag function source file 135 is designated.
[0048]
The command analysis unit 111 of the compiler 110 with a debugging function analyzes parameters and syntax of a command input by a user using an input device such as a keyboard, and determines whether the input command is grammatically accurate. It is.
[0049]
The syntax analysis unit 112 receives the application source file 131 stored in the HD 130, analyzes the C language source code described in the source file 131 according to the C language grammar, and generates a derivation tree, a syntax tree, and the like. It performs the same processing as the syntax analysis in a normal compiler.
[0050]
The overload tag function processing unit 113 converts the control service function or C language standard function set as the debug target in the overload tag function setting file 133 from the functions described in the source file 131 to the corresponding overload. An intermediate source file 138 replaced with a tag function is generated. The tag adding unit 114 generates an intermediate source file 138 in which a tag that is a memory access verification code is added to the entrance and exit of a function described in the source file 131.
[0051]
When the overload tag function is specified by the overload tag function setting file 133, the code generation unit 115 converts the application intermediate source file 138 to which the tag is added by the tag addition unit 114 into the application object including the object code. A file 139 is generated. Further, the code generation unit 115 includes an intermediate source file 138 in which the service function and the standard function are replaced with the overload tag function by the overload tag function processing unit 113, an overload tag function include file 134, and an overload tag function source file. 135 is combined with one file to generate an object file 139 of an application consisting of an object code.
[0052]
The linker 120 links (links) the object file 139 generated by the code generation unit 115, the control service function library 136 and the standard function library 137 stored in the HD 130, and executes them on the OS of the multifunction machine and the computer. An executable format file 132 for debugging an executable application is generated.
[0053]
FIG. 2 is a block diagram of a hardware configuration of the debugging device 100 according to the first embodiment. As shown in FIG. 2, the debugging device 100 includes a control device 203 such as a CPU, a RAM (Random Access Memory) 205, an HD 130, a display device 202 such as a display device, and an input device 201 such as a keyboard and a mouse. And a communication device 204 such as a LAN board and a modem, and has a normal configuration using a computer such as a PC (Personal Computer) or a workstation. The debug device 100 is connected to an image forming apparatus (hereinafter referred to as “multifunction device”) 300 via a network such as a LAN 206, and the debug device 100 debugs the multifunction device 300 on the network. .
[0054]
Each part of the compiler 110 with a debugging function and the linker 120 are generated and executed on the RAM 205 when the debugging application generation program is executed. This debug application generation program is an executable or installable format on a storage medium such as a CD-ROM or FD as a part or all of a development tool kit such as a software development kit (SDK). Provided in a file. Also, such executable or installable format files may be provided in a manner that can be obtained via a network.
[0055]
Next, the MFP 300 that is the debug target will be described. FIG. 3 is a block diagram illustrating a functional configuration of the multifunction machine 300. As shown in FIG. 3, the multi-function apparatus 300 includes a monochrome line printer (B & W LP) 301, a color line printer (Color LP) 302, hardware resources such as a scanner, a facsimile, a hard disk (HD), a memory, and a network interface. And a software group 310 including a platform 320 and an application 330.
[0056]
The platform 320 interprets a processing request from the application 330 and generates a hardware resource acquisition request, and a system resource that manages one or a plurality of hardware resources and arbitrates the acquisition request from the control service. A manager (SRM) 323 and a general-purpose OS 321 are provided.
[0057]
The control service is formed by a plurality of service modules, and includes an SCS (system control service) 322, an ECS (engine control service) 324, an MCS (memory control service) 325, an OCS (operation panel control service) 326, and an FCS. (Fax control service) 327 and NCS (network control service) 328. The platform 320 has an application programming interface (API) that can receive a processing request from the application 330 using a predefined function.
[0058]
The general-purpose OS 321 is a general-purpose operating system such as UNIX (registered trademark), and executes each software of the platform 320 and the application 330 in parallel as processes.
[0059]
The process of the SRM 323 performs system control and resource management together with the SCS 322. The SRM323 process uses the hardware resources of the scanner, printer, and other engines, memory, HDD files, and host I / O (centro I / F, network I / F, IEEE 1394 I / F, RS232C I / F, etc.). Arbitration is performed according to the request from the upper layer to be used, and execution control is performed.
[0060]
Specifically, the SRM 323 determines whether the requested hardware resource is available (whether it is not used by another request), and if it is available, the requested hardware resource is used. Tell the upper layer that it is possible. In addition, the SRM 323 performs hardware resource usage scheduling in response to a request from an upper layer, and directly executes the request contents (for example, paper conveyance and image forming operation, memory allocation, file generation, etc. by the printer engine). .
[0061]
The process of the SCS 322 performs application management, operation unit control, system screen display, LED display, resource management, interrupt application control, and the like.
[0062]
The ECS 324 process controls the engine of a hardware resource 303 including a monochrome line printer (B & W LP) 301, a color line printer (Color LP) 302, a scanner, a facsimile, and the like.
[0063]
The MCS 325 process acquires and releases image memory, uses a hard disk drive (HDD), compresses and decompresses image data, and the like.
[0064]
The FCS327 process performs facsimile transmission / reception using the PSTN / ISDN network from each application layer of the system controller, registration / quotation of various facsimile data managed by BKM (backup SRAM), facsimile reading, facsimile reception printing, and fusion transmission / reception. Provides an API to do.
[0065]
The NCS 328 process is a process for providing a service that can be commonly used for applications requiring network I / O. Data received from the network side according to each protocol is distributed to each application, and data from the application Mediation when sending to the network side. Specifically, it has server daemons such as ftpd, httpd, lpd, snmpd, telnetd, and smtpd and client functions of the same protocol.
[0066]
The OCS 326 controls an operation panel (operation panel) serving as information transmission means between the operator (user) and the main body control. The OCS 326 acquires a key press from the operation panel as a key event, sends a key event function corresponding to the acquired key to the SCS 322, and displays various screens on the operation panel according to a request from the application 330 or the control service. A drawing function for drawing output, a function for controlling the operation panel, and the like are composed of pre-registered OCS library portions. The OCS library is implemented by being linked to each module of the application 330 and the control service. The OCS 326 may be configured to operate as a process, or the OCS 326 may be configured as an OCS library.
[0067]
The application 330 includes a printer application 311 that is a printer application having a page description language (PDL), PCL, and PostScript (PS), a copy application 312 that is a copy application, and a fax application 313 that is a facsimile application. , A scanner application 314 that is a scanner application, a network file application 315 that is a network file application, and a process inspection application 316 that is a process inspection application. Each of these applications 330 is generated and operated as a process by an initialization unit (not shown) when the MFP 300 is activated.
[0068]
Each process of the application 330 and each process of the control service realize a user service related to image forming processing such as copying, printer, scanner, facsimile, etc. while performing inter-process communication by calling a function, sending its return value, and sending / receiving a message. is doing.
[0069]
As described above, the MFP 300 according to the first embodiment includes a plurality of applications 330 and a plurality of control services, all of which operate as processes. In each of these processes, one or a plurality of threads are generated and parallel execution is performed in units of threads. The control service provides a common service to the application 330. For this reason, a large number of these processes perform a parallel operation and a parallel operation of threads to perform inter-process communication with each other. User services related to image forming processing such as copying, printers, scanners, and facsimiles are provided.
[0070]
In addition, a third party such as a third vendor can develop and install a new application (new application 317) in the application layer above the control service layer in the MFP 300. The debugging device 100 according to the first embodiment performs a debugging operation in order to verify memory access at the development stage of the new application 317.
[0071]
FIG. 4 is a block diagram showing the relationship between the new application 317 and the control service function call. That is, the process between the processes of the new application 317 and the control service process (ECS 324 in FIG. 4) using the API (application programming interface) and the function provided by the control service (ecs_func function in FIG. 4). When communication is performed, the function called on the control service side is executed.
[0072]
At this time, it is determined whether or not the state transition of the memory area due to the memory access is normal when the area is secured to the memory, the memory is read / written, or the memory is released along with the execution of the function. It has become. In such a case, it is possible to verify the memory access by adding a tag, which is a memory access verification code, to the location where the memory access of the new application 317 and the control service is performed without using the overload tag function. . However, in the MFP 300 according to the first embodiment, the function provided by the control service is provided only by an object code called a function library, and the source code of each provided function is not disclosed to a third party. Therefore, the memory access cannot be verified by this, and therefore the memory access is verified using the overload tag function.
[0073]
Next, a method for generating a new application for debugging and a memory access verification method using the debugging device 100 and the debugging application generation program according to the first embodiment configured as described above will be described. FIG. 5 is an explanatory diagram showing the files used and generated and the overall flow of the new debug application in the process of generating the new debug application.
[0074]
A user who debugs a new application inputs the next command at the command prompt% from the input device 201 such as a keyboard of the debugging device 100 in order to generate an execution format file of the new application for debugging.
[0075]
% Dbgcc source file name -o executable file name
Here, “dbgcc” is the designation of startup of the compiler with a debugging function and the linker, “source file name” is the source file name of the new application, and “−o executable file name” is the executable file name of the new application. Indicates. In addition, when nothing is set in the environment variable OVR_XML at the time of executing such a command, processing for adding a tag that is a memory access verification code to the entry and exit of the function in the source file of the new application is performed. An executable file is generated.
[0076]
On the other hand, when an overload tag function setting file name is set in the environment variable OVR_XML, an executable file that can perform memory access verification using the overload tag function is generated. For example, in the example of FIG. 5, the following environment variable setting and command input will start generation processing of a new application executable file using the overload tag function.
[0077]
Environment variable OVR_XML = "newappl.xml"
% Dbgcc newappl. c-o newappl. exe
[0078]
In the example of FIG. 5, when the new application 317 performs inter-process communication with the ECS process as a control service, the function ecs_jobmode () provided by the ECS 324 is called, and the memory access memory state performed in the ecs_jobmode () And a new application for debugging that verifies the memory state of the memory access performed in the standard function strcppy (). Here, the ECS function library 136 (ecs.lib) in which ecs_jobmode () is registered and the standard function library 137 (standard.lib) in which strcpy () is registered are both provided to the user as object files. Therefore, the source code of ecs_jobmode () and strcpy () is not disclosed, and it is impossible to tag the source code of such a function. For this reason, in the example of FIG. 5, the memory access verification is made possible by using the overload tag function.
[0079]
In the overload tag function setting file 133 (newappl.xml), the overload tag function include file 134 (ecs_ovrlfunc.h) and the overload tag function source file 135 (ecs_ovrlfunc.c) are replaced with the overload tag function. The functions ecs_jobmode and strcppy are specified.
[0080]
FIG. 6 is an explanatory diagram showing the contents of the overload tag function setting file 133 in the example of FIG. The overload tag function setting file 133 is created by the user before the start of debugging work.
[0081]
As shown in FIG. 5, the directory path of the overload tag function include file 134 and the overload tag function source file 135 is specified in the attribute “path” of the tag <dbgcc>. The attribute “source” of the tag <incfile> has the file name (ecs_ovrlfunc.c) of the overload tag function source file 135, and the attribute “include” has the file name of the overload tag function include file 134 (ecs_ovrlfunc.h). ) Is specified. A tag <func> specifies a function name to be replaced with an overload tag function, that is, a function name for performing memory access verification. In the examples of FIGS. 5 and 6, “ecs_jobmode” and “strcpy” are specified in the tag <func>, respectively.
[0082]
FIG. 7 is a flowchart illustrating a procedure for generating a new debug application. In the following, each file in FIG. 5 will be described as an example. When the user sets the overload tag function setting file 133 (newappl.xml) in the environment variable OVR_XML and starts the command dbgcc with the new application source file (newappl.c) as an argument, the compiler 110 with a debug function is first started. Is started and the command input by the command analysis unit 111 is analyzed (step S701). Specifically, parameters and syntax are analyzed to determine whether the input command is grammatically correct.
[0083]
Next, the syntax analysis unit 112 reads the new application source file 131 (newappl.c) (step S702), and performs syntax analysis of the C language source code described in the source file 131 (step S703). Specifically, the syntax analysis unit 112 analyzes the C language source code according to the C language grammar, and generates a derivation tree, a syntax tree, and the like.
[0084]
Then, the command analyzer 111 checks the setting contents of the environment variable OVR_XML (step S704). If nothing is set in the environment variable OVR_XML, the overload tag function is not processed and a tag is added as a memory access verification code to the function entry and exit of the source file 131 (step S706). The object code of the new application is generated from the tagged source file 131 and stored in the HD 130 as the object file 139 (step S707).
[0085]
On the other hand, if the file name (newappl.xml) of the overload tag function setting file 133 is set in the environment variable OVR_XML in step S704, the overload tag function processing unit 113 performs overload tag function processing and code generation. The code generation processing by the unit 115 is performed to generate an object code for the new application, and the object file 139 is stored in the HD 130 (step S705).
[0086]
Then, the object file 139 described in the generated object code of the new application 317, the ECS function library 136, and the standard function library 137 are linked to generate the execution format file 132 of the new application for debugging 317 ( Step S708).
[0087]
Next, the overload tag function process and the code generation process performed in step S705 described above will be described. FIG. 8 is a flowchart showing the procedure of overload tag function processing and code generation processing.
[0088]
First, the overload tag function processing unit 113 reads the overload tag function setting file 133 (newappl.xml) set in the environment variable OVR_XML (step S801). Then, the overload tag function processing unit 113 refers to the <func> tag of the overload tag function setting file 133 (newappl.xml) and lists all the functions to be replaced with the overload tag function (step S802). Then, an intermediate source file 138 is generated in the HD 130, and the contents of the source file 131 (newappl.c) are copied to the intermediate source file 138 (step S803).
[0089]
Next, the overload tag function processing unit 113, as shown in FIG. 5, in the intermediate source file 138 copied from the source file 131 (newappl.c), the function name “ecs_jobmode” specified by the <func> tag. ”Is replaced with the overload tag function“ ecs_jobmode_ ”(step S804). The overload tag function name is determined by adding “_” to the function name described in the source file 131 as shown in FIG. 5, but the overload tag function corresponding to each function is defined. The name of the overload tag function can be arbitrarily determined.
[0090]
At the time of replacement, the first argument and the second argument of the overload tag function ecs_jobmode_ are added, and the argument of the original function ecs_jobmode is described after the third argument. Here, the first argument of the overload tag function specifies the source file name (newappl.c) for displaying the verification result, and the second argument is the number of lines of the replaced function in the source file 131. This is also specified for displaying the verification result.
[0091]
Such replacement of the function with the overload tag function is repeated for all the functions listed in step S802 (step S805). As a result, as shown in FIG. 5, the standard function strcppy is also replaced with the overload tag function strcppy_, and the ECS service function ecs_msgalloc is replaced with the overload tag function ecs_msgalloc_.
[0092]
Next, the code generation unit 115 causes the directory path of the overload tag function include file 134 and the overload tag function source file 135 from the attribute “path” of the <dbgcc> tag of the overload tag function setting file 133 (newappl.xml). Are obtained from the attribute “include” of the <incfile> tag, and the overload tag function include file 134 (ecs_ovrlfunc.h) is inserted at the beginning of the intermediate source file 138 (step S806). . Also, the code generation unit 115 acquires the overload tag function source file name from the attribute “source” of the <incfile> tag, and inserts the overload tag function source file 135 (ecs_ovrlfunc.c) after the intermediate source file 138. (Step S807).
[0093]
Then, the code generation unit 115 converts the source code of the intermediate source file 138 into which the overload tag function include file 134 and the overload tag function source file 135 are inserted into object code in the same processing procedure as that of a normal compiler. Then, the object file 139 (newappl.o) of the new application for debugging is generated (step S808). The object file 139 is linked to the ECS function library 136 (ecs.lib) and the standard function library 137 (standard.lib) by the linker 120 as described in step S708 of FIG. A file 132 (newappl.exe) is generated.
[0094]
Next, the overload tag function source file 135 will be described in detail. In the debugging device 100 according to the first embodiment, the overload tag function source file 135 needs to be created in advance by the user before executing the dbgcc command. FIG. 9 is an explanatory diagram showing an example of details of the overload tag function source file 135. FIG. 9 shows details of the memory access tracking process in the overload tag function source file 135 shown in FIG.
[0095]
In the overload tag function, first, the replacement source function is executed, and then a memory tracking process for checking the state transition of the memory is executed according to the processing contents of the memory access of the function.
[0096]
Here, the state transition of the memory area will be described. FIG. 10 is an explanatory diagram showing the relationship between memory state transition and memory access. In FIG. 10, the initial state is a state in which no area is secured or initialized in the memory, and memory securing access is possible for the memory in the initial state, but an error occurs if other accesses are made. It becomes. The secured state is a state in which an area is secured in the memory but has not been initialized yet. The memory in the reserved state can be released or accessed for writing, but an error occurs if another access is made. The written state is a state where an area is secured in the memory and initialized. Although write access, read access, and open access are possible for a memory in a write state, an error occurs if another access is performed.
[0097]
Further, the state transition of the memory is as follows. As shown in FIG. 10, when a secure access is made to the memory in the initial state, the memory is in a secured state. Further, when a write access is made to the secured memory, the memory is in a write state. When read access or write access is made to the memory in the write state, the memory remains in the write state. When open access is made to a memory in a reserved state or a written state, the memory is in an initial state. The debugging application generation program executed by the debugging device 100 according to the first embodiment includes the following memory state event function for checking the state transition of the memory in order to check the state transition. Here, the first argument addr is the start address of the memory area to be inspected, and the second argument indicates the size of the memory area to be inspected.
[0098]
(1) event_alloc (char * addr, int size)
A memory allocation event is generated in an area in the range from the memory address addr to size bytes, and it is checked whether the memory state transition is normal. When the memory state transitions from the initial state to the secured state, a normal return value is returned. Otherwise, an abnormal return value is returned. The return value of the abnormality is a return value that varies depending on the state of the transition source.
[0099]
(2) event_read (char * addr, int size)
A memory read event is generated in an area in the range from the memory address addr to size bytes, and it is checked whether or not the memory state transition is normal. A normal return value is returned when the memory state transitions from the write state to the write state, and an abnormal return value is returned otherwise. The return value of the abnormality is a return value that varies depending on the state of the transition source.
[0100]
(3) event_write (char * addr, int size)
A memory write event is generated in an area ranging from the memory address addr to size bytes, and it is checked whether the memory state transition is normal. When the memory state transitions from the writing state to the writing state, or when the memory state transitions from the secured state to the writing state, a normal return value is returned. Otherwise, an abnormal return value is returned. The return value of the abnormality is a return value that varies depending on the state of the transition source.
[0101]
(4) event_free (char * addr, int size)
A memory release event is generated in an area in the range from the memory address addr to size bytes, and it is checked whether or not the memory state transition is normal. When the memory state transitions from the secured state to the initial state, or when the memory state transitions from the write state to the initial state, a normal return value is returned. Otherwise, an abnormal return value is returned. The return value of the abnormality is a return value that varies depending on the state of the transition source.
[0102]
Each memory state event function obtains the memory state before and after the transition by issuing an OS system call that obtains the current state of the memory and the state before the transition to the region in the above range. . In the example of the overload tag function in FIG. 9, the replacement source ecs_jobmode function performs the process of reading the contents of the memory area pointed to by the pointers para1 and para2 of the argument, and then processes the process with the process ID specified by pid. It is an ECS service function that performs job mode setting processing. Therefore, in the overload tag function ecs_jobmode_ corresponding to the ecs_jobmode function, as shown in FIG. 9, first, after executing the replacement source ecs_jobmode function, the memory state event of event_read is performed for each memory area pointed to by para1 and pointer para2 A function is issued to check the state transition of each memory area.
[0103]
The replacement source strcppy function is a standard function that copies the contents of the area pointed to by the argument pointer src to the area indicated by the argument dest pointer. For this reason, in the overload tag function strcppy_ corresponding to the strcppy function, as shown in FIG. 9, first, after executing the replacement source strcppy function, the memory state event function of event_read is issued to the memory area pointed to by src. The memory state event function of event_write is issued to the memory area pointed to by dest to check the state transition of each memory area.
[0104]
Also, the replacement source ecs_msgalloc function is an ECS service function that secures the area pointed to by the argument pointer msg_area as a message area. For this reason, in the overload tag function ecs_msgalloc_ corresponding to the ecs_msgalloc function, as shown in FIG. 9, first, after executing the replacement source ecs_msgalloc function, the memory state event function of event_alloc is issued to the memory area pointed to by msg_area. Checking the state transition of the memory area.
[0105]
Therefore, when the execution format file 132 of the new application 317 for debugging is executed, the state transition of the memory is checked by the above-described overload tag function, and an error is displayed if it is abnormal. It is possible to verify the memory access of only a part of the functions without causing any contradiction.
[0106]
The memory area indicated by the argument pointer of each function is a memory area secured outside the function. By using such an overload tag function, in addition to the memory area accessed inside the function, It is possible to verify the memory access even for the memory area accessed outside the function in distinction from the internal memory area.
[0107]
As described above, in the debugging device 100 and the debugging application generation program according to the first embodiment, the overload tag function processing unit 113 replaces the control service function of the new application source file 131 with the overload tag function, and generates code. The unit 115 generates a new application debug execution format file 132 from the new application source file 131 replaced with the overload tag function, the overload tag function include file 134, and the overload tag function source file 135. Since the execution format file 132 for debugging is executed, the memory state transition by the memory access is verified even when the source code of the control service function or the standard function is not disclosed. Door can be, it is possible to perform accurate debugging.
[0108]
In the debugging device 100 and the debug application generation program according to the first embodiment, since the memory access verification is performed using the overload tag function, only the function necessary for the debugging work is replaced with the overload tag function. For this reason, it is possible to verify the memory access for only a part or a specific function in the new application 317, and to perform debugging work efficiently.
[0109]
In addition, memory access can be verified by replacing only a specific function with an overload tag function in this way, so that memory access outside the function and memory access inside the function can be distinguished, or depending on the CPU or compiler. The memory access can be verified by distinguishing the place and the independent place, and the debugging work can be performed more efficiently.
[0110]
The contents of each file described in the first embodiment are merely examples, and the contents are not particularly limited.
[0111]
(Embodiment 2)
The debugging device 100 and the debugging application generation program according to the first embodiment have been verified after the overload tag function include file 134 and the overload tag function source file 135 are created in advance by the user. The debug device 1100 and the debug application generation program according to the second form automatically generate the overload tag function include file 134 and the overload tag function source file 135 when compiling the source file of the new application, and An executable file is generated.
[0112]
FIG. 11 is a block diagram of a software configuration of the debugging device 1100 according to the second embodiment. A debugging device 1100 according to the second embodiment includes a compiler 1110 with a debugging function and a linker 120 as shown in FIG.
[0113]
The compiler 1110 with a debug function performs tag and overload tag function processing on the source file 131 in which the source code of the application stored in the hard disk (HD) 130 is described according to the designation of the command, and from the object code of the application. An object file is generated. As shown in FIG. 11, the compiler with debug function 1110 further includes a command analysis unit 111, a syntax analysis unit 112, an overload tag function code generation unit 1111, an overload tag function processing unit 113, and a tag addition unit 114. And a code generation unit 115.
[0114]
The compiler 1110 with a debug function according to the second embodiment is different from the compiler 110 with a debug function in the first embodiment in that an overload tag function code generation unit 1111 is provided. This is the same as the compiler 110 with a debugging function.
[0115]
The overload tag function code generation unit 1111 generates an overload tag function corresponding to the function specified in the overload tag function setting file 133 set by the user, and describes the declaration of each generated overload tag function The overload tag function include file 134 and the overload tag function source file 135 describing the processing of each overload tag function are generated in the HD 130.
[0116]
Similar to the debugging device 100 according to the first embodiment, the HD (hard disk) 130 stores a source file 131 and an overload tag function setting file 133. In the debugging apparatus 1100 according to the second embodiment, the debug execution format file 132, the intermediate source file 138, and the object file 139 are generated in the HD 130 during the generation process of the new debug application 317. Unlike the apparatus 100, the overload tag function include file 134 and the overload tag function source file 135 are also generated by the compiler 1110 with a debug function. The structure and contents of each file are the same as the file structure and contents described in the first embodiment.
[0117]
Next, a method for generating a new debugging application 317 and a memory access verification method using the debugging apparatus 1100 according to the second embodiment configured as described above and the debugging application generation program will be described. Regarding the command analysis processing by the command analysis unit 111, the syntax analysis processing of the source file 131 by the syntax analysis unit 112, and the link processing between the object file 139 and each library by the linker 120, the debugging apparatus 100 according to the first embodiment shown in FIG. This is the same as the processing procedure in the debug application generation program.
[0118]
FIG. 12 is a flowchart showing a procedure of overload tag function code generation processing, overload tag function processing, and code generation processing. First, the overload tag function processing unit 113 reads the overload tag function setting file 133 (newappl.xml) set in the environment variable OVR_XML (step S1201). Then, the overload tag function processing unit 113 refers to the <func> tag of the overload tag function setting file 133 (newappl.xml) and lists all the functions to be replaced with the overload tag function (step S1202).
[0119]
Next, the overload tag function code generation unit 1111 determines an overload tag function name corresponding to the listed function name, and an overload tag function include file 134 in which the declaration of each overload tag function is described. The load tag function source file 135 is generated and stored in the directory path specified by the overload tag function setting file 133 with the file name specified by the file 133 (step S1203).
[0120]
Here, generation processing of the overload tag function source file 135 by the overload tag function code generation unit 1111 will be described. As described in the first embodiment, the overload tag function appropriately selects a memory state event function according to the access method for the memory of the replacement source function, and verifies the state transition caused by the memory access. In other words, in the process of the function, when the read access is made to the memory area pointed to by the argument pointer, the memory transition state is checked by the event function of event_read after the function is executed, and the memory area pointed to by the argument pointer is stored. When write access is performed, the transition state of the memory is checked by an event function of event_write after the function is executed. Therefore, in the debugging device 1100 according to the second embodiment, an access method for the area indicated by the argument of a function that can be replaced with an overload tag function is held in advance in the function table.
[0121]
FIG. 13 is an explanatory diagram showing an example of such a function table. FIG. 13 records the access method to the memory area pointed to by each argument pointer for each of the functions ecs_jobmode, ecs_msgalloc, and strcppy that are the replacement source of the overload tag function shown in FIG. The overload tag function code generation unit 1111 refers to the function table for each function argument, determines read access, write access, reserved access, and release access, and determines the memory status event functions event_read, event_write, event_alloc, and event_free. The overload tag function source file 135 is generated by selecting from among them. Further, the overload tag function code generation unit 1111 describes the declaration of the generated overload tag function and generates the overload tag function include file 134.
[0122]
When the overload tag function include file 134 and the overload tag function source file 135 are generated in step S1203 of FIG. 12, an intermediate source file 138 is generated on the HD 130, and the contents of the source file 131 (newappl.c) are transferred to the intermediate source. Copy to file 138 (step S1204). Subsequent replacement of the target function with the overload tag function by the overload tag function processing unit 113, conversion to an object code by the code generation unit 115, and generation processing of the object file 139 (steps S1205 to S1209) are as follows. This is performed in the same manner as the procedure (steps S804 to S808) described with reference to FIG. 8 by the debug device 100 and the debug application generation program of the first embodiment. The generated object file 139 is linked with the ECS function library 136 (ecs.lib) and the standard function library 137 (standard.lib) by the linker 120, whereby the executable file 132 (newappl.lib) of the new application 317 for debugging is linked. exe) is generated.
[0123]
As described above, in the debug device 1100 and the debug application generation program according to the second embodiment, the overload tag function code generation unit 1111 uses the overload tag function source file 135 of the overload tag function for the control service function and the standard function. Since the overload tag function include file 134 is automatically generated, it is not necessary for the debug operator to create the overload tag function source file 135 and the overload tag function include file 134, and accurate debugging work can be efficiently performed. Can be done.
[0124]
In the debugging apparatus 1100 and the debugging application generation program according to the first and second embodiments, the case of generating a new application has been described. However, the present invention can also be applied to generation of other control services. is there.
[0125]
【The invention's effect】
  As described above, according to the first aspect of the present invention, even when the source code of the service function is not disclosed, if the function of the service function is known, the memory access is performed by the service verification function when the application is executed. The memory state can be verified, and even when some source code is unknown, an accurate debugging operation can be performed.In addition, according to the first aspect of the present invention, it is possible to accurately detect a failure due to memory allocation access, and to perform more accurate debugging work.
[0126]
Further, according to the invention of claim 2, it is possible to verify memory access in only a part of functions, and there is an effect that debugging work can be performed efficiently.
[0128]
  Claims3According to the present invention, it is possible to accurately detect a failure caused by memory write access and to perform more accurate debugging work.
[0129]
  Claims4According to the invention, it is possible to accurately detect a failure due to memory read access and to perform more accurate debugging work.
[0130]
  Claims5According to the invention, it is possible to accurately detect a failure caused by memory open access and to perform more accurate debugging work.
[0131]
  Claims6According to the present invention, even when performing memory access not only from a service function but also from a standard function whose source code is not disclosed, as long as the function of the standard function is known, the standard verification function can be The memory state can be verified, and even when only a standard function library is provided, an accurate debugging operation can be performed.
[0132]
  Claims7According to the present invention, even when the source code of the service function is not disclosed, the debugging operation can be efficiently performed without creating the service verification function source file by the debugging worker himself / herself. Play.
[0134]
  Claims8According to the present invention, when an application is executed, a failure due to memory write access can be accurately detected by a service verification function for verifying memory write access in which a source file is automatically generated, thereby enabling more accurate debugging work efficiently. The effect that it can be performed automatically is produced.
[0135]
  Claims9According to the present invention, when an application is executed, a failure caused by memory read access can be accurately detected by a service verification function for verifying memory read access in which a source file is automatically generated. The effect that it can be performed automatically is produced.
[0136]
  Claims10According to the present invention, when an application is executed, a failure due to memory free access can be accurately detected by a service verification function for verifying memory free access in which a source file is automatically generated. The effect that it can be performed automatically is produced.
[0138]
  Claims11According to the invention according to claim 1,10There is an effect that any one of the operations can be executed by a computer.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating a functional configuration of a debugging device according to a first embodiment;
FIG. 2 is a block diagram of a hardware configuration of the debugging device according to the first embodiment;
FIG. 3 is a block diagram illustrating a functional configuration of the multifunction peripheral according to the first embodiment;
FIG. 4 is a block diagram illustrating a relationship between a new application of the multifunction peripheral according to the first embodiment and a function call of a control service.
FIG. 5 is an explanatory diagram illustrating a file used and generated and a whole flow of the new debug application in the generation process of the new debug application in the debugging device according to the first embodiment;
6 is an explanatory diagram showing an example of the contents of an overload tag function setting file in FIG. 5 in the debugging device according to the first embodiment; FIG.
FIG. 7 is a flowchart of a process for generating a new debug application in the debugging device according to the first embodiment;
FIG. 8 is a flowchart showing a procedure of overload tag function processing and code generation processing in the debugging apparatus according to the first embodiment;
FIG. 9 is an explanatory diagram illustrating an example of details of an overload tag function source file in the debugging device according to the first embodiment;
FIG. 10 is an explanatory diagram illustrating a relationship between memory state transition and memory access in the multifunction peripheral according to the first embodiment;
FIG. 11 is a block diagram of a functional configuration of the debugging device according to the second embodiment;
FIG. 12 is a flowchart showing a procedure of overload tag function code generation processing, overload tag function processing, and code generation processing in the debugging apparatus according to the second embodiment;
FIG. 13 is an explanatory diagram of an example of a function table used in the debugging device according to the second embodiment;
[Explanation of symbols]
100,1100 Debugging device
110,1110 compiler
111 Command analyzer
112 Parsing section
113 Overload tag function processor
114 Tag adder
115 Code generator
120 linker
130 Hard disk (HD)
131 New application source file
132 Executable file for debugging
133 Overload tag function setting file
134 Overload tag function include file
135 Overload tag function source file
136 Control Service Function Library
137 Standard Function Library
138 Intermediate source file
139 Object file
201 Input device
202 display device
203 Controller
204 Communication device
205 RAM
300 MFP
301 Monochrome line printer
302 color line printer
303 Hardware resources
310 Software group
311 Printer app
312 Copy application
313 Fax application
314 Scanner application
315 Net file application
316 Process inspection app
317 New App
320 platform
321 General-purpose OS
322 SCS
323 SRM
324 ECS
325 MCS
326 OCS
327 FCS
328 NCS
330 applications
1111 Overload tag function code generator

Claims (11)

印刷部または撮像部を有するハードウェア資源を利用して画像情報処理にかかるアプリケーションと、前記アプリケーションから呼び出され前記ハードウェア資源の制御を行うサービス関数として定義される制御部とを記憶する記憶部と、プロセッサと、前記プロセッサが前記記憶部から前記アプリケーションと前記制御部とを読み出して、読み出した前記アプリケーションと前記制御部とをそれぞれプロセスとして実行し、前記アプリケーションのプロセスは、前記制御部に対して前記サービス関数の呼び出しを行って前記制御部から前記サービス関数の戻り値の受信を行うことにより前記制御部のプロセスとプロセス間通信を行う画像形成装置前記アプリケーションを検証用に生成する画像形成装置用アプリケーション生成装置で実行される画像形成装置用アプリケーション生成方法であって、
前記画像形成装置用アプリケーション生成装置は、前記サービス関数の呼び出しの記述を含む前記アプリケーションのアプリソースファイルと、前記サービス関数の呼び出し処理と前記サービス関数の呼び出しの際の引数と戻り値に使用されるメモリ領域の状態遷移の正当性を検証する検証処理とを実行するサービス検証関数の前記呼び出し処理と前記検証処理と戻り値を返す復帰処理が記述された検証関数ソースファイルと、前記サービス関数のオブジェクト形式のファイルを登録したサービス関数ライブラリとを記憶する第2記憶部、を備え、
関数処理手段が、前記第2記憶部に記憶された前記ソースファイルを読み出して、読み出した前記アプリソースファイルの前記サービス関数の呼び出しの記述を、前記サービス検証関数の呼び出しの記述に置換する関数処理ステップと、
コード生成手段が、前記第2記憶部に記憶された前記検証関数ソースファイルを読み出して、前記関数処理ステップによって前記サービス検証関数の呼び出しの記述に置換された前記アプリソースファイルに読み出した前記検証関数ソースファイルを連結してコンパイルし、コンパイルにより生成されたオブジェクトファイルと前記第2の記憶部に記憶された前記サービス関数ライブラリとをリンクすることにより実行形式の前記アプリケーションを生成するコード生成ステップと、
を含んだことを特徴とする画像形成装置用アプリケーション生成方法。
A storage unit that stores an application for image information processing using hardware resources having a printing unit or an imaging unit, and a control unit that is defined as a service function that is called from the application and controls the hardware resource; , A processor, the processor reads the application and the control unit from the storage unit, and executes the read application and the control unit as processes, respectively. image forming apparatus to generate the application of the control of the process and an image forming apparatus for performing inter-process communication by the call from the control unit performs performing the reception of the return value of the service function of the service functions for verification Execute on application generator An image forming apparatus for application generation method,
The application generating apparatus for the image forming apparatus is used for an application source file of the application including a description of the service function call, and an argument and a return value when the service function is called and the service function is called. A verification function source file in which the call process of the service verification function for executing the verification process for verifying the validity of the state transition of the memory area, the verification process, and a return process for returning a return value are described; A second storage unit for storing a service function library in which a file of a format is registered,
Function processing means, said second reading out the previous SL source file storage unit stored in the read calls description of the service functions of the application source files, functions to replace the call of description of the service verification function Processing steps;
Code generating means, said stored in the second storage unit reads the verification function source file, the verification function read the call the application source files substituted in the description of the service verification function by the function processing step A code generation step of linking and compiling source files , and generating the application in an executable format by linking the object file generated by compilation and the service function library stored in the second storage unit ;
A method for generating an application for an image forming apparatus, comprising:
入力手段が、検証対象の前記サービス関数の呼び出しの記述が指定された設定情報の入力を受け付ける入力ステップをさらに含み、
前記関数処理ステップは、前記アプリソースファイル前記サービス関数の呼び出しの記述の中から、前記設定情報に指定されたサービス関数の呼び出しの記述を、前記サービス検証関数の呼び出しの記述に置換することを特徴とする請求項1に記載の画像形成装置用アプリケーション生成方法。
The input means further includes an input step of receiving input of setting information in which a description of calling the service function to be verified is specified,
The function processing step, from the invocation of description of the service functions of the application source files, calls to description of the service function specified in the setting information, to replace the call of description of the service verification function The image forming apparatus application generation method according to claim 1, wherein the image forming apparatus application generation method is an image forming apparatus application generation method.
前記サービス検証関数は、前記メモリ領域に対する書き込みによる前記状態遷移を検証することを特徴とする請求項1または2に記載の画像形成装置用アプリケーション生成方法。The service verification function, the image forming device application generating method according to claim 1 or 2, characterized in that verifying the state transition by writing to the memory area. 前記サービス検証関数は、前記メモリ領域に対する読み込みによる前記状態遷移を検証することを特徴とする請求項1〜のいずれか一つに記載の画像形成装置用アプリケーション生成方法。The service verification function, the image forming device application generating method according to any one of claims 1-3 which by reading the memory areas, characterized in that verifying the state transition. 前記サービス検証関数は、前記メモリ領域の開放による前記状態遷移を検証することを特徴とする請求項1〜のいずれか一つに記載の画像形成装置用アプリケーション生成方法。The service verification function, the memory area claim 1 for image forming apparatus application generation method according to any one of 4, characterized in that verifying the state transition by the opening of. 前記アプリソースファイルには、さらに、プログラミング言語で予め提供される汎用的な関数である標準関数の呼び出しが記述され、
前記第2記憶部は、さらに、前記標準関数の呼び出し処理と前記標準関数の呼び出しの際の引数と戻り値に使用されるメモリ領域の状態遷移の正当性を検証する検証処理と戻り値を返す復帰処理を実行する標準検証関数の前記呼び出し処理と前記検証処理と前記復帰処理とが記述された標準検証関数ソースファイルと、前記標準関数のオブジェクト形式のファイルを登録した標準関数ライブラリとを記憶し、
前記関数処理ステップは、さらに前記アプリソースファイルの前記標準関数の呼び出しの記述を、前記標準検証関数の呼び出しの記述に置換し、
前記コード生成ステップは、さらに、前記第2記憶部に記憶された前記標準関数ソースファイルを読み出して、前記関数処理ステップによって前記標準検証関数の呼び出しの記述に置換された前記アプリソースファイルに読み出した前記検証関数ソースファイルを連結してコンパイルし、コンパイルにより生成されたオブジェクトファイルと前記第2の記憶部に記憶された前記標準関数ライブラリとをリンクすることにより実行形式の前記アプリケーションを生成することを特徴とする請求項1〜のいずれか一つに記載の画像形成装置用アプリケーション生成方法。
The application source file further describes a call to a standard function that is a general-purpose function provided in advance in a programming language.
The second storage unit further returns a verification process and a return value for verifying the validity of the state transition of the memory area used for the argument and return value when the standard function is called and the standard function is called. A standard verification function source file in which the calling process of the standard verification function for executing the return process, the verification process, and the return process are described; and a standard function library in which an object format file of the standard function is registered. ,
The function processing step further replaces the description of the standard function call in the application source file with the description of the standard verification function call ,
Wherein the code generating step further reads the standard functions source file stored in the second storage unit, read the application source files substituted with descriptions of invocations of the standard validation function by the function processing step The verification function source file is connected and compiled, and the executable application is generated by linking the object file generated by the compilation and the standard function library stored in the second storage unit. the image forming device application generating method according to any one of claims 1-5, characterized.
前記第2記憶部は、さらに、前記サービス関数の呼び出しの際の引数と前記メモリ領域に対するアクセス方法とを対応付けた関数テーブルを記憶し、
検証関数コード生成手段が、前記第2記憶部から前記関数テーブルを参照して、前記アプリソースファイルの前記サービス関数の呼び出しの記述に対応する前記アクセス方法に基づいて、前記サービス検証関数ソースファイルを生成し、前記第2記憶部に保存する検証関数コード生成ステップ
さらに含んだことを特徴とする請求項1〜6のいずれか一つに記載の画像形成装置用アプリケーション生成方法。
The second storage unit further stores a function table in which an argument at the time of calling the service function is associated with an access method for the memory area,
The verification function code generation means refers to the function table from the second storage unit, and determines the service verification function source file based on the access method corresponding to the description of the service function call in the application source file. Generating a verification function code to be generated and stored in the second storage unit ;
The application generating method for an image forming apparatus according to claim 1 , further comprising:
前記検証関数コード生成ステップは、前記サービス関数の処理内容に基づいて、前記メモリ領域に対する書き込みによる前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成することを特徴とする請求項に記載の画像形成装置用アプリケーション生成方法。The verification function code generating step, based on the processing content of the service function, to generate the service verification function source file containing a call of description of the service verification function for verifying the state transition by writing to the memory area The image forming apparatus application generation method according to claim 7 . 前記検証関数コード生成ステップは、前記サービス関数の処理内容に基づいて、前記メモリ領域に対する読み込みによる前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成することを特徴とする請求項7または8に記載の画像形成装置用アプリケーション生成方法。The verification function code generating step, based on the processing content of the service function, to generate the service verification function source file containing a call of description of the service verification function for verifying the state transition by reading to the memory area 9. The method for generating an application for an image forming apparatus according to claim 7 or 8 . 前記検証関数コード生成ステップは、前記サービス関数の処理内容に基づいて、前記メモリ領域の開放による前記状態遷移を検証する前記サービス検証関数の呼び出しの記述を含む前記サービス検証関数ソースファイルを生成することを特徴とする請求項7〜9のいずれか一つに記載の画像形成装置用アプリケーション生成方法。The verification function code generating step, based on the processing content of the service function, to generate the service verification function source file containing a call of description of the service verification function for verifying the state transition due to the opening of the memory area 10. The method for generating an application for an image forming apparatus according to any one of claims 7 to 9 . 請求項1〜10のいずれか一つに記載された方法をコンピュータに実行させるプログラム。The program which makes a computer perform the method as described in any one of Claims 1-10 .
JP2001388320A 2001-12-20 2001-12-20 Application generating method for image forming apparatus and program causing computer to execute the method Expired - Fee Related JP4080739B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001388320A JP4080739B2 (en) 2001-12-20 2001-12-20 Application generating method for image forming apparatus and program causing computer to execute the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001388320A JP4080739B2 (en) 2001-12-20 2001-12-20 Application generating method for image forming apparatus and program causing computer to execute the method

Publications (2)

Publication Number Publication Date
JP2003186700A JP2003186700A (en) 2003-07-04
JP4080739B2 true JP4080739B2 (en) 2008-04-23

Family

ID=27596875

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001388320A Expired - Fee Related JP4080739B2 (en) 2001-12-20 2001-12-20 Application generating method for image forming apparatus and program causing computer to execute the method

Country Status (1)

Country Link
JP (1) JP4080739B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4712583B2 (en) * 2006-03-20 2011-06-29 富士通株式会社 Software verification program, software verification apparatus, and software verification method
JP2014052753A (en) * 2012-09-06 2014-03-20 Nec Corp Memory management device, and memory management method

Also Published As

Publication number Publication date
JP2003186700A (en) 2003-07-04

Similar Documents

Publication Publication Date Title
US8094330B2 (en) Image forming apparatus that can launch external applications selectively after shipment of the apparatus
US7554685B2 (en) Image forming apparatus, information processing apparatus, program execution method and program producing method
US7636172B2 (en) Image forming apparatus, information processing apparatus and version check method using an API from an application
US7533381B2 (en) Image forming apparatus and method for operating image forming apparatus by using remote application
JP4365148B2 (en) Image forming apparatus, wrapping processing method, and program
US8903704B2 (en) Information processing device, information processing system, and recording medium
JP2004185595A (en) Information processor and program therefor
JP2004118237A (en) Image forming apparatus and application installing method
US20030133136A1 (en) Method for generating and launching application for information processing apparatus and image forming apparatus
US20030140174A1 (en) Method for generating application for information processing apparatus and image forming apparatus
JP4198551B2 (en) Image forming apparatus and program execution method
JP4037079B2 (en) Image forming apparatus, process monitoring method, and program causing computer to execute the method
JP2004185593A (en) Image forming apparatus and application execution method
JP4080739B2 (en) Application generating method for image forming apparatus and program causing computer to execute the method
JP2006311590A (en) Image forming apparatus and application installing method
JP4334214B2 (en) Image forming apparatus, application program, and recording medium
JP4133085B2 (en) Image forming apparatus and customized program test method
JP4542180B2 (en) Image forming apparatus, program, and recording medium
JP2002342119A (en) Method for generating program for image forming device, method for measuring coverage for image forming device, program for making computer perform these methods, instrument and program for measuring coverage, and information recording medium
JP5036770B2 (en) Apparatus, wrapping processing method, and program
JP2010218469A (en) Information processor, information processing method, program and recording medium
CN100535861C (en) Imaging device
JP2006271005A (en) Image forming apparatus and method for installing application
JP4334213B2 (en) Information processing apparatus, application program, and recording medium
JP2003263321A (en) Image forming device application generation method, image forming device application starting method, image forming device application generation program, image forming device, and image forming device application development recording medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040621

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070910

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120215

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130215

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130215

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140215

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees