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

标签 c++ debugging ubuntu runtime-error

我面临一个如此神秘的问题,我什至不知道如何提出这个问题......我什至无法发布任何代码。

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

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

值得注意的是,这些错误很少出现并且永远不会重现,即使输入相同也是如此。 Memcheck 没有显示内存违规,即使在之前发现错误的运行中也是如此。 Cppcheck 也没有提示。我大量使用 STL 和 pthreads,但没有后者也会发生错误。

我尝试了最新的 g++ 和 icpc。我在某些版本的 Ubuntu 上运行,但我不认为这是原因。

如果您能就如何解决此类问题提供帮助,我将不胜感激。 提前致谢。

最佳答案

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

关于c++ - 不可重现的运行时错误 - 一般方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5153583/

相关文章:

c# - 当观察变量改变时暂停执行?

ruby-on-rails - 创建成为可执行 chmod 777 gihook 文件的文件

c++ - 运行最基本的 sfml 应用程序时的性能问题

c++ - 设置类对象的成员数据

c++ - 未处理的异常 : _com_error at memory location 0x0040f4ac

ruby-on-rails - 如果找不到@import怎么办?

c++ - 黑盒系统。自定义主机上的安全软件

c++ - QSqlTableModel::setData() 对于 Qt::EditMode 也返回 false

c++ - 为什么在 Release模式下可以在调试器中监视部分变量?

python - 如何使用 VSCode 和管道命令进行调试