我一直在想,爲什麼應用程序我現在正在修復運行,所以在調試模式下運行速度相對於發行版來說太慢了。該比率可高達600倍,其中500ms運行需要5分鐘。在VS2010中禁用迭代器調試
我已經放棄了可用於windows的任何profiler,他們都有一些屬性,使他們吸吮,無論是崩潰,沒有加載符號...所以我決定從統計。我用暫停按鈕隨機暫停執行。這段代碼片段在我暫停時大部分時間出現:
#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy != 0)
{ // adopted, remove self from list
_Iterator_base12 **_Pnext = &_Myproxy->_Myfirstiter;
while (*_Pnext != 0 && *_Pnext != this)
_Pnext = &(*_Pnext)->_Mynextiter;
if (*_Pnext == 0)
_DEBUG_ERROR("ITERATOR LIST CORRUPTED!");
*_Pnext = _Mynextiter;
_Myproxy = 0;
}
#endif /* _ITERATOR_DEBUG_LEVEL == 2 */
這是在Visual Studio文件中。我跟蹤瞭如何定義_ITERATOR_DEBUG_LEVEL
,並發現將_HAS_ITERATOR_DEBUGGING
設置爲零會阻止_ITERATOR_DEBUG_LEVEL
從2
。
現在我會張貼在_HAS_ITERATOR_DEBUGGING
被設置代碼(編輯:這是文件Microsoft Visual Studio 10.0\VC\include\yvals.h
),但是當我去項目屬性->
C/C++ ->
Preprocesor並添加_HAS_ITERATOR_DEBUGGING=0
,在Visual Studio進入死循環我必須殺掉devenv.exe
。
幸運的是,我沒有未保存的更改(斷點除外)。爲什麼會發生這種情況,以及如何解決這個問題?許多功能無法在調試模式下進行測試,因爲它可能需要幾年的時間。
VS版本信息:
Microsoft Visual Studio 2010
Version 10.0.40219.1 SP1Rel
您可以從斷點窗口將斷點導出到文件。所以你不必一次又一次手動設置它們。我無法在VS10中的簡單測試項目中重現此錯誤,因此它看起來要麼取決於您的項目,要麼取決於您的VS更新。你有沒有安裝VS10 SP1? – Ari0nhh
@ Ari0nhh這可能取決於項目的確。我不是作者,所以我很迷茫。我想我需要有人告訴我我應該尋找什麼。我用visual studio版本信息更新了我的問題。它具有SP1和Microsoft自動更新服務的多個更新。 –
您是否嘗試禁用所有插件/擴展? – typ1232