【发布时间】:2021-09-25 23:05:15
【问题描述】:
当我尝试从 gdb 内部调试一段代码并且控件到达 outputFile 的 fprintf 语句时,它不会在文件中生动地显示输出并且它只是显示为空,尽管只需一个从终端简单运行程序。
从 gdb 内部调试时,如何在 outputFile 上获得生动的输出?
注意:我不是在谈论 gdb,我只是在问如何在从 gdb 调试时动态地在文件中获得输出。
【问题讨论】:
-
不要解释你的代码——那几乎没用。发布您的代码、您获得的输出以及您期望的输出。
-
默认情况下,连接到常规文件的流是块缓冲的,因此您写入的数据不会被传递到文件,直到(i)您填满缓冲区,(ii)您 @987654323 @ 流,或者 (iii) 您通过
fclose()或通过正常的程序终止干净地关闭文件。 -
@AndrewHenle 我不是在谈论任何特定的代码,我是在谈论 gdb 的一般行为以及任何 fprintf 语句,直到程序完全终止或我需要它时输出才会显示保持活力,所以我希望我不需要放一段只包含一个 fprintf 语句的代码来表达我的观点
-
该行为与
gdb没有特别关联。只是您使用gdb将程序执行暂停在您可以轻松观察缓冲效果的位置。 -
@Susano 在宇宙中如何讨论“gdb 的一般行为”以任何方式有用when the PDF user manual for gdb is 890 pages???这不是讨论网站...