Gdbを使用してプログラムをデバッグしています。ブレークポイントを見逃したり、別のウォッチポイントを追加することにした場合は、プロセスを強制終了して再実行する必要があります。既存のgdbをそれにアタッチするために、私はattach <pid>
を使用します。ただし、新しいプロセスのpidを見つける必要があります。
今日私がそれを行う方法は、gdbを一時停止し、ps -C <program_name>
でpidを取得してから、gdbに戻って接続することです。
シェルを終了せずにgdbコマンドプロンプトからunixコマンドを実行する方法はありますか?そうすれば、gdb内から次のようなことができます。
attach `ps -C <program_name>`
私はLinuxに取り組んでいます。
(gdb)ヘルプシェル
残りの行をシェルコマンドとして実行します。引数なしで、下位のシェルを実行します。
終了後、「exit」を使用してgdbに戻ることができます。
gdb$ Shell
Shell$ execute_your_commands
Shell$ exit
gdb$ you_have_returned_back_to_gdb_Prompt
Shell
に続けて、実行するコマンドを使用できます。例:
gdb$ Shell g++ tsort.c -o tsort
これは前の答えの短い形式です。
受け入れられた答えを拡張するために、Shell
のショートカットは!
です。
(gdb)ヘルプ!
行の残りの部分をシェルコマンドとして実行します。引数なしで、下位のシェルを実行します。