向量中调试断言失败错误

问题描述:

我正在编写一些使用第三方开源库的函数。在发布模式下,它随机崩溃,但没有其他信息。所以,我试图调试这个问题。向量中调试断言失败错误

,当我在调试模式下运行,我得到的:

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

看起来像第三方库是越野车,不能使用。 –

你的调试器有一个名为“调用堆栈”功能。它显示的所有功能顺序堆叠他们互相呼叫

当发生崩溃时,您位于该调用堆栈的顶部,现在只是向下查看调用堆栈,直到找到自己的代码为止,双击该函数并将IDE指向您到代码位置。

在Visual Studio中:菜单调试> Windows>调用栈(Ctrl + Alt + C)。

+0

谢谢!我的堆栈有五行,最上面的一行是msvcp140d.dll!00007ffd173f0806()\t未知。当我点击它时,给出'pdb没有加载。所以我应该在下面的线看看是什么造成这种情况? (我也会自己接受关于调用堆栈的教育)再次感谢 – anti

+1

右键单击msvcp ...行并选择“加载符号”,这将从MS符号服务器下载PDB。您可能必须首先在选项>调试下启用符号服务器。 – zett42