2017-02-19 121 views
0

我正在編寫一些使用第三方開源庫的函數。在發佈模式下,它隨機崩潰,但沒有其他信息。所以,我試圖調試這個問題。向量中調試斷言失敗錯誤

,當我在調試模式下運行,我得到的:

vector <bool> iterator not dereferencable錯誤,並且它打破以

const _Vbase *_Getptr() const 
     { // get pointer to base word 
#if _ITERATOR_DEBUG_LEVEL == 2 
     if (this->_Getcont() == 0 
      || this->_Myptr == 0 
      || 0 <= this->_Valid(0)) 
      { // report error 
      _DEBUG_ERROR("vector<bool> iterator not dereferencable"); 
      _SCL_SECURE_OUT_OF_RANGE; 
      } 

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector

我知道有信息關於這個在這裏,搜索告訴我,這很可能是一個將太多元素填充到矢量中的問題。

我的問題是:

由於斷點vector發生,而不是在我的代碼,或第三方的代碼,我怎麼能找到它的具體功能是造成這個錯誤?

(第三方庫散落着兩vector<bool>iterator

謝謝。

+1

如何調試101:調用堆棧 – LogicStuff

+0

啊我明白了。調用堆棧中的當前行只顯示:> \t msvcp140d.dll!00007ffd173f0806()\t未知。當我點擊它時,給出'pdb沒有加載。 – anti

+0

看起來像第三方庫是越野車,不能使用。 –

回答

1

你的調試器有一個名爲「調用堆棧」功能。它顯示的所有功能順序堆疊他們互相呼叫

當發生崩潰時,您位於該調用堆棧的頂部,現在只是向下查看調用堆棧,直到找到自己的代碼爲止,雙擊該函數並將IDE指向您到代碼位置。

在Visual Studio中:菜單調試> Windows>調用棧(Ctrl + Alt + C)。

+0

謝謝!我的堆棧有五行,最上面的一行是msvcp140d.dll!00007ffd173f0806()\t未知。當我點擊它時,給出'pdb沒有加載。所以我應該在下面的線看看是什麼造成這種情況? (我也會自己接受關於調用堆棧的教育)再次感謝 – anti

+1

右鍵單擊msvcp ...行並選擇「加載符號」,這將從MS符號服務器下載PDB。您可能必須首先在選項>調試下啓用符號服務器。 – zett42