2017-02-19 12 views
0

サードパーティのオープンソースライブラリを使用する関数をいくつか書いています。リリースモードでは、ランダムにはThe programme has stopped workingでクラッシュしますが、その他の情報はありません。だから、私はこの問題をデバッグしようとしています。アサーションにエラーが発生しました。

私がデバッグモードで実行すると、私が手:

vector <bool> iterator not dereferencableエラーを、そしてそれは私がこれについての情報が存在しているはず

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

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; 
      } 

にブレイクここで検索すると、ベクトルに要素をあまりにも多く入れると問題が発生する可能性が最も高いことがわかります。

私の質問は:

ブレークポイントはどのように私は、特定の関数がこのエラーの原因となっている見つけることができ、vectorではなく、私のコード、またはサードパーティのコードで発生したよう?

(サードパーティのライブラリがvector<bool>iteratorの両方が散らばっている。

ありがとう。

+1

デバッグする方法101:コールスタック – LogicStuff

+0

ああ、私は参照してください。コールスタックの現在の行には、> \t msvcp140d.dll!00007ffd173f0806()\tが不明です。そしてそれをクリックすると、 'pdbはロードされません。 – anti

+0

サードパーティのライブラリはバグがあり、使用できないようです。 –

答えて

1

あなたのデバッガは、「コールスタック」という名前の機能を持っている。それは、順番彼らのすべての関数のスタックを示し

クラッシュが起きたとき、あなたはそのコールスタックの一番上にいます。自分のコードを見つけるまで、コールスタックを見下ろすだけです。コード場所に移動します。

Visual Studioの場合:メニュー>デバッグ> Windows>コールスタック(Ctrl + Alt + C)。

+0

ありがとう!私のスタックには5つの行があり、先頭にmsvcp140d.dll!00007ffd173f0806()\t不明です。そしてそれをクリックすると、 'pdbはロードされません。だから、私は下の行を見て、これを引き起こしているのを見なければならないでしょうか? (私は自分自身もコールスタックについて教えてくれます)もう一度 – anti

+1

msvcp ...行を右クリックし、 "load symbols"を選択すると、MSシンボルサーバからPDBがダウンロードされます。 [オプション]> [最初にデバッグ]の下でシンボルサーバーを有効にする必要があります。 – zett42

関連する問題