让人郁闷的幽灵程序o(╯□╰)o--大家都来发表下写程序时的意外状况

clear117 2010-12-04 08:50:55
本人用C++开发了个程序,24小时不间断运行,每刻钟生成一个文件。同时写日志文件-记录程序运行情况,插日志表-记录文件生成状况。

此程序在测试服务器上连续运行几天都没点问题,但是到正式服务器上却来鬼了。先是晚上11:03 日志文件不再写,但是程序继续运行,11:15的文件没有写,但是日志表里有了此时文件的生成记录。到11:30 程序结束运行,但是没有任何报错,就像是非循环时的正常结束一样。

此事第二天有出现,晚上日志文件更新时间22:24分,22:30的文件没有生成,但是插入了日志表记录。22:45分程序终止,又没有任何报错。程序运行时的打印信息都已录入到一个文本中,包括unix系统没给任务错误信息出来。

太诡异了
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
clear117 2010-12-08
  • 打赏
  • 举报
回复
结贴结贴了,多谢各位高手的建议^_^ 事情已解决。是日志模块处理的内存未处理好
yutaooo 2010-12-04
  • 打赏
  • 举报
回复

LZ能检查进程的Termination Status吗? 最好是查查为什么进程退出。接收到信号退出,还是执行流中的正常退出。也许写个程序做父进程,用waitpid()来获得。

ulimit -c unlimited
也是不错的。
clear117 2010-12-04
  • 打赏
  • 举报
回复
LS 不是LZ
clear117 2010-12-04
  • 打赏
  • 举报
回复
LZ 的老兄。。。。。
15分钟是生成需要的统计文件,不是日志。日志文件是实时写的。
luciferisnotsatan 2010-12-04
  • 打赏
  • 举报
回复
这每15分钟写次日志也太......
程序的运行日志就应该不停的写,出了问题你可以查看日志,发现那出错了。
15分钟写一次,如果在写前崩了,日志里估计很难找到线索
yutaooo 2010-12-04
  • 打赏
  • 举报
回复

我怀疑这样的问题是没有正确关闭资源。比如,文件只是打开,没有关闭。运行了较长时间后,到达了上限。或者,文件的描述符耗尽。

建议检查一下,OPEN_MAX,getrlimit()这类的东西。
xuting0 2010-12-04
  • 打赏
  • 举报
回复
对写入日志的代码添加检测!!
clear117 2010-12-04
  • 打赏
  • 举报
回复
对写入日志的代码添加检测!! 恩 值得一试
clear117 2010-12-04
  • 打赏
  • 举报
回复
多谢楼上的提议。

不过没有多线程,内存也查看过,就没超过17056。
现在我也是在走查啊,94等的时间太常,基本都是7,8个小时候才终止。
现在最疑惑的就是为什么日志的输出会突然终止。 实在不行,我也只有再重新迁移一次试试了
cranium 2010-12-04
  • 打赏
  • 举报
回复
还是你程序中存在BUG哦

应该对写入日志的那段代码添加一些检测和调试日志输出,这样怎么出的错误也有东西可查。

我曾经写的一些小程序,放到朋友机器上就无法完成应有的功能,程序确不出错,自己机器上又好好的。因为程序中没有相关的输出信息,导致这样的错误很难查找,后来修改源代码,添加了大量的调试输出信息,什么地方出错了,查一查记录就明白了。
arong1234 2010-12-04
  • 打赏
  • 举报
回复
这种东西很难发表啥观点的,只有不断地调试/不断地代码走查。总之这个问题肯定是你代码的bug,别人又不知道你代码怎么写的,是不会知道出了什么事情的
长时间的观察,看看是不是每次都是同一个时间出问题(怀疑不是这样)
关注内存访问越界
如果有多线程,关注线程的并发保护

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧