web-dev-qa-db-ja.com

GDBの継続を停止するにはどうすればよいですか

私は初めてGDBを初めて使用します。走る

$ gdb

それから私は走っています

attach <mypid>

次に、プロセスがスタックしていることがわかります(おそらく問題ありません)。実行を続けたいので、実行します

continue

私のプロセスは実行を続けますが、ここから現在のスタックトレースなどをもう一度見たい場合は行き詰まります。続行できなくなってしまいました... Ctrl-D などなど、私には何もうまくいきませんでした...(推測でした)。

22
Jas

Gdbによって接続されているプロセスを中断する必要があります。 gdb自体を中断しないでください。プロセスが開始された端末でctrl-cを使用してプロセスを中断するか、kill -2 procidを使用してプロセスにSIGINTを送信します。 procidを使用して、アタッチされるプロセスのID。

17
Lopje

GdbプロセスのControl + Cを押すと、コマンドプロンプトに戻ります。

5
Tyler McHenry

ここに短い 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ユーザーグループ へのリンクです。お役に立てれば。

4