我正面臨一個很難找到的錯誤。基本上發生的是,一個線程釋放一個內存塊,而另一個線程仍然有一個引用它(這不是我的代碼,這使得一切更難...)。在Visual Studio中是否存在與malloc_history等效的內容?
我是Windows平臺上的新成員,但我已嘗試使用Application Verifier和PageHeap啓用它 - 存在的問題是,錯誤不再發生(可能是因爲現在一切都比較慢 - 所以我正在處理與古典比賽條件)。在Linux下,我會嘗試使用Valgrind來處理這種錯誤 - 但這可能與Application Verifier具有相同的效果(不再看到錯誤..)。
在Mac OS X上,我會使用malloc_history來追蹤這個錯誤。那麼在Visual Studio或WinDbg中有沒有相同的東西?我想這樣做的是以下幾點:
- 在調試器中運行該程序,直到其與段錯誤
- 突破獲得釋放對象的地址,並從那裏得到其中塊居然刪除了堆棧跟蹤。
這可能與一些Windows/Visual Studio工具?
我從來沒有使用過它,但是這個工具看起來有潛力:http://drmemory.org/ –