发生分段错误时,printf()在它不执行之前.
main()
{
printf( "something" );
statement; //this statement causes a segmentation fault
}
Run Code Online (Sandbox Code Playgroud)
在上面的情况中,为什么printf()不执行?
所以我需要在这种情况下使用valgrind(在错误语句之前打印所有printf()).
eci*_*cik 11
确保"\n"在printf语句中包含换行符.通常,至少在UNIX系统中,stdout是行缓冲的,因此换行符会使该行立即显示.你可能省略了"\n"(或者你的输出没有因其他原因被刷新),这就是你看不到打印字符串的原因.
另一个选择是fflush(stdout)在调用后自己刷新输出printf.
Ric*_*d T 10
在程序崩溃之前输出流可能无法输出,但您可以通过使用fflush()刷新输出字节来输出它们.
我通常会这样做:
if (trace) { fflush(stdout); }
Run Code Online (Sandbox Code Playgroud)