【发布时间】:2011-11-01 13:30:04
【问题描述】:
在我的团队正在开展的一个大型复杂项目中,我目前正面临着我曾经遇到过的最邪恶的错误之一。我们使用 C++ 作为编程语言,目前使用 Visual Studio 进行开发,尽管最终产品旨在跨平台运行。
错误:
我们的系统中有一个错误会在看似随机的执行点触发崩溃。崩溃的原因通常是每次执行程序时都会更改地址的读取访问冲突。有时我们也会遇到堆损坏错误。调用堆栈将我们引向代码库中的不同点,而很少引向某些外部库(在我们的例子中是 Lua),这些错误显然不存在。
似乎这个错误在过去 4 个月里一直在发展。在那段时间之前,大致上,我的一些团队成员看到前端程序崩溃的方式和位置与现在非常相似。
更多细节:
我们的代码库大约有 800K 行纯 C++(不包括 cmets),开发时间为 3 年。 当前项目重约 300K。我们之前使用过过多的单元测试和其他方法来消除错误,例如断言、智能指针等。
我和其他人已经尝试找到这个错误超过 2 周了。对我来说,这不仅仅是一场噩梦。在这样一个复杂的项目中,面对现在的复杂性,即使是好的旧 printf 调试似乎也失败了。
我的问题
我们在这里面临什么样的错误?甚至有这个名字吗?这种错误在其他大型项目中是否经常发生?
在使用各种实用程序、在各种平台和各种构建设置上进行了 2 周的无果调试后,我们可以做些什么来找到并消除它?
(我之前的问题已经结束,所以这次我试图更好地表述它并提供更多细节,链接:https://stackoverflow.com/questions/7154645/how-is-this-kind-of-bug-called)
【问题讨论】:
-
Arf,零星的错误是最糟糕的。是时候学习使用调试工具了。