我有一個很少發生的錯誤,但崩潰了我的C++程序。似乎我有一個緩衝區溢出問題或類似的東西。我發現這些類型的錯誤是最難診斷的。如何記錄何時寫入特定內存位置以及使用哪個函數?
我的程序總是崩潰,因爲內存位置相同。是否有一些調試工具可以檢測何時寫入特定的內存位置並記錄執行該功能的功能?
我使用Visual Leak Detector(VLD)進行內存泄漏檢測,效果很好。它會替換它自己的原始malloc並記錄每個分配。我想知道是否有類似的記憶?
我知道這樣的事會削弱一個程序,但它可能是非常有幫助的。
我使用Visual Studio 2008的
@Matthieu :(關於編輯註釋)gcc和gdb在Windows,BSD和OS X上也很棒! :) – 2010-03-31 14:55:23
但是,如果使用不同的編譯器,不會有內存損壞問題的風險不同。我一直認爲gdb需要用gcc編譯程序:/ – 2010-03-31 15:00:55
@Matthiew:實際上,大部分是(但真正的要求是必須能夠讀取調試符號格式,如果你想使用這些)。我並不是建議rusbi應該接受gdb的答案,但它仍然有用,因爲那些不使用VS的人會發現它有用,當他們發現這個問題時。評論是一個友好的jibe,因爲你暗示gcc只能在Linux上運行。 – 2010-03-31 15:21:18