4

これを使用して一時的な文字列を標準出力に出力します。

printf "%s", nodeToString(myNode)

しかし、この文字列をファイルに出力したいと思います。

ここに記載されている解決策を試しましたが、printf の結果は標準出力に出力されます。

編集: cIph3r の回答の説明。

ここで私がコマンドラインで試したこと:

$ gdb 

(gdb) attach 23053

(gdb) printf "%s", nodeToString(myNode)  // This works and outputs to screen

(gdb) run printf "%s", nodeToString(myNode) > outputfile  // I get this warning
The program being debugged has been started already.
Start it from the beginning? (y or n) 
4

1 に答える 1

4

gdb は bash のようにパイプライン処理を実行できますが、コマンドラインから gdb を使用する方法しか知りません。

まず、gdb を実行して、何をデバッグするかを指定します。

gdb ./prog

次に、gdbで、次のようにプログラムを実行できますrun

run 

ここでは、引数を指定して実行することもできます:

run argv1 argv2

ただし、bash-pipeline コマンドで実行することもできます。

run > outputfile

これはと同じです

./prog > outputfile

ただし、出力 gdb-output が必要な場合は、

(gdb) print "test"
$s1 = "test"

これは正しい方法ではありません。あなたはそのようにします:

(gdb) set logging on

ただし、デバッグしたいプログラムが実行されているときは、これを行わないように注意してください

それでもうまくいかない場合は、tee を使用して gdb から stdout をキャプチャし、ファイルにリダイレクトできます。

gdb ./prog | tee output.log

次に、gdb-output も output.log に保存されます (ただし、すべて stdout)。

output.loggdbを終了した後、gdbで見たすべてを含むというファイル名があります

于 2013-02-18T16:09:14.100 に答える