首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将输出重定向到gdb中的文件

将输出重定向到gdb中的文件
EN

Stack Overflow用户
提问于 2014-05-21 05:02:41
回答 2查看 1.8K关注 0票数 1

我目前正在打印gdb中变量的内容,如下所示:

代码语言:javascript
复制
(gdb) call printf("%s",buffer)

缓冲区包含一个很大的字符串,我想将其重定向到文件而不是屏幕。在gdb中启用logging功能在这里没有帮助。而且我也不能使用>命令来重定向。当然,我可以在程序中创建一个文件,并将缓冲区写入该文件,然后通过gdb调用写入文件。但有没有更简单的办法呢?

EN

回答 2

Stack Overflow用户

发布于 2014-05-21 12:19:16

这会将目标的标准输出重定向到您选择的文件,调用printf,然后将标准输出恢复为以前的设置。在更改文件描述符之前调用fflush,以便将输出发送到正确的位置。

代码语言:javascript
复制
$ gdb f
...
(gdb) list
1   #include <stdlib.h>
2   #include <stdio.h>
3   #include <string.h>
4   
5   main()
6   {
7       char buf[] = "test";
8   
9       printf("%p  ", (void *)buf);
10      printf("%d\n", strlen(buf));
11  }
(gdb) break 10
Breakpoint 1 at 0x80484d3: file f.c, line 10.
(gdb) run
Starting program: f 
Breakpoint 1, main () at f.c:10
10      printf("%d\n", strlen(buf));
(gdb) call fflush(stdout)
0xbffff117  $1 = 0
(gdb) call dup(1)
$2 = 3
(gdb) call creat("/tmp/outputfile",0644)
$3 = 4
(gdb) call dup2(4,1)
$4 = 1
(gdb) call printf("%s\n", buf)
$5 = 5
(gdb) call fflush(stdout)
$6 = 0
(gdb) call dup2(3,1)
$7 = 1
(gdb) call close(3)
$8 = 0
(gdb) call close(4)
$9 = 0
(gdb) cont
Continuing.
4
[Inferior 1 (process 3214) exited with code 02]
(gdb) shell cat /tmp/outputfile
test
票数 2
EN

Stack Overflow用户

发布于 2014-05-21 05:18:13

你不能使用>,或者你不知道如何在gdb中使用它?您可以从gdb内部重定向输出。尝试:

(gdb) run > out.txt

(gdb) run > /dev/null

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23769905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档