プログラムが異常終了すると、 システムはコア・ファイルを作成し、 終了したプロセスのメモリー・イメージを保管します。 メモリー・アドレス違反、不法な指示、バス・エラー、 およびユーザー生成の終了シグナルなどのエラーが原因で、コア・ファイルのダンプが起きます。
コア・ファイルの名前は "core" で、 アプリケーションが実行されているディレクトリーにあります。 システム・コア・ファイルは、DB2 コア・ファイルとは別であることに注意してください。 DB2 コア・ファイルについては、ダンプ・ファイルを参照してください。
dbx システム・コマンドを使用して、 どの関数がコア・ファイルの作成の原因となったかを判別できます。 これは、データベース管理プログラムまたは DB2 コネクトがエラーを起こしたかどうかを識別したり、 問題の原因はオペレーティング・システムまたはアプリケーションのエラーなのかどうかを識別するのに役立つ簡単な検査です。
注:
dbx program_name core_filenameここで、program_name は、 異常終了したプログラムの名前であり、core_filename は、 コア・ファイル・ダンプを含んでいるファイルの名前です。
core_filename パラメーターはオプションです。 これを指定しなければ、デフォルト名の "core" が使用されます。
次の例は、dbx コマンドを使用して、 "main" という名前のプログラムについてのコア・ファイルを読み取る方法を示しています。
dbx main
dbx version 3.1 for AIX. Type 'help' for help. reading symbolic information ... [using memory image in core] segmentation.violation in freeSegments at line 136 136 (void) shmdt((void *) pcAdress[i]); (dbx) where freeSegments(numSegs = 2, iSetId = 0x2ff7f730, pcAddress = 0x2ff7f758, line 136 in "main.c" main (0x1, 2ff7f7d4), line 96 in "main.c"
上記の例では、メモリー・ダンプを引き起こした関数の名前は "freeSegments" です。 関数名が "db2"、"sql"、または "ddcs" で始まっている場合、 エラーがデータベース管理プログラムまたは DB2 コネクト製品で起きた可能性があることを示します。
この例は、where サブコマンドの使用も示しています。 障害個所へのプログラム・パスを表示するために、dbx プロンプトから where を入力します。 この例では、"main.c" の第 96 行から呼び出された freeSegments の第 136 行でエラーが起きました。