(57)【要約】      （修正有）【課題】関数の複数のバージョンに適用される当該関数のソースコードに依存せずに欠陥関数を検査する。【解決手段】プリセットされた欠陥関数を特定することと、プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することと、異常が存在すると、プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、異常が存在しないと、プリセットされた欠陥関数を実行することとを含む。パラメータに異常が存在するプリセットされた欠陥関数をフィルタリングしてから、プリセットされた欠陥関数のパラメータの異常状況に応じて、プリセットされた欠陥関数を実行するか否かを選択するため、欠陥関数のソースコードを取得せずに欠陥関数を修復可能である。【選択図】図１
2019160270.tif 000002
【特許請求の範囲】
【請求項１】
欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する方法において、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、
異常が存在しないと、前記プリセットされた欠陥関数を実行することとを含むことを特徴とする欠陥関数を検査する方法。
【請求項２】
異常が存在しないと、前記プリセットされた欠陥関数を実行した後に、前記方法は更に、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することは、
インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられることを特徴とする請求項２に記載の方法。
【請求項４】
プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記プリセットされた欠陥関数を特定する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含むことを特徴とする請求項３に記載の方法。
【請求項６】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、前記方法は更に、
検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放することを含むことを特徴とする請求項５に記載の方法。
【請求項７】
関数の複数のバージョンに適用される当該欠陥関数を検査する方法において、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数を実行することと、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含むことを特徴とする欠陥関数を検査する方法。
【請求項８】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査する前に、前記方法は更に、
インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加することを含み、前記検査関数は前記プリセットされた欠陥関数的のパラメータ及び／又は戻り値を検査するために用いられることを特徴とする請求項７に記載の方法。
【請求項９】
プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記プリセットされた欠陥関数を特定する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、前記方法は更に、
前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放することを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する装置において、
プリセットされた欠陥関数を特定するように配置される第１の位置特定モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第１の検査モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第１の異常返信モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュールとを含むことを特徴とする欠陥関数を検査する装置。
【請求項１３】
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査するように配置される第２の検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第２の異常返信モジュールとをさらに含むことを特徴とする請求項１２に記載の装置。
【請求項１４】
前記第１の検査モジュールは、
インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられることを特徴とする請求項１３に記載の装置。
【請求項１５】
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第２の位置特定モジュールをさらに含むことを特徴とする請求項１２に記載の装置。
【請求項１６】
前記プリセットされた欠陥関数を特定する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含むことを特徴とする請求項１４に記載の装置。
【請求項１７】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項１６に記載の装置。
【請求項１８】
関数の複数のバージョンに適用される当該欠陥関数を検査する装置において、
プリセットされた欠陥関数を特定するように配置される第１の位置特定モジュールと、
前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査するように配置される検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュールとを含むことを特徴とする欠陥関数を検査する装置。
【請求項１９】
前記検査モジュールは、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び／又は戻り値を検査するために用いられることを特徴とする請求項１８に記載の装置。
【請求項２０】
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第２の位置特定モジュールをさらに含むことを特徴とする請求項１８に記載の装置。
【請求項２１】
前記プリセットされた欠陥関数を特定する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールをさらに含むことを特徴とする請求項１８に記載の装置。
【請求項２２】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項２１に記載の装置。
【請求項２３】
サーバにおいて、
一つ以上のプロセッサと、
一つ以上のプログラムを記憶するための記憶装置とを含み、
前記一つ以上のプログラムが前記一つ以上のプロセッサにより実行された場合、前記一つ以上のプロセッサに請求項１〜１１のいずれか一項に記載の方法を実施させることを特徴とするサーバ。
【請求項２４】
コンピュータプログラムが記憶されたコンピュータの読み取り可能な記憶媒体において、当該プログラムがプロセッサにより実行された場合、請求項１〜１１のいずれか一項に記載の方法を実施することを特徴とするコンピュータの読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ技術分野に関し、具体的には、欠陥関数を検査する方法、装置及びサーバに関する。
【背景技術】
【０００２】
カーネルはオペレーティングシステムのコアであり、システムのプロセス、メモリ、デバイスドライバ、ファイル及びネットワークシステム等の管理を担い、システムの性能と安定性を決定する。カーネルを交換して且つシステムを再起動するカーネルバグ修復コード方法を採用すると、高い信頼性の要求を満たすことができないため、カーネルの動作過程において、修復対象とするカーネル機能を直ちにバージョンアップ可能なことをサポートするバグ修復コード技術が求められる。また、アプリケーションプログラムは、１つ又は複数の特定のタスクを完成させるためにオペレーションシステム上に開発されて実行されるコンピュータプログラムである。しかし、アプリケーションプログラムは応用過程において、欠陥がある程度存在する可能性があり、後続のメンテナンスの時に、当該欠陥を修復するプログラムを作成してバグ修復コード又は検査関数とする必要がある。
【０００３】
上記問題について、従来のバグ修復コード技術では、メモリバグ修復コードの形式でカーネル又はアプリケーションプログラムの実行過程においてカーネル又はアプリケーションプログラムの機能を修復し、カーネル全体又はアプリケーションプログラムを交換する必要がなく、システムの信頼性の向上に寄与する。
【発明の概要】
【０００４】
しかし、このようなホットバグ修復コード技術は基本的にいずれも欠陥関数のソースコードを必要とし、欠陥関数のソースコードを直接修正してから、欠陥関数を改めてコンパイルした後にローディングして、元の欠陥関数を交換する。このような方法では、ソースコードがない場合に、修復することができなくなる。
【０００５】
本発明の実施例は、背景技術における一項又は複数項以上の技術的問題を解決又は緩和するために、関数のソースコードに依存せずに欠陥関数を検査する方法、装置及びサーバを提供し、少なくとも一種の有益な選択を提供する。
【０００６】
第１の態様で、本発明の実施例は関数の複数のバージョンに適用される欠陥関数を検査する方法を提供し、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、
異常が存在しないと、前記プリセットされた欠陥関数を実行することとを含む。
【０００７】
第１の態様と結び付けて、本発明は第１の態様の第１の実施形態では、異常が存在しないと、前記プリセットされた欠陥関数を実行した後に、前記方法は更に、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含む。
【０００８】
第１の態様と結び付けて、本発明は第１の態様の第２の実施形態では、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられる。
【０００９】
第１の態様と結び付けて、本発明は第１の態様の第３の実施形態では、プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
【００１０】
第１の態様と結び付けて、本発明は第１の態様の第４の実施形態では、前記欠陥関数を修復する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
【００１１】
第１の態様と結び付けて、本発明は第１の態様の第５の実施形態では、前記方法は更に、
検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
【００１２】
第２の態様で、本発明の実施例は関数の複数のバージョンに適用される当該欠陥関数を検査する方法を提供し、前記方法は
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数を実行することと、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含む。
【００１３】
第２の態様で、本発明は第２の態様の第１の実施形態では、前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、前記方法は更に、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数的のパラメータ及び／又は戻り値を検査するために用いられる。
【００１４】
第２の態様で、本発明は第２の態様の第２の実施形態では、プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
【００１５】
第２の態様で、本発明は第２の態様の第３の実施形態では、前記欠陥関数を修復する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
【００１６】
第２の態様で、本発明は第２の態様の第４の実施形態では、前記欠陥関数を修復した後に、前記方法は更に、
前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
【００１７】
第３の態様で、本発明の実施例は欠陥関数を検査する装置を提供し、前記装置は、
プリセットされた欠陥関数を特定するように配置される第１の位置特定モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第１の検査モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第１の異常返信モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュールとを含む。
【００１８】
第３の態様と結び付けて、本発明は第３の態様の第１の実施形態では、前記装置は更に、
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査するように配置される第２の検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第２の異常返信モジュールとを含む。
【００１９】
第３の態様と結び付けて、本発明は第３の態様の第２の実施形態では、前記第１の検査モジュールは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられ、
前記第２の検査モジュールは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置される第２のジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられる。
【００２０】
第３の態様と結び付けて、本発明は第３の態様の第３の実施形態では、前記装置は更に、
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第２の位置特定モジュールを含む。
【００２１】
第３の態様と結び付けて、本発明は第３の態様の第４の実施形態では、前記装置は更に、
前記欠陥関数を修復する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含む。
【００２２】
第３の態様と結び付けて、本発明は第３の態様の第５の実施形態では、前記装置は更に、
前記欠陥関数を修復した後に、検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールを含む。
【００２３】
第４の態様で、本発明の実施例は欠陥関数を検査する装置を提供し、前記装置は、
第プリセットされた欠陥関数を特定するように配置される第１の位置特定モジュールと、
前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査するように配置される検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュールとを含む。
【００２４】
第４の態様と結び付けて、本発明の第４の態様の第１の実施形態では、前記検査モジュールは、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び／又は戻り値を検査するために用いられる。
【００２５】
第４の態様と結び付けて、本発明の第４の態様の第２の実施形態では、前記装置は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数が親関数における位置を特定するように配置される第２の位置特定モジュールを含む。
【００２６】
第４の態様と結び付けて、本発明の第４の態様的第３の実施形態では、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含む。
【００２７】
第４の態様と結び付けて、本発明の第４の態様の第４の実施形態では、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールを含む。
【００２８】
第５の態様で、本発明の実施例はサーバを提供し、以下を含む：
前記機能はハードウェアにより実現してもよく、ハードウェアで対応するソフトウェアを実行することにより実現してもよい。前記ハードウェア又はソフトウェアは一つ以上の上記機能に対応するモジュールを含む。
【００２９】
一つの可能な設計において、サーバの構造ではプロセッサとメモリを含み、前記メモリはサーバが上記第１の態様における欠陥関数を検査する方法を実行することをサポートするプログラムを記憶するために用いられ、前記プロセッサは前記メモリに記憶されたプログラムを実行するために用いられるように配置される。前記サーバは更に通信インターフェースを含んでもよく、サーバと他の装置又は通信ネットワークとの通信のために用いられる。
【００３０】
第６の態様で、本発明の実施例はコンピュータの読み取り可能な記憶媒体を提供し、欠陥関数を検査する装置に用いられるコンピュータソフトウェアコマンドを記憶するために用いられ、上記第１の態様における欠陥関数を検査する方法を実行するための欠陥関数を検査する装置に係るプログラムを含む。
【００３１】
上記技術案における一つの技術案は、本発明の実施例の技術案はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、プリセットされた欠陥関数のパラメータの異常状況に応じて、プリセットされた欠陥関数を実行するか否かを選択する。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できるという利点又は有益な効果を有する。
【００３２】
上記技術案における別の技術案は、本発明の実施例の技術案は戻り値及び／又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、まずプリセットされた欠陥関数を実行し、次にプリセットされた欠陥関数の戻り値及び／又はパラメータの異常状況を検査し、戻り値及び／又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングする。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できるという利点又は有益な効果を有する。
【００３３】
上記技術案における別の技術案は、本発明の実施例の技術案はプリセットされた欠陥関数のソースコードを取得する必要がなく、且つプリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、そして安定性と互換性が良好であるという利点又は有益な効果を有する。
【００３４】
上記説明は明細書の目的のためのものに過ぎず、いかなる方式で制限されるものではない。上述した模式的な態様、実施形態及び特徴に加えて、図面の参照と以下の詳細な記述により、本発明の更なる態様、実施形態及び特徴は分かりやすくなる。
【図面の簡単な説明】
【００３５】
図面では、特に断りがない限り、複数の図面において同一の符号は同一又は類似する部品又は要素を表す。これらの図面は必ずしも比率に従って描画されるものではない。これらの図面は本発明により開示するいくつかの実施形態を説明するものに過ぎず、本発明の範囲を制限するものではないと理解すべきである。
【図１】本発明の実施例１の欠陥関数を検査する方法のフローチャートである。
【図２】本発明の実施例２の欠陥関数を検査する方法のフローチャートである。
【図３】本発明の実施例３の欠陥関数を検査する方法のフローチャートである。
【図４】本発明の実施例５の欠陥関数を検査する装置の模式図である。
【図５】本発明の実施例６の欠陥関数を検査する装置の模式図である。
【図６】本発明の実施例７の欠陥関数を検査する装置の模式図である。
【図７】本発明の実施例８の欠陥関数を検査する装置の模式図である。
【図８】本発明の実施例９のサーバの模式図である。
【発明を実施するための形態】
【００３６】
後述では、単にいくつかの例示的な実施例について簡単に説明する。当業者であれば理解できるように、本発明の思想又は範囲から逸脱しない場合、様々な方式により記述される実施例を修正することが可能である。従って、図面と記述は、本質的に例示的であり、制限的ではないと考えられる。
【００３７】
実施例１
本発明の実施例は欠陥関数を検査する方法を提供する。図１に示すように、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む：
Ｓ１０１、プリセットされた欠陥関数を特定する。
プログラマは通常の検出技術によりどれらの関数に欠陥が存在するかを特定することができるため、本発明の実施例は具体的に実施する時に、直接プリセットされた欠陥関数のアドレスを探すことによって、プリセットされた欠陥関数を特定することができる。
【００３８】
Ｓ１０２、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査し、前記プリセットされた欠陥関数に異常が存在する場合、工程Ｓ１０３を実行し、一方、前記プリセットされた欠陥関数に異常が存在しない場合、工程Ｓ１０４を実行する。
【００３９】
ここで、工程Ｓ１０２は、インラインフック（ｉｎｌｉｎｅｈｏｏｋ）方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられる。
【００４０】
以下に、ｉｎｌｉｎｅｈｏｏｋ方法について簡単に説明する。当該ｉｎｌｉｎｅｈｏｏｋ方法の原理は、欠陥関数の先頭のいくつかのコマンドを解析し、このいくつかのコマンドを配列にコピー（ｃｏｐｙ）して記憶し、続いて一つの検査関数を呼び出すためのいくつかのコマンドで交換する。元の欠陥関数を実行しようとすれば、検査関数の処理が完了した後に、この前に記憶された先頭のいくつかのコマンドを再び実行し、そして先頭のいくつかのコマンドの後のアドレスにジャンプして実行し続ける。本発明の実施例と結び付けて、本発明の実施例における検査関数をローディングする方法はｉｎｌｉｎｅｈｏｏｋ方法を採用して実現することができる。
【００４１】
ここで、本発明の実施例はプリセットされた欠陥関数を初めて修復する時に、プリセットされた欠陥関数のプリセットされた行のコード、例えば、第１行のコードを検査関数にジャンプするコマンドに修正する。これにより、検査関数とプリセットされた欠陥関数とをバインディングさせる。そして、これからプリセットされた欠陥関数を実行するたびに、いずれもまず検査関数を実行し、検査関数にプリセットされた欠陥関数のパラメータが異常であるか否かを検査させる。
【００４２】
あるプリセットされた欠陥関数に対して、欠陥関数を直接実行すれば、システムのクラッシュ等の危険が発生する恐れがあり、従って、欠陥関数を実行する前に、欠陥関数に異常のパラメータが存在するか否かを先に検査し、そして異常のパラメータが存在する欠陥関数をフィルタリングする必要がある。
【００４３】
Ｓ１０３、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
例えば、プリセットされた欠陥関数Ａの第１行のコードを実行する時に、第１行のコードがすでに検査関数Ｂにジャンプするコマンドに修正されたため、この場合に検査関数Ｂにジャンプし、そして検査関数Ｂによりプリセットされた欠陥関数Ａのパラメータを検査する。関数Ａのパラメータが異常であると発見すると、例えば関数Ａの正常のパラメータ値が１０００よりも小さいはずであるが、異常が発生した場合に、関数Ａのパラメータ値が１０００よりも大きくなり、この場合に検査関数はプリセットされた欠陥関数に戻らず、上位層呼び出し関数へエラーコードを返信し、例えば−２を返信する。それにより上位層呼び出し関数はプリセットされた他のロジックに基づいてプリセットされた欠陥関数Ａを修復し、例えばプリセットされた欠陥関数Ａを交換する。当業者であれば分かるように、検査関数を実行する時に、それが欠陥関数と同一の環境にあるため、異常が発生せずに欠陥関数から退出することは実現できる。
【００４４】
Ｓ１０４、前記プリセットされた欠陥関数を実行する。
プリセットされた欠陥関数のパラメータに異常が存在しないと、プリセットされた欠陥関数を実行することができることを意味し、この場合、検査関数を実行し終えた後に、プリセットされた欠陥関数に戻り、続いて修正されたプリセットされた行のコードの次の行のコードを実行する。例えば、プリセットされた行のコードが第１行のコードであると、検査関数を実行し終えた後に、プリセットされた欠陥関数に戻り、プリセットされた欠陥関数の第２行のコードを実行しはじめる。
それに対して、検査関数が欠陥関数のパラメータを検査する時にパラメータの異常が発見しないと、当該欠陥関数を実行し続ける。
【００４５】
なお、本発明の実施例はプリセットされた欠陥関数のプリセットされた行のコードを修正する時に、プリセットされた行のコードの基に直接修正することではなく、まずプリセットされた行のコードをバッファ領域に記憶し、次に検査関数にジャンプしたコマンドをプリセットされた行の位置に挿入することであるが、本明細書では、理解の便宜上、上記表記方式を採用するといことに注意すべきであり、検査関数がプリセットされた関数のパラメータを検査し終わった時に、パラメータに異常がないと、この場合にバッファ領域に記憶されたプリセットされた行のコードを実行し、その後プリセットされた欠陥関数に戻ってプリセットされた行の次の行のコードを実行する。例えば、プリセットされた行のコードが第１行のコードであると、欠陥関数を初めて修復する時に、第１行のコードをバッファ領域に記憶し、そして第１行に検査関数にジャンプするコマンドを挿入し、プリセットされた欠陥関数を実行しようとする時に、まず検査関数にジャンプするコマンドを実行し、次に検査関数にジャンプし、検査関数により異常のパラメータが存在するか否かを検査し、パラメータに異常が存在すると、上位層呼び出し関数にエラーを示す情報を返信し、パラメータに異常が存在しないと、バッファ領域に記憶された第１行のコードを実行し、その後プリセットされた欠陥関数に戻って第２行のコードを実行する。
【００４６】
実際には、本発明の実施例はフィルタリングのメカニズムを採用し、カーネル又はアプリケーションプログラムを修復する時に、その中のプリセットされた欠陥関数をフィルタリングすることにより修復の目的を達成する。プリセットされた欠陥関数を修復する時に、プリセットされた欠陥関数がどのような欠陥タイプであるかを問わずに直接プリセットされた欠陥関数に対して全体交換を行うと、全体交換を行う時にプリセットされた欠陥関数のソースコードを取得する必要があるだけでなく、さらにプリセットされた欠陥関数のソースコードに応じて別の一セットのコードを改めて作成してプリセットされた欠陥関数を交換する必要があり、これにより修復の効率に影響を与えることは言うまでもない。従って、本発明の実施例はプリセットされた欠陥関数を保留する前提で、プリセット関数を修復することができる。
【００４７】
一般的には、保留してもプログラム全体に厳しい結果をもたらさない又は関数の欠陥が比較的に容易に特定できるプリセットされた欠陥関数等は、保留できる欠陥関数であり、例えば、加算、減算を計算する欠陥関数であり、また、例えば、コードが短くて十行のコードのみを有するような欠陥関数である。
【００４８】
本発明の実施例に係る修復は欠陥関数の実行を停止し、そして上位層呼び出し関数にジャンプし、且つ上位層呼び出し関数にエラーコードをフィードバックすることである。
本発明の実施例に係る検査関数は即ちバグ修復コードを指し、通称ではパッチである。
【００４９】
本発明の実施例の技術案は、パラメータに異常が存在するプリセットされた欠陥関数をフィルタリングし、そしてプリセットされた欠陥関数のパラメータの異常状況に応じてプリセットされた欠陥関数を実行するか否かを選択し、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できる。
【００５０】
また、本発明の実施例の技術案は、プリセットされた欠陥関数のソースコードを取得する必要がなく、且つプリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、安定性と互換性が良好である。
【００５１】
実施例２
実施例１の基に、本発明の実施例は欠陥関数を検査する方法を提供する。図２に示すように、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む：
Ｓ２０１、プリセットされた欠陥関数を特定する。
上記工程Ｓ２０１は実施例１の工程Ｓ１０１に対応する。
【００５２】
Ｓ２０２、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査する。
上記工程Ｓ２０２は実施例１の工程Ｓ１０２に対応する。
【００５３】
Ｓ２０３、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
上記工程Ｓ２０３は実施例１の工程Ｓ１０３に対応する。
【００５４】
Ｓ２０４、異常が存在しないと、前記プリセットされた欠陥関数を実行する。
上記工程Ｓ２０４は実施例１の工程Ｓ１０４に対応する。
【００５５】
Ｓ２０５、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査する。
ここで、工程Ｓ２０５は、インラインフック（ｉｎｌｉｎｅｈｏｏｋ）方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられる。
Ｉｎｌｉｎｅｈｏｏｋ方法は実施例１を参照し、ここでは説明を省略する。
【００５６】
Ｓ２０６、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
【００５７】
欠陥関数を実行する時にもたらす不良結果をできる限りに回避するために、プリセットされた欠陥関数を実行する前にプリセットされた欠陥関数のパラメータを検査することができる場合があり、パラメータに異常が存在しないと、プリセットされた欠陥関数を実行し終えた時に、プリセットされた欠陥関数の戻り値及び／又はパラメータを検査する。例を挙げると、プリセットされた欠陥関数を初めて修復する時に、プリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするコマンドに修正する。例えば、プリセットされた欠陥関数の第１行のコードを検査関数にジャンプするコマンドに修正し、前記検査関数にジャンプするコマンドは、このように欠陥関数の第１行のコードを実行する時に、検査関数にジャンプし、検査関数によりプリセットされた欠陥関数におけるパラメータに異常が存在するか否かを検査し、異常が存在すると、その上位層呼び出し関数に戻り、この場合に戻り値及び／又はパラメータを再び検査する必要がないことは明らかであり、パラメータに異常が存在しないと、プリセットされた欠陥関数を呼び出してプリセットされた欠陥関数を実行し、そしてプリセットされた欠陥関数の戻り値及び／又はパラメータを受信し、戻り値及び／又はパラメータに異常が存在するか否かを検査し、戻り値及び／又はパラメータに異常が存在しないと、プリセットされた欠陥関数に戻り、そして他の関数を順に実行し、その戻り値及び／又はパラメータが異常であれば、戻り値及び／又はパラメータの状況により前記欠陥関数の戻り値及び／又はパラメータに対して他の処理を行い、例えば戻り値及び／又はパラメータを修正する。
【００５８】
一つの実施形態によれば、工程Ｓ２０４において、当該プリセットされた欠陥関数を呼び出す方式で当該関数を実行してもよく、それは呼び出した後に、結果は検査関数に戻るため、当該２回目のジャンプ工程を省略することができるからである。
【００５９】
また、前記プリセットされた欠陥関数のタイプは一般関数とサブ関数を含む。
前記プリセットされた欠陥関数のタイプが一般関数であると、直接以上の実施例に記載の工程に従って修復を行い、一方、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、プリセットされた欠陥関数を特定した後に、更に前記親関数のインデックスｉｎｄｅｘに基づいて前記サブ関数の親関数における位置を特定することができる。
【００６０】
サブ関数の親関数にける位置を特定した後に、他の実行工程は本発明の実施例１と実施例２に対応する。例えば、実施例１に対応して、サブ関数のパラメータに異常が存在するか否かを検査するために、サブ関数を実行する前に検査関数にジャンプしてもよく、且つ異常が存在する場合、親関数に異常を示す情報を返信し、一方、異常が存在しない場合、サブ関数を実行する。また、例えば、実施例２に対応して、サブ関数のパラメータに異常が存在するか否かを検査するために、サブ関数を実行する前に検査関数にジャンプしてもよく、且つ異常が存在する場合、親関数に異常を示す情報を返信し、一方、異常が存在しない場合、サブ関数を実行し、そしてサブ関数の戻り値及び／又はパラメータを受信し、それによりサブ関数の戻り値及び／又はパラメータに異常が存在するか否かを検査し、異常が存在しないと、他の関数を実行し続け、一方、異常が存在すると、親関数にエラーを示す情報を返信する。
【００６１】
そのうちの一つの実施例において、プリセットされた欠陥関数を特定する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
【００６２】
具体的には、プリセットされた欠陥関数を特定する前に、検査関数を初期化する必要がある。これにより、メモリで検査関数のために余分の記憶空間を申請することができるとともに、検査関数の実行時の要求に応じて、ターゲットのデータを修正することができ、例えば、プリセットされた欠陥関数のパラメータ等を修正することができる。
【００６３】
別の実施例において、プリセットされた欠陥関数を修復した後に、必要な場合に更に検査関数をアンロードしてもよく、従って、本発明の実施例は更に、
検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放する検査関数をアンロードする工程を含む。
【００６４】
例えば、検査関数のバージョンの更新又は他の理由で検査関数をアンロードする必要がある場合、この前に検査関数のために申請された余分の記憶空間を解放する必要があり、それとともに、ターゲットのデータを修正すれば、更に修正されたターゲットのデータを回復する必要があり、例えば、プリセットされた欠陥関数のパラメータ等を回復する。
【００６５】
また、本発明の実施例はパッチの状態をリアルタイムに出力することができ、例えば、パッチのバージョン情報、パッチの使用状態（イネーブル状態と禁止状態を含む）、及びパッチの名称の情報等である。それにより、パッチがイネーブル状態にあるか否かを特定し、更にパッチのバージョン情報に基づいてパッチを更新する必要があるか否かを特定する。
【００６６】
ここで、パッチのイネーブル状態は、欠陥関数におけるジャンプコマンドを実行することで検査関数が実行できることにより表示された状態を指し、パッチの禁止状態は、欠陥関数におけるジャンプコマンドを実行しないことで検査関数が実行できないことにより表示された状態を指し、言い換えれば、欠陥関数とパッチとの間のバインディングを解除する。
【００６７】
また、本発明の実施例は具体的に実施する時に、更にプリセットされた欠陥関数の記述情報を特定する必要があり、主に（１）欠陥関数の名称ｆｕｎｃ、アドレスａｄｄｒ及びそれが属するモジュールの名称ｍｏｄをプリセットすることと、（２）プリセットされた欠陥関数がサブ関数である場合、親関数の名称ｐｆｕｎｃ、アドレスｐａｄｄｒ及びそれが属するモジュールの名称ｐｍｏｄであることと、（３）プリセットされた欠陥関数がサブ関数である場合、更にサブ関数が親関数に出現した位置インデックスｉｎｄｅｘを含むこととを含む。
【００６８】
同様に、本発明の実施例に係るフィルタリングメカニズムを基として、欠陥関数を検査する方法は更に関数全体交換方法（ｆｕｎｃ--_ｒｅｐｌａｃｅ）を用いてカーネル又はアプリケーションプログラムにおけるプリセットされた欠陥関数を修復することを含む。具体的に実施する時に、まずプリセットされた欠陥関数のコードを取得し、次にそのコードに基づいて欠陥関数の機能を実現することができる検査関数を改めて作成し、そしてｉｎｌｉｎｅｈｏｏｋ方法によりプリセットされた欠陥関数のプリセットされた行、例えば第２行のコードを検査関数にジャンプするジャンプコマンドに修正し、その後検査関数を実行する必要があり、且つ、検査関数を実行し終え後にも、元のプリセット欠陥関数に戻らない。実際には、これは検査関数でプリセットされた欠陥関数を交換する。
【００６９】
本発明の実施例の技術案は一般関数とサブ関数への修復を実現することができ、且つ、プリセットされた欠陥関数がサブ関数である場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することができる。
【００７０】
実施例３
本発明の実施例は欠陥関数を検査する方法を提供する。図３は、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む。
【００７１】
Ｓ３０１、プリセットされた欠陥関数を特定する。
プログラマは通常の検出技術によりどれらの関数に欠陥が存在するかを特定することができるため、本発明の実施例は具体的に実施する時に、直接プリセットされた欠陥関数のアドレスを探すことによって、プリセットされた欠陥関数を特定することができる。
【００７２】
Ｓ３０２、前記プリセットされた欠陥関数を実行する。
本発明の実施例において、プリセットされた欠陥関数を実行する時に、その戻り値及び／又はパラメータは正常の可能性もあり、異常の可能性もある。このような場合、まずプリセットされた欠陥関数を実行してみて、次に戻り値及び／又はパラメータの異常状況に応じて対応する処理を行うことができる。
【００７３】
Ｓ３０３、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査する。
ここで、工程Ｓ３０３の前に、前記方法は更に、
インラインフック（ｉｎｌｉｎｅｈｏｏｋ）方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含む。ここで、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び／又は戻り値を検査するために用いられる。
ｉｎｌｉｎｅｈｏｏｋ方法は実施例１を参照し、ここでは説明を省略する。
【００７４】
本発明の実施例において、まずプリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするジャンプコマンドに修正することができ、プリセットされた欠陥関数のプリセットされた行のコードを実行する時に、検査関数にジャンプし、そして検査関数によりプリセットされた欠陥関数の戻り値及び／又はパラメータが正常であるか否かを検査する。戻り値及び／又はパラメータが正常であれば、プリセットされた欠陥関数に戻り、そして他の関数を順に実行し、その戻り値及び／又はパラメータが異常であれば、戻り値の状況によりプリセットされた欠陥関数の戻り値及び／又はパラメータに対して対応する処理を行うことができる。例えば、戻り値が存在する場合、戻り値又はパラメータを修正してもよく、個別の場合にも戻り値を廃棄してもよい。また、例えば、戻り値が存在しない場合、他の修復動作を行っても良い。
【００７５】
Ｓ３０４、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
【００７６】
本発明の実施例は戻り値及び／又はパラメータが異常である場合、修復処理を行う必要がある。ここで、戻り値の異常状況は戻り値が存在する場合と戻り値が存在しない場合を含む。戻り値が存在する場合は更に修正できる戻り値が存在する場合と修正できない戻り値が存在する場合を含む。以下、この三種類の場合ついて例を挙げて説明する。
【００７７】
プリセットされた欠陥関数に戻り値が存在する場合、且つ戻り値は修正でき、例えばポインタタイプである。例えば、プリセットされた欠陥関数Ａに対して、そのオブジェクト参照の基礎を変更し、この際、プリセットされた欠陥関数Ａの戻り値に異常が発生するか否かを検索する必要があり、具体的には、実行する時に、プリセットされた欠陥関数Ａの戻り値が６５５３５以下であれば正常であり、６５５３５よりも大きければオーバーフローが発生し、そのため、プリセットを修正することができ、欠陥関数Ａの戻り値を、例えば６５５００に修正し、欠陥関数Ａの戻り値を６５５３６よりも小さくする。
【００７８】
プリセットされた欠陥関数に戻り値が存在する場合、且つ、戻り値がネイティブ例えば整数変数であり、戻り値を変更できない。この場合、戻り値を廃棄してプリセットされた欠陥関数を修復することができる。例えば、プリセットされた欠陥関数Ａを実行した後に、検査関数Ｂはプリセットされた欠陥関数Ａの戻り値を検査し、プリセットされた欠陥関数Ａの戻り値がデータの集合であれば、当該データの集合において、あるメンバーがオーバーフローを発生する可能性がある。この場合、検査関数は当該データの集合を廃棄し、そしてプリセットされた欠陥関数Ａの上位層呼び出し関数に戻る。
【００７９】
プリセットされた欠陥関数に戻り値が存在しない場合、例えば文字列のプリントを実行する関数に戻り値が存在しない場合、上位層呼び出し関数はプログラムの実行ロジックにより、プリセットされた欠陥関数が成功して実行しないと判断できる。プリセットされた欠陥関数の実行結果はパラメータの設置に依存するため、この際に検査関数を呼び出して検査関数により上位層から関数を呼び出しても結果が変更できない。このような場合には、プリセットされた欠陥関数の戻り値を関心する必要がなく、プログラム変数を回復することで修復すればよい。例えば、プログラム変数は実行する前の値が０であり、実行した後の値が３であり、プリセットされた欠陥関数を修復する時に、プログラム変数の値を３から０に変更する。
【００８０】
本発明の実施例に挙げられた上記状況において、具体的に実施する時に、プログラムの複数種類のロジックにより実現することができるため、本発明の実施例は上記例を挙げる時に挙げられた修復方法を含むが、これらに限定されるものではない。
【００８１】
本発明の実施例はあくまでもプリセットされた欠陥関数の戻り値及び／又はパラメータを処理し、例えばプログラム変数を修正し、他の関数を実行してプリセットされた欠陥関数のロジックを変更する等、その目的は、プリセットされた欠陥関数を実行する時に発生する効果がその呼び出し関数にフィードバックすることを防止し、言い換えれば、これらの不良な効果を修復又は隠蔽することである。本発明の実施例の以上の工程において、プリセットされた欠陥関数のコードを取得する必要がなく、プリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするジャンプコマンドに変更すれば修復を実現することができるため、開発過程は実現しやすく、開発周期は短い。
【００８２】
本発明の実施例の技術案は戻り値及び／又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、まずプリセットされた欠陥関数を実行し、次にプリセットされた欠陥関数の戻り値及び／又はパラメータの異常状況を検査し、戻り値及び／又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングする。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できる。
【００８３】
また、本発明の実施例の技術案は、プリセットされた欠陥関数のソースコードを取得する必要がなく、且つ、プリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、安定性と互換性が良好である。
【００８４】
実施例４
実施例３を基に、本発明の実施例は欠陥関数を検査する方法を提供する。続けて図３と結び付けて、本発明の実施例は実施例３の方法の基に、更にプリセットされた欠陥関数がサブ関数である場合の修復過程を説明する。
【００８５】
関数は一般関数とサブ関数を含み、本発明の実施例の提供する欠陥関数を検査する方法は一般関数に用いられることもでき、サブ関数に用いられることもできる。しかし、親関数に複数のサブ関数が含まれる可能性があるため、更にサブ関数の位置を特定する必要がある。
【００８６】
具体的には、プリセットされた欠陥関数を特定した後に、本発明の実施例は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
【００８７】
更に、前記欠陥関数を修復する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
【００８８】
更に、前記欠陥関数を修復した後に、前記方法は更に、
前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
【００８９】
また、本発明の実施例はパッチ（検査関数）の状態をリアルタイムに出力することができ、例えば、パッチのバージョン情報、パッチの使用状態（イネーブル状態と禁止状態を含む）、及びパッチの名称の情報等である。それにより、パッチがイネーブル状態にあるか否かを特定し、更にパッチのバージョン情報に基づいてパッチを更新する必要があるか否かを特定する。具体的には、実施例２の説明を参照し、ここでは説明を省略する。
【００９０】
また、本発明の実施例は具体的に実施する時に、更にプリセットされた欠陥関数の記述情報を特定する必要があり、主に（１）欠陥関数の名称ｆｕｎｃ、アドレスａｄｄｒ及びそれが属するモジュールの名称ｍｏｄをプリセットすることと、（２）プリセットされた欠陥関数がサブ関数である場合、親関数の名称ｐｆｕｎｃ、アドレスｐａｄｄｒ及びそれが属するモジュールの名称ｐｍｏｄであることと、（３）プリセットされた欠陥関数がサブ関数である場合、更にサブ関数が親関数に出現した位置インデックスｉｎｄｅｘを含むこととを含む。実施例２を参照されたい。
【００９１】
本発明の実施例の技術案は一般関数とサブ関数への修復を実現することができ、且つ、プリセットされた欠陥関数がサブ関数である場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することができる。
【００９２】
実施例５
本発明の実施例は欠陥関数を検査する装置を提供する。図４に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
プリセットされた欠陥関数を特定するように配置される第１の位置特定モジュール４１と、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第１の検査モジュール４２と、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第１の異常返信モジュール４３と
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュール４４とを含む。
【００９３】
本発明の実施例は、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することができることを実現可能であり、この有益な効果は実施例１の有益な効果と同じで、ここでは説明を省略する。
【００９４】
実施例６
実施例５を基に、本発明の実施例は欠陥関数を検査する装置を提供する。図５に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査するように配置される第２の検査モジュール５１と、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第２の異常返信モジュール５２とを含む。
【００９５】
更に、前記第１の検査モジュール４２は、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール４２１を含む。
【００９６】
更に、前記装置は更に、
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第２の位置特定モジュール５３を含む。
【００９７】
更に、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュール５４を含む。
【００９８】
更に、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュール５５を含む。
【００９９】
本発明の実施例は、プリセットされた欠陥関数がサブ関数である場合、サブ関数を位置決めすることが実現でき、当該有益な効果は実施例２と同じで、ここでは説明を省略する。
【０１００】
実施例７
本発明の実施例は欠陥関数を検査する装置を提供する。図６に示すように、それは、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
プリセットされた欠陥関数を特定するように配置される第１の位置特定モジュール６１と、
前記プリセットされた欠陥関数を実行するように配置される実行モジュール６２と、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査するように配置される検査モジュール６３と、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュール６４とを含む。
【０１０１】
本発明の実施例は、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することができることを実現可能であり、この有益な効果は実施例３の有益な効果と同じで、ここでは説明を省略する。
【０１０２】
実施例８
実施例７を基に、本発明の実施例欠陥関数を検査する装置を提供する。図７に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は検査モジュールを含む。
【０１０３】
前記検査モジュールは、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール７１を含む。ここで、前記検査関数は前記プリセットされた欠陥関数的のパラメータ及び／又は戻り値を検査するために用いられる。
【０１０４】
更に、前記装置は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第２の位置特定モジュール７２を含む。
【０１０５】
更に、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュール７３を含む。
【０１０６】
更に、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュール７４を含む。
【０１０７】
本発明の実施例は、開発周期が短く、安定性と互換性が良好であることを実現することができ、その有益な効果は実施例２の有益な効果と同じであるため、ここでは説明を省略する。
本発明の実施例は、プリセットされた欠陥関数がサブ関数である場合、サブ関数を位置決めすることを実現することができ、当該有益な効果は実施例４と同じであるため、ここでは説明を省略する。
【０１０８】
実施例９
本発明の実施例はサーバを提供し、図８に示すように、当該サーバはメモリ８１とプロセッサ８２を含み、メモリ８１内にプロセッサ８２で動作可能なコンピュータプログラムが記憶される。プロセッサ８２が前記コンピュータプログラムを実行する時に、上記実施例における情報分類方法を実現する。メモリ８１とプロセッサ８２の数は一つ以上であってもよい。
【０１０９】
当該デバイスは更に、
メモリ８１及びプロセッサ８２と外部デバイスとの間の通信のための通信インターフェース８３を含む。
【０１１０】
メモリ８１は、高速ＲＡＭメモリを含む可能性があり、更に不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ ｍｅｍｏｒｙ）を含む可能性もあり、例えば少なくとも一つの磁気ディスクメモリである。
【０１１１】
メモリ８１、プロセッサ８２と通信インターフェース８３が独立して実現すれば、メモリ８１、プロセッサ８２と通信インターフェース８３はバスにより互いに接続して且つ相互間の通信を完成することができる。前記バスは業界標準アーキテクチャ（ＩＳＡ、ＩｎｄｕＳｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、周辺機器相互接続（ＰＣＩ、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス又は拡張業界標準アーキテクチャ（ＥＩＳＡ、Ｅｘｔｅｎｄｅｄ  ＩｎｄｕＳｔｒｙ  Ｓｔａｎｄａｒｄ  Ｃｏｍｐｏｎｅｎｔ）バス等であってもよい。前記バスはアドレスバス、データバス、制御バス等に分けられることができる。表現の便宜上、図８では一本の太線のみで表すが、バスが一本のみ又は一タイプのみを有することを意味しない。
【０１１２】
選択可能に、具体的な実現では、メモリ８１、プロセッサ８２及び通信インターフェース８３が一枚のチップに集積されると、メモリ８１、プロセッサ８２及び通信インターフェース８３は内部インターフェースにより相互間の通信を完成することができる。
【０１１３】
実施例１０
本発明の実施例はコンピュータプログラムが記憶されたコンピュータの読み取り可能な記憶媒体を提供し、当該プログラムはプロセッサにより実行される時に、図１〜４のいずれかの実施例に記載の方法を実現する。
【０１１４】
本明細書の記述で、参照用語である「一つの実施例」、「いくつかの実施例」、「例」、「具体的な例」、又は「いくつかの例」等の記述は、当該実施例又は例と結び付けて記述する具体的な特徴、構造、材料又は特点が本発明の少なくとも一つの実施例又は例に含まれることを意味する。そして、記述する具体的な特徴、構造、材料又は特点はいずれか又は複数の実施例又は例において適切な方式で結び付けられることができる。なお、相互に矛盾しない場合、当業者は本明細書に記述する異なる実施例又は例と異なる実施例又は例の特徴とを結び付けて組み合わせることができる。
【０１１５】
なお、用語である「第１」、「第２」は記述するためのものであり、相対重要性を示し又は暗示すると理解してはいけなく、或いは示された技術特徴の数の特定を示唆すると理解してはいけない。これにより、「第１」、「第２」が限定された特徴は、少なくとも一つの当該特徴を明示的に又は暗示的に含むことができる。本発明の記述では、特に断りがない限り、「複数」は二つ又は二つ以上を意味する。
【０１１６】
フローチャートで又はここで他の方式で記述するいかなる過程又は方法の記述は、一つ又はより多くの特定のロジック機能又は過程の工程を実現するための実行可能なコマンドのコードのモジュール、クリップ又は一部を含むことを示し、且つ、本発明の好適な実施形態の範囲は別の実現を含み、そこで示された又は検討された順序に従わなくてもよく、係る機能によりほぼ同時の方式で又は逆の順序で機能を実行することを含むと理解してもよい。これについて、本発明の実施例に属する技術分野の当業者は理解できるべきである。
【０１１７】
フローチャートで表す又はここで他の方式で記述するロジック及び／又は工程は、例えば、ロジック機能を実現するための実行可能なコマンドの順序固定リストと考えられ、いかなるコンピュータの読み取り可能な媒体に具体的に実現することができ、コマンド実行システム、装置又はデバイス（例えばコンピュータに基づくシステム、プロセッサを含むシステム、又は他のコマンド実行システム、装置又はデバイスからコマンドを得てコマンドを実行可能なシステム）の使用に供され、又はこれらのコマンド実行システム、装置又はデバイスと結び付けて使用する。本明細書では、「コンピュータの読み取り可能な媒体」はプログラムを含む、記憶、通信、伝播又は転送することができるコマンド実行システム、装置又はデバイスに供される、又はこれらのコマンド実行システム、装置又はデバイスと結び付け使用するいかなる装置であってもよい。
【０１１８】
本発明の実施例に記載のコンピュータ読み取り可能な媒体はコンピュータの読み取り可能な信号媒体又はコンピュータの読み取り可能な記憶媒体又は上記両者の任意の組み合わせであってもよい。コンピュータの読み取り可能な記憶媒体の更に具体的な例は少なくとも（非網羅的なリスト）、一つ以上の配線を有する電気的接続部（電子装置）、携帯型コンピュータディスクカートリッジ（磁気装置）、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能で編集可能な読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ装置、及び携帯型読み出し専用メモリ（ＣＤＲＯＭ）を含む。また、コンピュータの読み取り可能な記憶媒体は更にその上に前記プログラムをプリント可能な紙又は他の適切な媒体であってもよい。それは例えば紙又は他の媒体に対して光走査を行うことで、続けて編集、解釈を行い、又は必要の時に他の適切な方式で処理を行い、それにより電子方式で前記プログラムを取得し、そしてそれをコンピュータメモリに記憶することができるからである。
【０１１９】
本発明の実施例において、コンピュータの読み取り可能な信号媒体は、ベースバンドに含まれる又はキャリアの一部の伝播するデータ信号とすることができ、その中にコンピュータの読み取り可能なプログラムコードが積載される。このような伝播するデータ信号は複数種の形式を採用することができ、電磁信号、光信号又は上記任意の適切な組み合わせを含むがこれらに限定されるものではない。コンピュータの読み取り可能な信号媒体は更にコンピュータの読み取り可能な記憶媒体以外のいかなるコンピュータの読み取り可能な媒体であってもよく、当該コンピュータの読み取り可能な媒体はコマンド実行システム、入力方法又はデバイス使用に用いられる或いはそれと結び付けて使用するプログラムを送信、伝播又は転送することができる。コンピュータの読み取り可能な媒体に含まれるプログラムコードはいかなる適切な媒体で転送してもよく、無線、電線、光ケーブル、ラジオ高周波（Ｒａｄｉｏ Ｆｒｅｑｕｅｎｃｙ、ＲＦ）等、又は上記任意の適切な組み合わせを含むがそれらに限定されるものではない。
【０１２０】
本発明の各部がハードウェア、ソフトウェア、ファームウェア又はそれらの組み合わせにより実現可能であることは言うまでもない。上記実施形態では、複数の工程又は方法はメモリに記憶され且つ適切なコマンド実行システム実行で実行するソフトウェア又はファームウェアにより実現することができる。例えば、ハードウェアで実現すれば、別の実施形態と同じなように、データ信号に対してロジック機能を実現するためのロジックゲート回路を有する離散的なロジック回路、適切な組み合わせロジックゲート回路を有する専用集積回路、プログラマブルゲートアレイ（ＰＧＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等の本分野の公知の技術におけるいずれか又はそれらの組み合わせで実現することができる。
【０１２１】
当業者であれば、上記実施例の方法の有する全部又は一部の工程を実現することは、プログラムで関連するハードウェアを命令することにより完成でき、前記プログラムはコンピュータの読み取り可能な記憶媒体に記憶されることができ、当該プログラムは実行する時に、方法の実施例の工程の一つ又はその組み合わせを含むことを理解することができる。
【０１２２】
なお、本発明の各実施例における各機能ユニットが一つの処理モジュールに集積されてもよく、各ユニットが単独して物理的に存在してもよく、二つ又は二つ以上のユニットが一つのモジュールに集積されてもよい。上記集積されたモジュールはハードウェアの形式で実現してもよく、ソフトウェア機能モジュールの形式で実現してもよい。前記集積されたモジュールはソフトウェア機能モジュールの形式で実現して独立する製品として販売又は使用する時に、一つのコンピュータの読み取り可能な記憶媒体に記憶してもよい。前記記憶媒体は読み出し専用メモリ、磁気ディスク又は光ディスク等であってもよい。
【０１２３】
上記は本発明の具体的な実施形態に過ぎないが、本発明の特許請求の範囲はこれに限定されるものではない。当業者であれば、本発明の開示する技術的範囲内に、各種の変化又は交換を容易に想到することができ、これらは全て本発明の特許請求の範囲内に含まれるべきである。従って、本発明の特許請求の範囲は前記特許請求の範囲を基準とすべきである。
【図１】
2019160270.tif 000003
【図２】
2019160270.tif 000004
【図３】
2019160270.tif 000005
【図４】
2019160270.tif 000006
【図５】
2019160270.tif 000007
【図６】
2019160270.tif 000008
【図７】
2019160270.tif 000009
【図８】
2019160270.tif 000010
【手続補正書】
【提出日】令和1年7月3日(2019.7.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する方法において、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することであって、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数のパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正することを含む、検査することと、
異常が存在すると、前記検査関数は、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、
異常が存在しないと、前記プリセットされた欠陥関数を実行することとを含むことを特徴とする欠陥関数を検査する方法。
【請求項２】
前記欠陥関数を初めて検査する時に、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記検査関数にジャンプするコマンドに修正する前に、前記方法は更に、
前記プリセットされた行のコードをバッファ領域に記憶し、
異常が存在しないと、前記プリセットされた欠陥関数を実行しようとする時に、前記バッファ領域に記憶されたプリセットされた行のコードを実行した後に、前記プリセットされた欠陥関数に戻って前記プリセットされた行の次の行のコードを実行することを特徴とする請求項１に記載の方法。
【請求項３】
異常が存在しないと、前記プリセットされた欠陥関数を実行した後に、前記方法は更に、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査することは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正することを含むことを特徴とする請求項３に記載の方法。
【請求項５】
プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記プリセットされた欠陥関数を特定する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含むことを特徴とする請求項４に記載の方法。
【請求項７】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、前記方法は更に、
検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放することを含むことを特徴とする請求項６に記載の方法。
【請求項８】
欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する方法において、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数を実行することと、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査することであって、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正することを含む、検査することと、
異常が存在すると、前記検査関数は、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含むことを特徴とする欠陥関数を検査する方法。
【請求項９】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後に、異常が存在しないと、前記方法は更に、前記プリセットされた欠陥関数に戻って他の関数を順に実行することを特徴とする請求項８に記載の方法。
【請求項１０】
プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記プリセットされた欠陥関数を特定する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含むことを特徴とする請求項８に記載の方法。
【請求項１２】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、前記方法は更に、
前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放することを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する装置において、
プリセットされた欠陥関数を特定するように配置される第１の位置特定モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第１の検査モジュールであって、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数のパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正する第１の検査モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記検査関数は、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第１の異常返信モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、を含むことを特徴とする欠陥関数を検査する装置。
【請求項１４】
前記欠陥関数を初めて検査する時に、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記検査関数にジャンプするコマンドに修正する前に、前記プリセットされた行のコードをバッファ領域に記憶し、
前記実行モジュールは、異常が存在しないと、前記プリセットされた欠陥関数を実行しようとする時に、前記バッファ領域に記憶されたプリセットされた行のコードを実行した後に、前記プリセットされた欠陥関数に戻って前記プリセットされた行の次の行のコードを実行することを特徴とする請求項１３に記載の装置。
【請求項１５】
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査するように配置される第２の検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第２の異常返信モジュールとをさらに含むことを特徴とする請求項１３に記載の装置。
【請求項１６】
前記第１の検査モジュールは、
インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられることを特徴とする請求項１５に記載の装置。
【請求項１７】
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第２の位置特定モジュールをさらに含むことを特徴とする請求項１３に記載の装置。
【請求項１８】
前記プリセットされた欠陥関数を特定する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含むことを特徴とする請求項１６に記載の装置。
【請求項１９】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項１８に記載の装置。
【請求項２０】
欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する装置において、
プリセットされた欠陥関数を特定するように配置される第１の位置特定モジュールと、
前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査するように配置される検査モジュールであって、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数の戻り値及び／又はパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正する検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記検査関数は、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュールとを含むことを特徴とする欠陥関数を検査する装置。
【請求項２１】
前記検査モジュールは、前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、
異常が存在しないと、前記実行モジュールは、前記プリセットされた欠陥関数に戻って他の関数を順に実行することを特徴とする請求項２０に記載の装置。
【請求項２２】
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第２の位置特定モジュールをさらに含むことを特徴とする請求項２０に記載の装置。
【請求項２３】
前記プリセットされた欠陥関数を特定する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールをさらに含むことを特徴とする請求項２０に記載の装置。
【請求項２４】
前記プリセットされた欠陥関数の戻り値及び／又はパラメータに異常が存在するか否かを検査した後、前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項２３に記載の装置。
【請求項２５】
サーバにおいて、
一つ以上のプロセッサと、
一つ以上のプログラムを記憶するための記憶装置と、を含み、
前記一つ以上のプログラムが前記一つ以上のプロセッサにより実行された場合、前記一つ以上のプロセッサに請求項１〜１２のいずれか一項に記載の方法を実施させることを特徴とするサーバ。
【請求項２６】
コンピュータにおいて、プロセッサにより実行された場合、請求項１〜１２のいずれか一項に記載の方法を実施することを特徴とするプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明はコンピュータ技術分野に関し、具体的には、欠陥関数を検査する方法、装置、サーバ及びプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
第２の態様で、本発明は第２の態様の第１の実施形態では、前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、前記方法は更に、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び／又は戻り値を検査するために用いられる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１０３
【補正方法】変更
【補正の内容】
【０１０３】
前記検査モジュールは、  前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール７１を含む。ここで、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び／又は戻り値を検査するために用いられる。