我将我的临时字符串打印到标准输出:
printf "%s", nodeToString(myNode)
但我想将这个字符串打印到一个文件中。
我尝试了解决方案 here , 但 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)
最佳答案
gdb 可以像 bash 一样执行流水线操作 但我只知道如何从命令行使用 gdb。
首先,运行 gdb 并告诉它应该调试什么:
gdb ./prog
然后在 gdb 中,您可以使用 run
run
在这里您也可以使用参数运行它:
run argv1 argv2
但您也可以使用 bash 管道命令运行它:
run > outputfile
这是一样的
./prog > outputfile
但是,如果你想要输出 gdb-output,比如
(gdb) print "test"
$s1 = "test"
这不是正确的方法。你那样做:
(gdb) set logging on
但请记住不要在您要调试的程序运行时执行此操作
如果所有这些都不起作用,您可以使用 tee 从 gdb 捕获标准输出并将其重定向到一个文件:
gdb ./prog | tee output.log
然后 gdb 输出也保存在 output.log 中(但都是标准输出)
退出 gdb 后,有一个名为 output.log
的文件,其中包含您在 gdb 中看到的所有内容
关于c - gdb 打印到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14940391/