什么会导致程序中的非确定性输出?

Lir*_*evi 0 c linux debugging deterministic

我在多进程程序中有一个错误.程序接收输入并立即产生输出,不涉及网络,并且没有任何时间参考.导致这个错误难以追踪的原因是它有时只会发生.

如果我经常运行它,它会产生正确和不正确的输出,没有可辨别的顺序或模式.

什么可以导致这种非确定性行为?那里有工具可以提供帮助吗?有可能存在未初始化的变量.我怎么找到那些?

编辑:问题解决了,感谢任何建议 种族条件的人.我没想到它主要是因为我确信我的设计可以防止这种情况.问题是我使用'等待'而不是'waitpid',因此有时,当某个过程足够幸运地在我期待之前完成时,事情的正确顺序变得疯狂.

Jon*_*eet 5

你说这是一个"多进程"程序 - 你能更具体一点吗?在你如何处理多个过程中,这可能是一个竞争条件.

如果您可以告诉我们更多关于流程如何交互的信息,我们可能会想出一些可能性.需要注意的是,虽然使用调试器的阿尔乔姆的建议是在其本身很好,你需要知道,引入一个调试器很可能改变这一局面彻底 -尤其是当它涉及到竞争条件.就个人而言,我很喜欢记录很多,但即使这样也可以巧妙地改变时间.