問題
Linux システムの Core ファイルを読み取る方法
解決策
Core ファイルを読み取る際は、Core ファイルを生成した OS と同じバージョンの OS 上で作業を行います。
以下の場所に Core ファイルをコピーします。
/opt/VRTSralus/bin
file core.#### > filecoreoutput.txt
これにより、Core ファイルの作成の原因となったプロセスが表示されます。
コマンド出力の例を次に示します。
core.3975: setgid sticky ELF 64-bit LSB core file AMD x86-64, version 1 (SYSV), SVR4-style, from 'beremote'
file コマンドの出力が 'beremote' で終わらない場合は、その Core ファイルは Backup Exec RALUS Agent によるものではなく、指定されたプロセスによって引き起こされたものであることがわかります。
次のコマンドにより beremote が起動していないことを確認します。
ps -ef | grep beremote
続いて、以下のコマンドを実行します。
gdb ./beremote core.#### 2>&1 | tee /opt/VRTSralus/bin/gdb.txt
(gdb) bt
(gdb) quit
gdb.txt と filecoreoutput.txt をテクニカルサポートに送付します。
以下に、よく使われる GDB コマンドを紹介します。
break [file:]function
プレークポイントを (file 内の) function に設定します。
run [arglist]
プログラムの実行を開始します (もし引数があれば arglist に指定します)。
bt
バックトレース: プログラムのスタックを表示します。
print expr
式の値を表示します。
c
プログラムの実行を再開します (たとえばブレークポイントで実行を中断した後)。
next
次のプログラム行を実行します (停止状態の後)。 関数呼び出しはトレースされず、関数呼び出しの次の行まで実行されます(ステップオーバー)。
edit [file:]function
現在中断している場所のプログラム行をエディターで開きます。
list [file:]function
現在中断している場所の近辺のプログラムソースを表示します。
step
次のプログラム行を実行します (停止状態の後)。 関数呼び出しの場合は、呼び出した関数内をステップ実行します。
help [name]
GDB コマンド name についての情報や、 GDB を使う上での一般的な情報を表示します。
quit
GDB. を終了します。