私は GNU autotools を使用するプロジェクトに取り組んでいるので、gdb を使用してコードをデバッグするために、libtool 内から gdb を実行しています。
libtool --mode=execute gdbtui foobar
gdb/libtool を終了して再起動する手間をかけずに、変更されたバージョンのプロジェクトを再読み込みできますか?
libtool --mode=execute
gdb に渡される一時的な実行可能ファイルを作成します。この実行可能ファイルは再構築時に削除されます。トリックは、次のようなものでそれを再現することです
libtool --mode=execute echo ./hello
(Libtool は一時的な実行可能ファイルを再作成し、その名前を command に渡します。たとえば、出力を抑制したり、存在しないコマンドを抑制したりするために、echo
の代わりに他のコマンドを使用できます。)echo
true
実行可能ファイルをリロードするには、gdbfile
filename
コマンド ファイルを使用します。実行可能な実名は、起動時に gdb によって表示されます。
$ libtool --mode=execute gdb --args ./hello
...
Reading symbols from /path/to/.libs/lt-hello...done.
(gdb)
info inferiors
gdbコマンドでも表示されます。
(gdb) info inferiors
Num Description Executable
* 1 <null> /path/to/.libs/lt-hello
そしてもちろん、上記のecho
コマンドによって。
あなたが何を尋ねているのか正確に判断するのは少し難しいですが、あなたが正しく理解できたことを願っています.
gdb
はい、通常、デバッグされたコマンドが最初から開始されている限り、内部から再度実行できますgdb
。実際、これは の一般的なワークフローですgdb
。1 つのウィンドウ/タブ/ペインで使用してデバッグし、別のウィンドウでコードを修正し、3 番目のウィンドウで再構築します。
gdb
開始する方法の 1 つは次のとおりです。
# gdb --args command arg1 arg2 ...
もう一つは:
# gdb command
後者の場合、このように gdb プロンプトからプログラムを起動するだけです。
(gdb) run arg1 arg2 ...
前者では、引数は暗示されます(そして によって記憶されますgdb
)。どちらの場合でも、次を使用して事後に引数を取得できます。
(gdb) show args
バグをヒット、分析、修正したら、プログラムを再構築し、run
(以前の引数を再利用する) のみを使用して再実行し、修正を検証するか、別の問題のデバッグを続行するのが一般的です。