4

几个星期以来,我遇到了这种情况,非常令人不安,

我的程序调试得很好,没有错误,当我运行程序时,它完成了工作的初始部分,几秒钟后它终止到“中断继续”选项,当我查看时在调用堆栈中,它变成发现它来自 ntdll.dll 和 msvcr100d.dll 的错误,这似乎是与 Windows 相关的 SDK 问题,它似乎也是一个错误的指针。我不知何故无法控制这一点。我将 Windows SDK 安装到 7.0 但似乎没有任何改变,

使用:Windows 7 64 位,Boost 1.48,Visual Studio 编译器(完整版),openCV2.3,c++。

我尝试了很多选择,

例如。转到任务管理器,然后右键单击 devenv.exe 并在“设置亲和力”中仅选择一个重新安装 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 服务器加载调试符号(从...加载符号),然后堆栈跟踪可能会发生一些变化。对每个带有未定义符号的 dll 重复该操作。

在您下载调试符号之前,您可能正在查看错误的堆栈跟踪。

于 2012-06-12T08:58:03.620 回答
0

这开始发生在我身上,没有明显的原因。查看项目属性后,我注意到工作目录以某种方式被删除(它只是空白),在将其设置回正确的目录后,一切又开始工作了。

显然我的简单修复可能对你不起作用,我很幸运。

于 2018-07-01T17:03:16.317 回答