attach
GDBでは既に常駐しているプロセスをattachしてデバッグすることができます。
プロセスをいきなりattachするので、どこでattachするかはタイミングになります。
まずgdbを起動し、
attach プロセスID
を実行します。「Attaching to program~」というようなメッセージが表示されたらattachできています。
attachは非常に便利で、プログラムが複数ファイルからなる複雑なプログラムの場合
where
と実行すると、どのファイルから起動され、その次にどの関数に行き、といったトレースを出力してくれます。
システム把握するのに非常に便利です。
detach
attachしたプロセスは、必ず
detach
を実行してプロセス開放します。「Detaching from program~」というようなメッセージが表示されたらdetachできています。
いきなりGDBをquitするとプロセスがkillされてしまいますので必ずdetachします。
実行すると以下のような表示があらわれます。
attachに失敗
attachに失敗すると「attach failed~」と表示されます。
これは他の開発者が既にattachしているためか、もしくは何らかの原因でgdbプロセスがattachしたままの状態で残っている時に発生します。
gdbをkillするしかありません。その時、そのgdbがattachしているプロセスもkillされますので注意してください。