找到一个完全讨厌的复杂的Schröding-Bohr-Bug

时间:2011-05-21 11:30:46

标签: c++ initialization

我的程序中有一个非常讨厌的错误,随着时间的推移变得非常复杂。这可能是我曾经遇到过的最糟糕的错误。

认为它可能与静态变量初始化惨败有关,但我怎样才能确保自己呢?

当bug出现时,程序在启动后的随机点由于堆损坏而崩溃,但远在main()函数内部。

说实话,我不知道该怎么做。

我在使用Microsoft Visual Studio 2010的Windows 7上

3 个答案:

答案 0 :(得分:1)

  

我的计划,变得相当复杂   随着时间的推移

您是否保留以前版本的备份? 找到一个有效的旧版本并继续使用该版本...

有一句名言: “调试的难度是首先编写代码的两倍。因此,如果你尽可能巧妙地编写代码,那么根据定义,你不够聪明,无法调试它。” --Brian Kernighan

如果这个程序变得比你能处理的更复杂,那么可能是时候考虑重构了。

(这绝不是贬低或被视为人身攻击......)

答案 1 :(得分:0)

在调试器中运行程序,然后逐步执行代码,直到看到错误。在您认为可能导致错误的任何地方放置断点。

答案 2 :(得分:-2)

尝试使用gdb调试程序。