我有应用程序退出时发生异常的应用程序。 Callstack显示当CoUnintialize被调用时异常来自CComPtr :: release。如何在应用程序退出时诊断comptr版本中的异常
> ieframe.dll!ATL::CComPtr<IWebBrowser2>::Release() + 0x5b bytes
ieframe.dll!CConnectionPoint::UnadviseAll() + 0x131d0 bytes
ieframe.dll!CConnectionPoint::~CConnectionPoint() + 0x18 bytes
ieframe.dll!CShellOcx::~CShellOcx() + 0xf7 bytes
ieframe.dll!CWebBrowserOC::`scalar deleting destructor'() + 0x14 bytes
ieframe.dll!CAggregatedUnknown::CUnkInner::Release() + 0x474a1 bytes
ole32.dll!CStdIdentity::ReleaseCtrlUnk() Line 1149 C++
ole32.dll!CStdMarshal::Disconnect(unsigned long dwType) Line 3454 C++
ole32.dll!CStdMarshal::DisconnectAndRelease(unsigned long dwType) Line 3161 + 0x11 bytes C++
ole32.dll!COIDTable::ThreadCleanup() + 0x31bed bytes C++
ole32.dll!FinishShutdown() Line 1035 C++
ole32.dll!ApartmentUninitialize(int fHostThread) Line 1291 C++
ole32.dll!wCoUninitialize(COleTls & Tls, int fHostThread) Line 2709 + 0x7 bytes C++
ole32.dll!CoUninitialize() Line 2632 C++
imm32.dll!000007feff3832f2()
[Frames below may be incorrect and/or missing, no symbols loaded for imm32.dll]
msctf.dll!000007fefeea7d59()
ntdll.dll!RtlProcessFlsData() + 0x84 bytes
ntdll.dll!LdrShutdownThread() + 0x4b bytes
ntdll.dll!RtlExitUserThread() + 0x38 bytes
IEShims.dll!NS_CreateThread::DesktopIE_ThreadProc() + 0xd6 bytes
kernel32.dll!BaseThreadInitThunk() + 0xd bytes
ntdll.dll!RtlUserThreadStart() + 0x21 bytes
的例外是访问冲突
你们所面临的情况也是这样吗?我可以运用什么策略来找出这个根源? 到现在我已经做了以下
- 我用WinDBG的,但例外,我在WinDbg中获得不同的是我在这里获得VS2010中什么是真正的例外是相同的“访问冲突”,但堆栈跟踪different.I不是很windbg的专家来弄清楚这一点。windbg中的任何指针都可以追踪它?
- 我试图删除一些代码,但它也没有炒锅。
到'CoUninitialize'调用的时刻,您应该终止所有COM活动。你没有发生。 –
堆腐败足以解释这一点。 –