c - gdb 打印到文件

标签 c debugging redirect gdb printf

我将我的临时字符串打印到标准输出:

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/

相关文章:

c - C语言中long double的读入

c++ - CMake 编译时定义

c++ - 如何修复“无法使用 value_type 类型(又名 Derived*)的左值初始化 Base* 类型的返回对象?

php - 如何重定向以 100% 确定重定向后 REFERRAL 已清除

ruby-on-rails - ruby on rails redirect_to(:back) not working

java - java中如何将对象写入文件?

c - json-c:从子数组访问值的最简单方法

Java Debugger 运行应用程序而不会中断

c++ - 可以禁用 "Application Error"对话框吗?

java - 将数据传递到表单时的重定向后获取?