【发布时间】:2011-07-27 13:36:22
【问题描述】:
好的,我正在处理我的操作系统作业。我需要编写一个微内核,它能够用线程、信号量、事件等做一些基本的事情。 BCC 3.1 正在模仿我的系统环境。经典的调试真的没用。我正在以 cout 风格进行调试。 问题是 cout 的奇怪行为。它以块或其他形式写出来。如果我这样做,比如 40 个 couts,它会写出所有内容。如果我做了 39 个,它不会写任何一个。另一方面,如果我在 40 到 79 个 couts 之间进行,它仍然只写前 40 个,但如果我做了 80 个,它们都可以,等等。数字不准确,我不确定数字是多少。但我也注意到改变 cout-ed 的字符串长度的效果相同。只有我不知道有多少个字符等于一个 cout 调用。 可根据要求提供更多信息。谢谢转发。
【问题讨论】:
-
cout被缓冲。在需要时flush()它,或者附加endls 刷新,或者写入cerr,这是无缓冲的。 -
cerr 不起作用。冲洗(cout)没有效果。我的意思是,cerr 确实会写出来,但方式与 cout 相同。
-
那么您的环境可能也在缓冲。顺便提一句。我想你的意思是
std::cout.flush()而不是flush(std::cout)? -
冲洗不起作用。我怎样才能知道它是否正在缓冲?
标签: c++ debugging cout borland-c++ microkernel