几个星期以来,我遇到了这种情况,这让我非常沮丧,
我的程序调试得很好,没有错误,当我运行程序时,它会执行初始部分
工作,几秒钟后它终止为“中断继续”选项,当我查看调用堆栈时,结果发现它是来自 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
最佳答案
右键单击包含 ntdll.dll 的堆栈行(在堆栈跟踪中)并从 Microsoft 服务器加载调试符号(从...加载符号),然后堆栈跟踪可能会发生一些变化。对每个带有 undefined symbol 的 dll 重复该操作。
在您下载调试符号之前,您可能正在查看错误的堆栈跟踪。
关于c++ - ntdll.dll [下面的帧可能不正确/缺失,没有为 ntdll.dll 加载符号],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10992712/