私は初めてGDBを初めて使用します。走る
$ gdb
それから私は走っています
attach <mypid>
次に、プロセスがスタックしていることがわかります(おそらく問題ありません)。実行を続けたいので、実行します
continue
私のプロセスは実行を続けますが、ここから現在のスタックトレースなどをもう一度見たい場合は行き詰まります。続行できなくなってしまいました... Ctrl-D などなど、私には何もうまくいきませんでした...(推測でした)。
Gdbによって接続されているプロセスを中断する必要があります。 gdb自体を中断しないでください。プロセスが開始された端末でctrl-cを使用してプロセスを中断するか、kill -2 procidを使用してプロセスにSIGINTを送信します。 procidを使用して、アタッチされるプロセスのID。
GdbプロセスのControl + Cを押すと、コマンドプロンプトに戻ります。
ここに短い GDBチュートリアル があり、ここに 完全なGDBマニュアル があります。
デバッグのポイントは、プログラムの興味深い/疑わしい部分を検査することです。 Breakpoints ソースの場所で実行を停止できます watchpoints 興味深いデータが変更されたときに停止できます。
簡単な例:
(gdb) break my_function
(gdb) cont
これにより、my_function
の先頭にブレークポイントが挿入されるため、プログラムの実行が関数に入ると、プログラムが中断され、GDBプロンプトが表示され、 プログラムの状態を検査 できるようになります。 。または、コードを通じて step を実行できます。
(gdb) watch my_var
(gdb) cont
同じですが、プログラムはmy_var
の値を変更する場所で停止します。
恥知らずなプラグイン-これは GDBプレゼンテーションNYC BSDユーザーグループ へのリンクです。お役に立てれば。