在工作中有一个功能:根据文件a、b产生一个新文件c。
a、c里都是整数数组,b是文本格式,具体流程可以理解为:
整数数组文件a + 文本文件b = 整数数组文件c。
按我们的流程,理论上整数数组里不应该有负数,但是现在生成的c中检查出了负数。
后来我们添加了一个脚本,当检查出c中有负数时,就把当时的a、b和可执行文件保存下来,
以备调试。当我们用出错情况时保存的a、b再执行时,产生的c却没有负数了。
不知道哪位碰到过这种情况。
我感觉和其中设置c的缓存区可能有关,如下所示,但没有理论依据:
FILE *fp = fopen(c, "wb");
char* buf = new char[2097152];
setvbuf(fp, buf, _IOFBF, 2097152);
会不会和内核选项有关?因为这种情况只在新机器上出现,旧机器上没有出现过,新
旧机器的软件版本和硬件配置基本相同,但配置文件有130多处不同。(配置文件太大就不附上了)
有没有用到多线程?问题随机出现么?再观察观察
补充:是单线程,也就是只有一个主进程,问题是随机出现的,我们这边是10分钟执行一次,每天可能会出现一次,有时一天都不出现。
看上去还是要多添加一些分析信息,比如出现负数时,可以还记录一下计算的相关数据,然后后来分析是否计算有问题等