如果调用,许多最近的UNIX stdio实现将刷新所有缓冲区fflush(NULL)
:
(gdb) call fflush(0)
Run Code Online (Sandbox Code Playgroud)
但通常你不应该这样做:如果你打电话printf
(而不是fprintf
),那stdout
就是你的终端,这通常是线路缓冲的.因此,只要您printf
打印了一个新行,缓冲区就会在printf
返回后刷新.
GDB 允许您直接从命令行调用 C 函数。所以你可以做
(gdb) call setbuf(stdout, NULL)
Run Code Online (Sandbox Code Playgroud)
现在,唯一的问题是我不知道如何在运行时“获取”实际值stdout
。
编辑这可能会有所帮助(来自文档):
call setbuf(fdopen(1, "w"), 0)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4879 次 |
最近记录: |