2011-01-13 59 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,一非空終止的字符串被寫入超出數組邊界,這反過來損壞了堆棧並導致緩衝區溢出。音頻報告緩衝區溢出,因此可以幫助找出系統崩潰的原因。