2011-01-13 68 views
0

从VS2005转换为VS2008的项目中,我得到缓冲区溢出错误。 我想知道是否有任何工具可以帮助找到发生缓冲区溢出的位置。从VS2005转换为VS2008的项目中的缓冲区溢出错误

+0

是的,调试器工作正常。 – 2011-01-13 16:47:46

+0

你的意思是visual studio调试器?看着调用堆栈,我可以缩小到发生错误的模块。但是该模块仍然有许多功能。那么,有什么办法可以指出一个产生错误的函数吗? – Lakshmi 2011-01-13 17:33:01

回答

0

我假设你使用的是C++。

在微软的c + +有一个编译器开关/GS找出是否有缓冲区溢出。有关细节和工作原理,请参阅MSDN Compiler Security Checks In Depth

至少在c#开发中(但也希望在C++中)有一个调试器选项 “发生异常时中断...”,如果引发异常则停止程序执行(因为C++运行时检测到有一个缓冲区溢出,在VS2010是在调试/例外...

您还可以使用Microsofts PREfast,它可以扫描你的源代码为由于差异的存在安全隐患的功能(的strcpy)

0

中的sprintf behavoiur,一非空终止的字符串被写入超出数组边界,这反过来损坏了堆栈并导致缓冲区溢出。音频报告缓冲区溢出,因此可以帮助找出系统崩溃的原因。