不可重现的运行时错误 - 一般方法?

Jul*_*ian 7 c++ debugging ubuntu runtime-error

我正面临着一个如此神秘的问题,我甚至不知道如何制定这个问题......我甚至无法发布任何代码.

我自己开发了一个大项目,从头开始.这几乎是发布时间,但我无法摆脱一些恼人的错误.我的程序不时写一个输出文件,在此期间我得到:

  • std :: string out_of_range错误
  • std :: string length_error
  • 输出上只是很多废话

值得注意的是,即使使用相同的输入,这些错误也很少出现并且永远无法再现.Memcheck显示没有内存冲突,即使在之前发现错误的运行中也是如此.Cppcheck也没有抱怨.我强烈地使用STL和pthreads,但没有后者,也会发生错误.

我尝试了最新的g ++和icpc.我正在运行某些版本的Ubuntu,但我不相信这就是原因.

我很感谢你们,如何解决这些问题.提前致谢.

Eri*_*rik 2

启用核心转储(ulimit -c 或 setrlimit()),获取核心并启动 gdb。或者,如果可以的话,进行设置,始终在 gdb 下运行,以便当错误最终发生时您可以获得一些可用信息。