对于您喜欢的语言有哪些专家调试提示,您认为每个人都应该使用?
作为一个例子,我将提供我的C++调试提示,它们之间的帮助我摆脱了我遇到的大多数错误,这种常常难以调试的语言.
C++
将编译器的警告级别提高到最大值,然后停止那些发生很多的警告,并且你已经决定不关心(对我来说它是未使用的参数).在警告级别非常高之前,g ++不会警告函数中缺少返回语句(我经常发现的问题).
学习如何打开编译器的调试标准库,并使用它!(-D_GLIBCXX_DEBUG for g ++).这会发现许多错误,还有助于准确显示错误发生的位置.
始终,始终,始终通过一个非常好的内存检查器(如valgrind)运行代码,并修复它产生的所有问题.
Magnus Westi.. 5
了解VS内存处理程序在处理内存时写入的不同幻数是什么意思.
0xCDCDCDCD在堆中分配,但未初始化.通过malloc
0xCCCCCCCC在堆栈上分配,但未初始化.
0xDDDDDDDD释放堆内存.通过自由
0xFDFDFDFD"NoMansLand"围栏自动放置在堆内存的边界.永远不应该被覆盖.如果你覆盖了一个,你可能会走出数组的末尾.
0xFEEEFEEE HeapFree删除的内存
0xBAADF00D在堆中分配,但未初始化.通过HeapAlloc
0xABABABAB不知道.如果有人知道这意味着什么,请添加.
了解VS内存处理程序在处理内存时写入的不同幻数是什么意思.
0xCDCDCDCD在堆中分配,但未初始化.通过malloc
0xCCCCCCCC在堆栈上分配,但未初始化.
0xDDDDDDDD释放堆内存.通过自由
0xFDFDFDFD"NoMansLand"围栏自动放置在堆内存的边界.永远不应该被覆盖.如果你覆盖了一个,你可能会走出数组的末尾.
0xFEEEFEEE HeapFree删除的内存
0xBAADF00D在堆中分配,但未初始化.通过HeapAlloc
0xABABABAB不知道.如果有人知道这意味着什么,请添加.