Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 找到一个完全令人讨厌、复杂的Schrö;丁波尔虫_C++_Initialization - Fatal编程技术网

C++ 找到一个完全令人讨厌、复杂的Schrö;丁波尔虫

C++ 找到一个完全令人讨厌、复杂的Schrö;丁波尔虫,c++,initialization,C++,Initialization,我的程序中有一个非常讨厌的bug,它随着时间的推移变得非常复杂。这可能是我遇到过的最严重的虫子 我认为这可能与静态变量初始化失败有关,但我如何确保我自己 当bug出现时,程序会在启动后的任意点,但在main()函数的内部,由于堆损坏而崩溃 老实说,我不知道该怎么办 我在使用Microsoft Visual Studio 2010的Windows 7上尝试使用gdb调试您的程序。在调试器中运行您的程序,并逐步检查代码,直到您发现问题所在。将断点放在您认为可能导致错误的任何位置 我的程序变得相当复杂

我的程序中有一个非常讨厌的bug,它随着时间的推移变得非常复杂。这可能是我遇到过的最严重的虫子

我认为这可能与静态变量初始化失败有关,但我如何确保我自己

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

老实说,我不知道该怎么办


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

尝试使用gdb调试您的程序。

在调试器中运行您的程序,并逐步检查代码,直到您发现问题所在。将断点放在您认为可能导致错误的任何位置

我的程序变得相当复杂 久而久之

您是否保留以前版本的备份? 查找一个可用的旧版本,并基于该版本继续工作

有一句名言: “调试的难度是一开始编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您就没有足够的智慧来调试它。”——Brian Kernighan

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


(这绝不是有意贬低或被视为人身攻击…

该调试器在Windows上也能工作吗?有点,但VS2010配备了一个比GDB更好的调试器(用户友好得多)。使用它。我已经在使用它了,但它不会给我带来更多。该程序完美地运行到某一点,并在不相关的第三方库中的一个完全不相关的函数上随机崩溃。调用堆栈没有帮助他们逐步完成程序的早期部分。如果您怀疑该错误与静态初始化有关,请逐步完成所有静态的初始化,并验证它们在使用时是否处于正确状态。@George“我使用Microsoft Visual Studio 2010在Windows 7上运行”如果您不能帮助自己,那么我们就不能肯定地帮助您,因为我们没有您的代码。无代码==“不是一个真正的问题”。没有它就不可能调试。我怀疑它与静态无关,而使用“静态初始化Fasaso”这个术语的人通常都是从其屁股中讲出来的。堆损坏在写得很烂的C++程序中非常常见——你可能删除了两次,或者改写了一些东西。