gpt4 book ai didi

debugging - 如何告诉GDB刷新正在调试的程序的stdio

转载 作者:行者123 更新时间:2023-12-02 14:41:35 25 4
gpt4 key购买 nike

stdio 通常是缓冲的。当我命中断点并且断点之前有一个 printf 时,打印的字符串可能仍在缓冲区中,而我看不到它。

我知道我可以通过在程序中添加一些刷新代码来刷新stdio。如果不这样做,有没有办法告诉GDB在GDB停止后刷新正在调试的程序的stdio?这种方式在调试程序时更加友好。

最佳答案

如果您调用 fflush(NULL),许多最新的 UNIX stdio 实现将刷新所有缓冲区:

(gdb) call fflush(0)

如果您没有安装libc调试符号,您可能需要告诉GDB有关fflush的类型:

(gdb) call ((void(*)(int))fflush)(0)

但通常情况下您不必这样做:如果您调用了 printf (而不是 fprintf),则会调用 stdout,其中转到您的终端,该终端通常是行缓冲的。因此,只要您的 printf 打印了一个新行,缓冲区就会在 printf 返回后被刷新。

关于debugging - 如何告诉GDB刷新正在调试的程序的stdio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8251269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com