(57)【特許請求の範囲】
【請求項１】
障害発生時にコアファイルを生成するプログラムであって、
組込機器に搭載されるコンピュータが、
メインメモリのスタックフレームの読み込みを行う第1のステップと、
スタックフレーム中の戻りアドレスによって特定される、呼び出された関数を構成するプログラムコードを解析し、メモリポインタ操作部分を特定する第２のステップと、
前記特定されたメモリポインタ操作部分を含んでいるメモリ領域のみを特定する第３のステップと、
前記特定されたメモリ領域をコアファイル化する第４のステップと、
を実行する組込機器向けのメモリ領域保存プログラム。
【請求項２】
前記第２のステップにてメモリポインタ操作部分を特定できなかった場合、スタックフレーム履歴に基づき、他のスタックフレームに対して上記第２ないし第４のステップを行うことを特徴とする請求項１記載の組込機器向けのメモリ領域保存プログラム。
【請求項３】
前記第４ステップのコアファイルを圧縮したことを特徴とする請求項１または２記載の組込機器向けのメモリ領域保存プログラム。
【請求項４】
障害発生時にコアファイルを生成する方法であって、
組込機器に搭載されるコンピュータが、
メインメモリのスタックフレームの読み込みを行う第１のステップと、
スタックフレーム中の戻りアドレスによって特定される、呼び出された関数を構成するプログラムコードを解析し、メモリポインタ操作部分を特定する第２のステップと、
前記特定されたメモリポインタ操作部分を含んでいるメモリ領域のみを特定する第３のステップと、
前記特定されたメモリ領域をコアファイル化する第４のステップと、
を実行する組込機器向けのメモリ領域保存方法。
【請求項５】
前記第２のステップにてメモリポインタ操作部分を特定できなかった場合、スタックフレーム履歴に基づき、他のスタックフレームに対して上記第２ないし第４のステップを行うことを特徴とする請求項４記載の組込機器向けのメモリ領域保存方法。
【請求項６】
前記第４ステップのコアファイルを圧縮したことを特徴とする請求項４または５記載の組込機器向けのメモリ領域保存方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込機器向けのメモリ領域保存プログラム及びメモリ領域保存方法に関する。
【背景技術】
【０００２】
従来、オペレーティングシステム（以下、ＯＳと略記する）が正常稼動を維持できない場合、当該ＯＳが例外シグナルを発生させ、ＣＰＵの基本制御を行うためのＯＳの基幹部分であるカーネルにコアダンプ機能実行を指示する。このようなコアダンプ機能実行の結果、生成されるファイルのことを一般的にコアファイルと称する。
【０００３】
ＯＳが正常稼動を継続できない状態、つまり異常事態に至った原因を解析する手段を一般的には「障害原因解析」という。この障害原因解析の為の一般的作業内容としては、生成されたコアファイルをターゲット機器から吸い上げ、解析用デバッグ装置に設置された汎用デバッグツールで解析する事などを行う。
【０００４】
コアファイルの中には、障害発生時のメモリ空間内容を全てと障害発生時のＣＰＵの全レジスタ値が格納されている。ゆえに、これら情報と開発環境からの情報（例えばソースコードやデバッグ用シンボル情報等）を利用することで、障害原因を突き止めることができる（以下、このような作業を「障害原因解析作業」と称する）。
【０００５】
例えば、ＵＮＩＸ（登録商標）に代表されるような汎用ＯＳは、常時シグナルイベントを監視する機能を備えており、例外シグナルが発生した場合にそれに応じた例外処理を実行する事になっている。システム稼動を、これ以上継続することが困難と判断した場合、コアファイル保存処理（以下、コアダンプと称する）を実行し、その時点の全ＣＰＵレジスタ値とメモリ内容を全てファイル化し、上記障害原因解析作業にあてる。
【０００６】
ここで、例えば特許文献１では、コアダンプ要求があればコアダンププログラムを起動してＲＡＭの内容をＨＤＤに書き出すほか、これを圧縮してＨＤＤに蓄積するコンピュータシステムが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−９９３７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、近年、組込機器の高機能化に伴い、搭載されるＯＳもＵＮＩＸ系ＯＳ等に代表される汎用ＯＳの流れをくむＯＳ機能を搭載するようになってきた。
【０００９】
ところで、このような従来は汎用サーバ機で利用されてきたコアダンプの仕組みを、そのまま組込機器に適用するという事が必ずしも適切ではない。組込機器は、二次記憶装置としてハードディスク等を搭載しておらず、実装されているＲＡＭの容量よりも補助記憶メモリの容量の方が小さいことから、その原理上、コアファイルを格納すること自体が不可能である。このコアファイルは、搭載メモリ空間の全容量と同一サイズであり、これを保存しておくに足りる二次記憶装置が備わっている必要がある。このような理由から、従来の組込機器では、上記コアファイルを保存しておくことができず、つまり障害原因解析作業に必要な情報を収集することができず、障害対策を講じる事が困難であった。
【００１０】
一般に、組込機器の障害原因解析作業を実施する方法としては、組込機器に通信ネットワークを増設しこれを経由してサーバ機にコアファイルを送信する方法もとられているものの、通信経路を持たない場合やサーバ機を設置することができない場合、発生頻度の非常に低い障害など、適用できない場合が数多く見受けられる。
【００１１】
本発明の目的は、障害発生時に残された情報を基にコアダンプを実行する前に、障害原因の解析に有益なシステム情報を特定する自己解析処理を実施することで、予め設定した保存サイズに適したコアファイルを生成することを可能とすることである。
【課題を解決するための手段】
【００１２】
上記課題を解決するための本発明は、障害発生時にコアファイルを生成するプログラムであって、組込機器に搭載されるコンピュータが、メインメモリのスタックフレームの読み込みを行う第1のステップと、スタックフレーム中の戻りアドレスによって特定される、呼び出された関数を構成するプログラムコードを解析し、メモリポインタ操作部分を特定する第２のステップと、前記特定されたメモリポインタ操作部分を含んでいるメモリ領域のみを特定する第３のステップと、前記特定されたメモリ領域をコアファイル化する第４のステップとを実行する組込機器向けのメモリ領域保存プログラムである。
【００１３】
また本発明は、障害発生時にコアファイルを生成する方法であって、組込機器に搭載されるコンピュータが、メインメモリのスタックフレームの読み込みを行う第１のステップと、スタックフレーム中の戻りアドレスによって特定される、呼び出された関数を構成するプログラムコードを解析し、メモリポインタ操作部分を特定する第２のステップと、前記特定されたメモリポインタ操作部分を含んでいるメモリ領域のみを特定する第３のステップと、前記特定されたメモリ領域をコアファイル化する第４のステップと、を実行する組込機器向けのメモリ領域保存方法である。
【発明の効果】
【００１４】
本発明によれば、障害発生時に残された情報を基にコアダンプを実行する前に、障害原因の解析に有益なシステム情報を特定する自己解析処理を実施することで、予め設定した保存サイズに適したコアファイルを生成することを可能とした組込機器向けのメモリ領域保存プログラム及びメモリ領域保存方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態に係るコンパクトコアダンプを採用したコンピュータシステムの構成を示す図である。
【図２】（ａ）はメインメモリとしてのＲＡＭ２のメモリマップ、図２（ｂ）は補助記憶部としてのフラッシュメモリ４のメモリマップである。
【図３】本発明の一実施の形態に係るコンパクトコアダンプによる一連の処理手順を詳細に説明するフローチャートである。
【図４】本発明の一実施の形態に係るコンパクトコアダンプの改良例による一連の処理手順を詳細に説明するフローチャートである。
【図５】スタックフレームの様子を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本発明の一実施の形態について説明する。
【００１７】
図１には、本発明の一実施の形態に係るコンパクトコアダンプを適用したコンピュータシステムの概略構成を示し説明する。この図１に示されるように、コンピュータシステムは、全体の制御を司る中央演算処理部（以下、ＣＰＵと称する）１、メインメモリとしてのＲＡＭ２、コンパクトコアダンププログラム３１を格納したＲＯＭ３、補助記憶部としてのＯＳプログラム・アプリケーションプログラムを格納したフラッシュメモリ４、入出力制御部５、表示部６、操作入力部７等からなる。
【００１８】
ＣＰＵ１は、論理的には、プログラム実行時に命令のデコード等を行う制御ユニット１１と、そのデコードされた命令を実行する実行ユニット１２とからなり、更に制御ユニット１１にはプログラムカウンタ１１ａと称するレジスタが設けられている。ＲＡＭ２のメモリ領域は、プログラム領域２１、データ領域２２に大別される。このプログラム領域２１は、更にアプリケーションプログラム領域２１ａとＯＳプログラム領域２１ｂとからなる。この他、ＲＡＭ２のメモリ領域には、不図示の作業領域も含まれる。
【００１９】
このような構成に於いて、コンピュータが実行するアプリケーションプログラムは命令及び命令が参照するデータの系列で構成されており、実行に際してはメインメモリとしてのＲＡＭ２にフラッシュメモリ４よりロードされる。ＣＰＵ１は、アプリケーションプログラムの各命令をＲＡＭ２から取出して実行する。このとき、ＣＰＵ１は、次に実行すべき命令のアドレスをプログラムカウンタ１１ａと称するレジスタにセットする。そして、命令を読み出し、制御ユニット１１で命令のデコードを行い、実行ユニット１２で実行する。アプリケーションプログラムを実行するには、該プログラムとその実行に必要なデータを補助記憶部としてのフラッシュメモリ４からＲＡＭ２にロードする必要がある。実行結果は、このフラッシュメモリ４に書き出され、或いは入出力制御部５を介して外部に出力される。
【００２０】
このような一連の処理の中、障害が発生し、ＣＰＵ１がシステム稼動を継続することが困難であると判断した場合、ＣＰＵ１がＲＯＭ３のコンパクトコアダンププログラム３１をＲＡＭ２のメモリ領域にロードし、本発明の一実施の形態に係るコンパクトコアダンプでは、コアダンプを実行する前に前処理として障害原因の解析に有益なシステム情報を特定するための自己解析を実施することで、予め設定した保存サイズに適したコアファイルを生成する。さらに、ＣＰＵ１はコアファイル保存の設定サイズが自己解析実施後のファイルサイズよりも小さい場合は、より関連性の高い順、例えば履歴リストの順に保存することで設定サイズに収める。
【００２１】
次に、図２には、本発明の一実施の形態を適用した組込機器のメモリマップの一例を示し説明する。図２（ａ）はメインメモリとしてのＲＡＭ２のメモリマップ、図２（ｂ）は補助記憶部としてのフラッシュメモリ４のメモリマップを示している。
【００２２】
この例では、２ＭＢの保存空間を予め指定し、コンパクトコアダンプにより最低限度のコアファイル（障害原因解析用データ）を障害情報格納領域に保存する。
【００２３】
以下、図３のフローチャートを参照して、本発明の一実施の形態に係るコンパクトコアダンプによる一連の処理手順を詳細に説明する。
【００２４】
例えば、組込み用のＵＮＩＸに代表されるＯＳは、常時シグナルイベントを監視しており、コアダンプ該当シグナルが発生したと判定した場合には（ステップＳ１００）、それに応じた例外処理である本実施形態に係るコンパクトコアダンプを実行することになる。
【００２５】
即ち、ＣＰＵ１は、コアダンプ前処理として、コアファイルの名称を決定し、コアファイルの書き込みファイルをオープンし（ステップＳ１）、コアファイル設定として、スタックフレームを読み込み、圧縮フラグを有効化する（ステップＳ２）。
【００２６】
続いて、メモリリージョン（領域）ダンプ処理を実行する（ステップＳ３）。
【００２７】
このステップＳ３では、以下のステップＳ３２〜Ｓ３９の処理をセグメント個数分だけ実行する（ステップＳ３１）。即ち、メモリ領域ダンプ処理では、先ずメインメモリとしてのＲＡＭ２のメモリ領域のデータを取出し（ステップＳ３２）、自己解析処理を行う（ステップＳ３３）。この自己解析処理では、スタックフレームの関数を例えば逆アセンブルする等して、メモリポインタ操作部分を特定する。より詳細には、障害発生時に保存されたＣＰＵ１の全レジスタ値とスタックフレームの情報を基に関数を逆アセンブルする等してポインタ操作の解析を行う。ここで、「メモリポインタ操作」とはメモリポインタの指すアドレスの内容を参照・読込み・書込みする処理のことをいい、「メモリポインタ操作部分」とはそのポインタの指し示すアドレスの部分のことをいう。
【００２８】
こうして、そこがポインタ操作部分と判断できた場合には、そのポインタ操作部分を含んでいるメモリ領域のみを特定する。尚、ポインタ操作部分が特定された場合、例えば所定のフラグを立てて後の処理に用いることとしてもよい。
【００２９】
続いて、ＣＰＵ１は、上記自己解析処理により特定されたメモリ領域であるか否かを判断し（ステップＳ３４）、特定された領域ではないと判断した場合には、次のメモリ領域を検索し（ステップＳ３５）、上記ステップＳ３２以降の処理を繰り返す。
【００３０】
一方、自己解析処理により特定された領域であると判断した場合には、ＣＰＵ１はリージョンダンプ（ステップＳ３６）を行い、圧縮フラグが有効であるか否かを判断する（ステップＳ３７）。ここで、圧縮フラグが有効である場合、gzipコマンド起動しgzip圧縮を行なう（ステップＳ３８）。こうして、特定された領域の数分のコアファイル化を行う（ステップＳ３９）。
【００３１】
尚、上記ステップＳ２の圧縮フラグの有効化、ステップＳ３７の圧縮フラグが有効か否かの判断も任意処理である。例えば、デフォルトの状態では圧縮しないこととし、任意操作で圧縮フラグが有効化された場合にのみ圧縮することとしてもよい。
【００３２】
また、上記ステップＳ３３の自己解析処理をステップＳ２の後に行ってもよい。
【００３３】
この場合には、スタックフレーム中の実引数や局所変数等を解析する手段としてスタック履歴リストの関数自体を逆アセンブルし、メモリポインタ操作部分を特定する。
【００３４】
より詳細には、障害発生時に保存されたＣＰＵ１の全レジスタ値とスタックフレームの情報を基に履歴リストの関数を逆アセンブルし、メモリポインタ操作を解析し、その結果として、履歴リストの関数内で発生するメモリポインタ操作部分と判断できた場合には、そのメモリ情報を含んでいるメモリ領域のみを特定することになる。
【００３５】
以下、図４のフローチャートを参照して、本発明の一実施の形態に係るコンパクトコアダンプの改良例による一連の処理手順を詳細に説明する。
【００３６】
例えば、組込み用のＵＮＩＸに代表されるＯＳは、常時シグナルイベントを監視しており、コアダンプ該当シグナルが発生したと判定した場合には（ステップＳ２００）、それに応じた例外処理である本実施形態に係るコンパクトコアダンプを実行する。
【００３７】
即ち、ＣＰＵ１は、コアダンプ前処理として、コアファイルの名称を決定し、コアファイルの書き込みファイルをオープンし（ステップＳ１１）、コアファイル設定として、スタックフレームを読み込み、圧縮フラグを有効化する（ステップＳ１２）。
【００３８】
続いて、ＣＰＵ１は、スタックフレーム解析処理を実行する（ステップＳ１３）。ここでは、スタックフレーム履歴リストを作成し、スタックフレーム履歴個数を取得する。
【００３９】
そして、このスタックフレーム履歴個数分だけ、自己解析処理を実行する（ステップＳ１４）。より詳細には、スタックフレーム履歴個数分のループで（ステップＳ１４１）、前述したような自己解析処理を実行し（ステップＳ１４２）、この自己解析の結果、特定された領域であるか否かを判断する（ステップＳ１４３）。そして、特定された領域でないと判断した場合には続けて自己解析処理を実行し、一方、特定された領域であると判断した場合にはコアダンプメモリリストへ登録する（ステップＳ１４４）。
【００４０】
そして、コアファイル生成処理に移行する（ステップＳ１５）。
【００４１】
このステップＳ１５では、以下のステップＳ１５２〜Ｓ１５８の処理をコアダンプメモリリスト個数分だけ実行する（ステップＳ１５１）。
【００４２】
即ち、メモリリージョンを取出し（ステップＳ１５２）、メモリダンプ可能か否かを判断し（ステップＳ１５３）、メモリダンプ可能ではないと判断した場合には次のメモリリージョンを検索し（ステップＳ１５４）、上記ステップＳ１５２に戻り、一方、メモリダンプ可能であると判断した場合には、ＣＰＵ１はメモリリージョンダンプ（ステップＳ１５５）を行い、圧縮フラグが有効であるか否かを判断する（ステップＳ１５６）。ここで、圧縮フラグが有効である場合、ＣＰＵ１は、gzipコマンド起動しgzip圧縮を行う（ステップＳ１５７）。こうしてコアダンプメモリリストの個数分のコアファイル化を行なう（ステップＳ１５８）。
【００４３】
次に、障害対策機能であるスタックフレーム解析について更に詳細に言及する。
【００４４】
図５はスタックフレームの様子を示している。スタック領域は、関数の呼び出しにおいて、戻り番地や実引数を格納するのに用いられる。ここで表記される「関数」とは、種々のプログラム言語上での厳密な関数のことではなく、プロシジャーやサブルーチン等とも表記される広い意味での処理の意味で、スタックフレームに変数、引数、戻り番地等をセットして呼び出される一連の処理全般のことをいう。スタックは、ＬＩＦＯの仕組みをもった記憶形態である。各スタックフレームには、先ずパラメータ等の実引数がプッシュされて、次に関数の戻り番地をスタックにプッシュし、呼び出す関数にジャンプすることでＣＡＬＬ命令を実行する。呼び出された関数の先頭ではレジスタ退避を行う。次に、関数の局所変数の領域をスタック上に確保し、指定があれば初期化を行う。フレームポインタはスタックフレームが確保されたときにレジスタに設定し直され、これにより、それまで実行していた関数のスタックフレームの内容がスタックにプッシュされ、退避されることになる。尚、スタックポインタレジスタは、スタックの先頭アドレスを示している。
【００４５】
一般的に、コアダンプの冒頭では、ＯＳの種別に関わらず障害発生時点のＣＰＵ全レジスタ値が保存された状態になっている。特にスタックポインタレジスタの示すメモリ位置には、所謂バックトレース履歴というプログラム実行の履歴情報が保存されている。スタックは、所謂スタックフレームという単位で区切られた固まり毎にプログラム実行の道筋が残されている。このフレームをリスト化し、一時的にメモリ領域に保存し、障害発生時の現時点から遡ってＯＳ起動の最初に至るまで履歴リストを作成する事が可能である。
【００４６】
但し、全ての履歴を記録するメモリスペースが確保できない場合は、例えば直近から遡って過去１０フレームまで記録するといった条件を設定する事を可能とする設定機能を設置する事でより、様々な履歴情報の保存が可能である。この履歴リストは、障害原因を内包した関数が、どのような道筋を経て呼び出されたかを表現している。
【００４７】
さて、スタックフレームのリスト化により障害原因を内包する関数部位が判明したとしても、本当の障害原因は、その時点での実引数や局所変数等の値やそれらが指し示すメモリ位置の存在している値等に依存する場合が多い。これら実引数や局所変数自体は、スタックフレーム内部に残された値なので、コアファイルとして障害発生時に保存する事が可能である。ところが、これらがアドレスポインタとして利用されている場合、その値が参照しているメモリ位置のデータ値が障害原因解析には是非とも必要な情報となる。
【００４８】
従来技術では、メモリ空間を全て保存する事で対応していたが、保存機能が十分でないシステムではこのような手法は利用できなかった。
【００４９】
そこで、本実施の形態に係るコンパクトコアダンプは、図５に示したスタックフレームの内部に残されている実引数や局所変数及び関数自身の内部を細かく解析する機能をＯＳカーネルに内包させる事により、それらの値がどのメモリ位置を参照しているかという事を自己解析する機能を備えている。即ち、この自己解析機能によれば、スタックフレーム中の実引数や局所変数を解析する手段として、障害発生時に保存されたＣＰＵの全レジスタ値とスタックフレーム情報を基に履歴リストの関数を逆アセンブルし、ポインタ参照を解析の結果、履歴リストの関数内で発生するメモリ参照と判断できた場合には、そのメモリ情報を含んでいるメモリ領域のみを特定することができる。尚、逆アセンブル手段は実装システムに依存するものではないので、ここでは詳細は言及しない。
【００５０】
このような自己解析機能により、障害原因解析作業に必要な情報の全てを極めて小さいサイズで保存することができる。
【００５１】
以上詳述したように、本実施の形態のコンパクトコアダンプは、コアファイルの作成時に、障害原因に関連したメモリ空間を特定する手段として例えば逆アセンブラ解析手法を利用することができる。本実施の形態によれば、組込機器が異常事態を検知し例外処理を実行する場合において、障害発生時に残された情報を基に自己解析を実施することで、障害原因に関連性の高い情報だけを選択的に保存することが可能となるので、従来技術では保存が不可能とされていた組込機器のＯＳ向け用途にも適用可能である。即ち、コアダンプが実行される前に前処理として障害原因の解析に有益なシステム情報と特定する自己解析処理を実施することで、コアダンプすべき情報の全体量を削減し、可能な限り予め設定した保存サイズに適したコアファイルを生成することを可能とする。
【００５２】
この自己解析処理の結果、保存すべきコアダンプ情報のサイズが決定するが、このサイズが予め設定可能なコアファイル保存設定サイズより小さいと判断できる場合はコアファイルを圧縮することなく保存することができる。
【００５３】
このように、本実施の形態によれば、障害の原因を極めてサイズの小さいコアファイルにまとめることが可能となるので、携帯電話機等のように本来は障害発生時コアファイル等を保存する機能を搭載しない装置にも実装可能である。
【００５４】
尚、本発明の実施の形態には、以下の技術的思想も含まれる。
【００５５】
即ち、コンピュータシステムの制御手段としてのＣＰＵ１が、主記憶手段としてのメインメモリであるＲＡＭ２のスタックフレームの読み込みを行う第１のステップと、自己解析処理として、上記スタックフレーム中の少なくとも実引数、局所変数を解析するために上記スタックフレームの関数を逐次参照し、メモリポインタ操作を解析し、そこがメモリポインタ操作部分と判断できた場合には、当該メモリポインタ操作部分を含んでいるメモリ領域を特定する第２のステップと、上記特定したメモリ領域についてコアダンプを行う第３のステップと、を実行し、特に上記第１及び第２のステップを上記スタックフレームのセグメント個数分だけ実行するための組込機器向けのコンパクトコアダンププログラムである。ここで、上記コンピュータの制御手段としてのＣＰＵ１が、上記コアダンプされたファイルを圧縮する第４のステップを更に実行することとしてもよい。
【００５６】
この他、コンピュータシステムの制御手段としてのＣＰＵ１が、主記憶手段としてのメインメモリであるＲＡＭ２のスタックフレームの読み込みを行う第１のステップと、自己解析処理として、上記スタックフレーム中の少なくとも実引数、局所変数を解析するために、上記スタックフレームの関数を逐次参照し、メモリポインタ操作を解析し、そこがメモリポインタ操作部分と判断できた場合には、当該メモリポインタ操作部分を含んでいるメモリ領域を特定する第２のステップと、上記特定したメモリ領域についてコアダンプを行う第３のステップと、を有し、上記第１及び第２のステップを上記スタックフレームのセグメント個数分だけ実行することを特徴とする組込機器向けのコンパクトコアダンプを用いた方法である。ここで、上記コンピュータの制御手段としてのＣＰＵ１が、上記コアダンプされたファイルを圧縮する第４のステップを更に実行することとしてもよい。
【００５７】
また、以上説明した発明は、次の付記に示される態様で構成することができる。
【００５８】
[付記１]  
コンピュータが、メインメモリのスタックフレームの読み込みを行う第１のステップと、自己解析処理として、上記スタックフレーム中の少なくとも実引数、局所変数を解析するために、上記スタックフレームの関数を逐次参照し、メモリポインタ操作を解析し、そこがメモリポインタ操作部分と判断できた場合には、当該メモリポインタ操作部分を含んでいるメモリ領域を特定する第２のステップと、上記特定したメモリ領域についてコアダンプを行う第３のステップと、を実行し、特に上記第１及び第２のステップを上記スタックフレームのセグメント個数分だけ実行するための組込機器向けのコンパクトコアダンププログラム。
【００５９】
[付記２]  
上記コアダンプされたファイルを圧縮する第４のステップを更に実行する付記１に記載の組込機器向けのコンパクトコアダンププログラム。
【００６０】
[付記３]  
コンピュータが、メインメモリのスタックフレームの読み込みを行う第１のステップと、自己解析処理として、上記スタックフレーム中の少なくとも実引数、局所変数を解析するために、上記スタックフレームの関数を逐次参照し、メモリポインタ操作を解析し、そこがメモリポインタ操作部分と判断できた場合には、当該メモリポインタ操作部分を含んでいるメモリ領域を特定する第２のステップと、上記特定したメモリ領域についてコアダンプを行う第３のステップと、を有し、上記第１及び第２のステップを上記スタックフレームのセグメント個数分だけ実行することを特徴とする組込機器向けのコンパクトコアダンプを用いた方法。
【００６１】
以上、本発明の実施の形態について説明したが、本発明はこれに限定されることなくその趣旨を逸脱しない範囲で種々の改良・変更が可能であることは勿論である。
【符号の説明】
【００６２】
１…ＣＰＵ、２…ＲＡＭ、３…ＲＯＭ、４…フラッシュメモリ、５…入出力制御部、６…表示部、７…操作入力部、１１…制御ユニット、１２…実行ユニット、２１…プログラム領域、２２…データ領域、３１…コンパクトコアダンププログラム。
【図１】
0005221477.tif 000002
【図２】
0005221477.tif 000003
【図３】
0005221477.tif 000004
【図４】
0005221477.tif 000005
【図５】
0005221477.tif 000006