web-dev-qa-db-ja.com

gdbコマンドプロンプトから外部コマンドを実行するにはどうすればよいですか?

Gdbを使用してプログラムをデバッグしています。ブレークポイントを見逃したり、別のウォッチポイントを追加することにした場合は、プロセスを強制終了して再実行する必要があります。既存のgdbをそれにアタッチするために、私はattach <pid>を使用します。ただし、新しいプロセスのpidを見つける必要があります。

今日私がそれを行う方法は、gdbを一時停止し、ps -C <program_name>でpidを取得してから、gdbに戻って接続することです。

シェルを終了せずにgdbコマンドプロンプトからunixコマンドを実行する方法はありますか?そうすれば、gdb内から次のようなことができます。

attach `ps -C <program_name>`

私はLinuxに取り組んでいます。

23
Nathan Fellman

(gdb)ヘルプシェル
残りの行をシェルコマンドとして実行します。引数なしで、下位のシェルを実行します。

終了後、「exit」を使用してgdbに戻ることができます。

22
Huang F. Lei
gdb$ Shell

Shell$ execute_your_commands 

Shell$ exit

gdb$ you_have_returned_back_to_gdb_Prompt
15
Sandeep Singh

Shellに続けて、実行するコマンドを使用できます。例:

gdb$ Shell g++ tsort.c -o tsort

これは前の答えの短い形式です。

7
Anand Rawat

受け入れられた答えを拡張するために、Shellのショートカットは!です。

(gdb)ヘルプ!

行の残りの部分をシェルコマンドとして実行します。引数なしで、下位のシェルを実行します。

3
bezet