Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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++ C++;:越来越复杂的错误误导了调试器_C++_Visual Studio_Debugging - Fatal编程技术网

C++ C++;:越来越复杂的错误误导了调试器

C++ C++;:越来越复杂的错误误导了调试器,c++,visual-studio,debugging,C++,Visual Studio,Debugging,我的项目中的bug似乎正在演变。在开始时,程序崩溃的原因很容易通过调试器(程序崩溃后它指向的那一行)发现,但现在不同了 许多bug导致程序在完全任意的地方崩溃,甚至与它们没有密切关系 如何更好地发现从调试器“隐藏”的bug (我使用Visual Studio 2010)为内存损坏分析代码,并使用内存损坏检查实用程序,如gflags或调试堆。“浮动”的崩溃几乎总是来自于C++程序中的内存损坏 根本原因分析。 当您发现一个明显的错误时,不要只是修复该错误,而是修复允许它的编码样式。如果您有任何使

我的项目中的bug似乎正在演变。在开始时,程序崩溃的原因很容易通过调试器(程序崩溃后它指向的那一行)发现,但现在不同了

许多bug导致程序在完全任意的地方崩溃,甚至与它们没有密切关系

  • 如何更好地发现从调试器“隐藏”的bug

(我使用Visual Studio 2010)

为内存损坏分析代码,并使用内存损坏检查实用程序,如gflags或调试堆。“浮动”的崩溃几乎总是来自于C++程序中的内存损坏

根本原因分析。
当您发现一个明显的错误时,不要只是修复该错误,而是修复允许它的编码样式。

如果您有任何使用原始内存和指针的代码,请使用std::vector及其迭代器分配的内存替换它。在发布模式下,它将编译成完全相同的快速代码,但在调试模式下,它将使用检查迭代器,这将尽早捕获一些错误。

显然,编码风格是在C函数后将Lua堆栈凌乱一项。+1,我非常喜欢这个建议。@Komn:在这种情况下,您可以使用RAII对象捕获它,该对象在输入时保存Lua堆栈深度,并在返回时验证它。在发布版本中,您可以跳过检查。然后,通过采用使用此RAII堆栈检查器的编码样式,而不是直接调用Lua堆栈操作函数,您将很容易发现问题。