4

数週間後、私はこの状況に遭遇し、それは非常に動揺しました、

私のプログラムは非常によくデバッグされ、エラーはありません。プログラムを実行すると、ジョブの最初の部分が実行され、数秒後に「ブレークコンティニュー」オプションで終了し、コールスタックで確認すると次のようになります。 ntdll.dllとmsvcr100d.dllからのエラーは、Windows関連のSDKの問題のようですが、ポインタも悪いようです。私はどういうわけかこれを制御することはできません。Windows SDKを7.0にインストールしましたが、何も変わらないようです。

使用:Windows 7 64ビット、Boost 1.48、Visual Studioコンパイラ(フルバージョン)、openCV2.3、c++。

私は多くのオプションを試しましたが、

例えば。タスクマネージャーに移動し、devenv.exeを右クリックして、「setアフィニティ」から1つだけを選択し、Windows SDKを再インストールし、自分のプロジェクトを数回再インストールします。

何も私を助けませんでした、誰かが私に良い解決策を提案できますか?

より明確にするために、ここに私のコールスタックがあります

ntdll.dll!77e615de()    
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
ntdll.dll!77e615de()    
ntdll.dll!77e5014e()    
msvcr100d.dll!_getptd_noexit()  Line 500    C
ntdll.dll!77eb73bc()    
ntdll.dll!77ea3c48()    
ntdll.dll!77e5016e()    
msvcr100d.dll!_getptd_noexit()  Line 500    C
ntdll.dll!77eb74df()    
ntdll.dll!77eb73bc()    
ntdll.dll!77ea3c48()    
ntdll.dll!77e5016e()    
msvcr100d.dll!_getptd_noexit()  Line 500    C
ntdll.dll!77eb74df()    
ntdll.dll!77eb73bc()    
ntdll.dll!77ea3c48()    
ntdll.dll!77e5016e()    
msvcr100d.dll!_getptd_noexit()  Line 500    C
ntdll.dll!77eb74df()    
ntdll.dll!77eb73bc()    
ntdll.dll!77ea3c48()    
kernel32.dll!770012ea()     
kernel32.dll!77001314()     
msvcr100d.dll!_getptd_noexit()  Line 500    C
ntdll.dll!77eb74df()    
ntdll.dll!77eb73bc()    
ntdll.dll!77ea3c48()    
ntdll.dll!77e5016e()    
msvcr100d.dll!_getptd_noexit()  Line 500    C
ntdll.dll!77e9b459()    
ntdll.dll!77e9b42b()    
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::clear()  Line 1415  C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::erase(std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> > > _First, std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> > > _Last)  Line 1383 C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::_Tidy()  Line 1866 + 0x5d bytes C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::~_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >()  Line 792 C++
bowExample.exe!std::set<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::~set<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >()  + 0x2b bytes   C++
bowExample.exe!set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::~set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >()  + 0x63 bytes  C++
bowExample.exe!set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::`scalar deleting destructor'()  + 0x2b bytes   C++
bowExample.exe!boost::checked_delete<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >(set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > * x)  Line 34 + 0x2b bytes C++
bowExample.exe!boost::scoped_ptr<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >::~scoped_ptr<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >()  Line 80 + 0xb bytes  C++
bowExample.exe!bowTest(CBoWIMUParams & BOWIMUPARAMS)  Line 192 + 0xf bytes  C++
bowExample.exe!main(int argc, char * * argv)  Line 225 + 0xc bytes  C++
bowExample.exe!__tmainCRTStartup()  Line 555 + 0x19 bytes   C
bowExample.exe!mainCRTStartup()  Line 371   C
kernel32.dll!7700339a()     
ntdll.dll!77e79ef2()    
ntdll.dll!77e79ec5()    

シンボルをロードした後のコールスタックは次のとおりです

ntdll.dll!_ZwRaiseException@12()  + 0x12 bytes  
ntdll.dll!_ZwRaiseException@12()  + 0x12 bytes  
msvcr100d.dll!__getptd_noexit()  + 0xae bytes   

bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::clear()  Line 1415  C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::erase(std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> > > _First, std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> > > _Last)  Line 1383 C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::_Tidy()  Line 1866 + 0x5d bytes C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::~_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >()  Line 792 C++
bowExample.exe!std::set<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::~set<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >()  + 0x2b bytes   C++
bowExample.exe!set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::~set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >()  + 0x63 bytes  C++
bowExample.exe!set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::`scalar deleting destructor'()  + 0x2b bytes   C++
bowExample.exe!boost::checked_delete<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >(set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > * x)  Line 34 + 0x2b bytes C++
bowExample.exe!boost::scoped_ptr<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >::~scoped_ptr<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >()  Line 80 + 0xb bytes  C++
bowExample.exe!bowTest(CBoWIMUParams & BOWIMUPARAMS)  Line 193 + 0xf bytes  C++
bowExample.exe!main(int argc, char * * argv)  Line 216 + 0xc bytes  C++
bowExample.exe!__tmainCRTStartup()  Line 555 + 0x19 bytes   C
bowExample.exe!mainCRTStartup()  Line 371   C
kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes    
ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes   
ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes    
4

2 に答える 2

14

ntdll.dll を含む (スタック トレース内の) スタック行を右クリックし、Microsoft サーバーからデバッグ シンボルをロードします (Load symbols from...)。スタック トレースはおそらく少し変化します。未定義のシンボルを含む各 dll に対して操作を繰り返します。

デバッグ シンボルをダウンロードするまでは、おそらく間違ったスタック トレースを見ていることになります。

于 2012-06-12T08:58:03.620 に答える
0

これは明らかな理由もなく私に起こり始めました。プロジェクトのプロパティを確認した後、作業ディレクトリが何らかの理由で削除されていることに気付きました (空白になっているだけです)。正しいディレクトリに戻すと、すべてが再び機能し始めました。

明らかに、私の簡単な修正はうまくいかないかもしれませんが、幸運でした。

于 2018-07-01T17:03:16.317 に答える