2010-11-28 18 views
17

私はgdbを使ってプログラムをデバッグしています。私がブレークポイントを見逃したり、別のウォッチポイントを追加することに決めたときは、そのプロセスを終了してそれを再実行する必要があります。既存のgdbを添付するために、私はattach <pid>を使用します。しかし、私は新しいプロセスのPIDを見つけなければなりません。gdbコマンドプロンプトから外部コマンドを実行するにはどうすればよいですか?

今日私がやっているのは、gdbを中断し、ps -C <program_name>でpidを取得し、gdbに接続することです。私は、Linuxに取り組んでいます

attach `ps -C <program_name>` 

私はGDB内部からこのような何かを行うことができるように、シェルに終了せず、GDBのコマンド・プロンプトからUNIXコマンドを実行する方法はあります。

答えて

18

(GDB)のヘルプシェル
は、シェルコマンドとして 行の残りの部分を実行します。 引数がない場合は、下位シェルを実行します。

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

9
gdb$ shell 

shell$ execute_your_commands 

shell$ exit 

gdb$ you_have_returned_back_to_gdb_prompt 
4

あなたはちょうどあなたが実行したいコマンド、例えば:

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

これは前の回答のちょうど短い形式で続いshellを使用することができます。

+0

このモードでは、gdbはコアダンプがあるときに問題を検出したり、報告できないようです。 – Derek

1

受け入れられた回答を拡張するだけで、shellのショートカットは!です。

(gdb)help!

残りの行をシェルコマンドとして実行します。引数がない場合、 は下位シェルを実行します。

関連する問題