私はgdbを実行していて、これらの不幸な神オブジェクトの1つを調べたいと考えています。全体を見るには多くのページが必要です(そして24インチのモニターを横向きにしています!)使いやすさのために、オブジェクトを画面ではなくファイルに出力して、オブジェクトを開くことができます。 viを使って簡単に移動できます。gdbのすべての汎用性には、これを行う方法があるはずです。
私はgdbを実行していて、これらの不幸な神オブジェクトの1つを調べたいと考えています。全体を見るには多くのページが必要です(そして24インチのモニターを横向きにしています!)使いやすさのために、オブジェクトを画面ではなくファイルに出力して、オブジェクトを開くことができます。 viを使って簡単に移動できます。gdbのすべての汎用性には、これを行う方法があるはずです。
回答:
ロギングを有効にする必要があります。
(gdb) set logging on
使用するファイルを指定できます。
(gdb) set logging file my_god_object.log
また、現在のロギング構成を調べることができます。
(gdb) show logging
set logging file my_god_object.log
前に設定すべきではないset logging on
ですか?
tail -f
、awk
今日は本当に役に立ちました。ありがとう!
次のrun
コマンドを使用して、gdbからファイルに出力をリダイレクトできることがわかりました。
(gdb) run > outfile
@qubodupの答えを拡張する
gdb core.3599 -ex bt -ex quit |& tee backtrace.log
-ex
スイッチは、GDBのコマンドを実行します。したがって、上記はコアファイルをロードし、bt
コマンドを実行してからコマンドを実行しますquit
。出力はbacktrace.log
画面にも書き込まれます。
別の便利なgdb呼び出し(すべてのスレッドからのローカル変数でスタックトレースを与える)は
gdb core.3599 -ex 'thread apply all bt full' -ex quit
gdb -c core.3599 ...
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)set height 0
この記事で見つけました:https : //askaralikhan.blogspot.com/2016/05/gdb-all-threads-bt-to-file.html?showComment=1584614942454#c4584028195226226351332
set logging redirect on
。