printf语句没有显示出来

时间:2012-11-09 03:59:07

标签: visual-c++ printf

我正在使用Microsoft Visual C ++ 6.0并尝试调试其他人的程序。我试图使用printf语句但由于某些原因,这些语句在程序运行时不会显示在屏幕上。我能够使用fprintf将这些语句打印到文件中,但是当程序在执行过程中崩溃时,这是无用的,因为文件将为空。

如何强制某些输出到屏幕?

1 个答案:

答案 0 :(得分:1)

要强制输出到屏幕,请参阅下面的第一部分。下面的第二个和第三个选项也适用于调试这些程序崩溃。

将printf与fflush结合使用(改进Vishal Kumar的答案)

Vishal Kumar的回答对我有用,但我必须做一些研究才能找到如何使用fflush。我有一个问题,我的程序在printf语句的“中间”崩溃,这是没有意义的。以下是我对他答案的改进。如果调试器难以使用(例如多线程),则可以在每个printf(或fprintf)语句后使用fflush。例如,“胡椒你的代码”:

... // code
printf("Part 1 executed successfully");
fflush(stdout); // flushes the stdout buffer
... // further code
printf("Part 2 executed successfully");
fflush(stdout);
... // repeat as necessary

运行,观察输出,并在打印的最后一个语句和第一个不打印的语句之间放置更多的print语句,直到找出问题为止。

<强>调试器

如果你能够使用调试器,那么比如上所述使用输出语句编写代码更有效,但是在某些情况下你必须诉诸于此。

<强> Valgrind的

如果您正在使用Linux(我收集的不是因为它在MS Visual C ++中),那么valgrind是另一个选项,可以查看代码崩溃的位置(以及检测内存泄漏)。如果您的代码是为编译而编译的,如果您的程序名为“myProgram”,您可以从终端窗口调用,如下所示:

valgrind myProgram