2017-02-19 12 views
0

Я пишу некоторые функции, которые используют стороннюю библиотеку с открытым исходным кодом. В режиме выпуска он случайным образом падает с 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; 
      } 

в

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 ... и выберите «загрузить символы», это скажет PDB с сервера символов MS. Возможно, вам придется включить сервер символов в разделе «Параметры»> «Отладка». – zett42

Смежные вопросы