私はgdbを実行していますが、これらの不幸な神のオブジェクトの1つを調べたいです。全体を見るには多くのページが必要です(そして、24インチモニターを横向きにしています!)使いやすさのために、gdbでオブジェクトを画面ではなくファイルに印刷して、 viと簡単に移動できます。すべてのgdbの汎用性により、これを行う方法が必要になりますか?
ロギングを有効にする必要があります。
(gdb) set logging on
使用するファイルを指定できます。
(gdb) set logging file my_god_object.log
また、現在のロギング構成を調べることができます。
(gdb) show logging
run
コマンドを使用して、gdbからの出力をファイルにリダイレクトできることがわかりました。
(gdb) run > outfile
@qubodupの答えを拡張する
gdb core.3599 -ex bt -ex quit |& tee backtrace.log
-ex
スイッチはgdbコマンドを実行します。したがって、上記はコアファイルをロードし、bt
コマンドを実行してから、quit
コマンドを実行します。出力はbacktrace.log
に書き込まれ、画面にも書き込まれます。
もう1つの便利なgdb呼び出し(すべてのスレッドからのローカル変数を使用してスタックトレースを与える)は
gdb core.3599 -ex 'thread apply all bt full' -ex quit
https://sourceware.org/gdb/onlinedocs/gdb/Logging-Output.html から:
Gdbコマンドの出力をファイルに保存することもできます。 gdbのロギングを制御するコマンドがいくつかあります。
set logging on
ロギングを有効にします。
set logging off
ロギングを無効にします。
set logging file file
現在のログファイルの名前を変更します。デフォルトのログファイルはgdb.txtです。
set logging overwrite [on|off]
デフォルトでは、gdbはログファイルに追加します。代わりにログファイルを上書きするようにログオンを設定する場合は、上書きを設定します。
set logging redirect [on|off]
デフォルトでは、gdb出力は端末とログファイルの両方に送られます。ログファイルのみに出力する場合は、リダイレクトを設定します。
show logging
ロギング設定の現在の値を表示します。
出力を見ながらgdbをファイルに記録する簡単な方法(コマンドの記述を容易にする)は、tee
を使用することです。
gdb command |& tee gdb.log
ここには多くの良い答えがありますが、私のために働いた唯一のものを投稿する必要があります:
[niko@my-laptop]# gdb MyBinary 2>&1 log.txt
これは、gdb andバイナリ出力を同じlog.txtファイルに取得する唯一の方法であり、コンソールでも確認できます。
編集:
注意:出力は、gdb出力とバイナリ出力の間で部分的に同期されていないようです。誰か確認できますか? telnet/sshクライアントに、コンソールに表示される出力を記録する機能があるかどうかを確認することをお勧めします。