2011-05-05 272 views
2

有時候我的應用程序中的某些代碼部分損壞了堆棧。但問題只會在一段時間後才能看到。所以我們無法確定問題的確切位置。是否有任何工具可以在破壞堆棧後立即檢測C++應用程序中的堆棧損壞?檢測到堆棧損壞

是否有任何windbg工具來識別此?

+0

請參閱http://stackoverflow.com/questions/413477/is-there-a-good-valgrind-substitute-for-windows – jlew 2011-05-05 17:02:56

回答

5

編譯與/RTCs,它啓用堆棧幀運行時錯誤檢查。請參閱/RTC (Run-Time Error Checks)

+0

是否可以在發佈版本中使用/ RTC? – Maanu 2011-05-05 17:12:48

+0

@Maanu - 是的,但成本很低。 – 2011-05-05 17:43:02

+0

@Steve Townsend感謝您的幫助 – Maanu 2011-05-06 06:00:12

0

腐敗總是發生在同一個地方嗎?如果是這樣,您可以輕鬆地使用調試器來設置觀察點,以檢測該位置的寫入操作,並查看誰在執行損壞操作。有時,分析破壞堆棧的數據也可以幫助你 - 例如,如果它是一個字符串,你可能能夠縮小正在寫入它的代碼。

+0

應用程序在不同點崩潰。 – Maanu 2011-05-05 17:01:41