Linuxでプロセスをgdbでデバッグする方法は?
プロセスをGDBでデバッグするには、最初にプログラムをデバッグ情報付きでコンパイルする必要があります。これにより、GDBがプログラムのシンボルテーブルを正しく解析できます。GDBを使用してデバッグする際には、以下の手順を使用できます。
- コンパイルプログラム時にデバッグ情報を追加します。デバッグ情報を含む実行可能ファイルを生成するためにコンパイラの -g オプションを使用します。例えば、以下のコマンドを使用してCプログラムをコンパイルします:
- gcc -g -o プログラム プログラム.c
- GDBを実行し、デバッグする実行ファイルを指定してコマンドラインで実行してください。
- プログラムをgdbでデバッグ
- ソースコードの特定の行にブレークポイントを設定することで、GDBコマンドラインでブレークポイントを設定できます。例えば、10行目にブレークポイントを設定するには、次のコマンドを使用します:
- 休憩 十
- プログラムを起動してください。プログラムを実行してデバッグを開始するには、runコマンドを使用してください。例えば:
- 走る (はしる)
- プログラムがブレークポイントに到達すると、GDBは停止してあなたのコマンドを待ちます。nextコマンドを使用して手順ごとに実行したり、stepコマンドを使用して文ごとに実行したり、または継続コマンドを使用して次のブレークポイントまでプログラムを実行することができます。
- プログラム実行中に変数の値を取得します。print命令を使用すると、プログラムが停止したときに現在の変数の値を確認できます。例えば:
- 変数を表示する
- プログラム実行中に関数の呼び出しを追跡します。backtraceコマンドを使用して現在の関数呼び出しスタックを表示し、upおよびdownコマンドを使用して関数呼び出しスタックを上下に移動できます。
- デバッグ中には、他のGDBコマンドを使用してプログラムの状態を表示や変更することもできます。例えば、watchコマンドで変数の値の変化を監視したり、setコマンドで変数の値を変更したり、infoコマンドで現在のプログラムの状態を確認したりすることができます。
GDBを終了するには、デバッグが完了した後にquitコマンドを使用してください。
これはGDBデバッグの基本ステップに過ぎません。 GDBには、条件付きブレークポイント、メモリの表示など、さらに高度なデバッグ機能も提供されています。 GDBのドキュメントを参照するか、helpコマンドでさらに情報を取得できます。