我正在编写一些使用第三方开源库的函数。在发布模式下,它会随The programme has stopped working
随机崩溃,但没有其他信息。所以,我正在尝试调试这个问题。
当我在调试模式下运行时,我得到:
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;
}
in
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector
我知道这里有关于此的信息,搜索告诉我,很可能是在向量中填充太多元素的问题。
我的问题是:
由于断点发生在vector
中,而不是我的代码或第三方代码中,如何找到导致此错误的特定函数?
(第三方图书馆充斥着vector<bool>
和iterator
。
谢谢。
答案 0 :(得分:1)
您的调试器有一个名为&#34; call stack&#34;的功能。它按照彼此调用的顺序显示所有函数的堆栈。
发生崩溃时,您处于该调用堆栈的顶部。现在,只需向下看调用堆栈,直到找到自己的代码。双击该功能,IDE将您指向代码位置。
在Visual Studio中:菜单调试&gt; Windows&gt;调用堆栈(Ctrl + Alt + C)。