3 com debugging activex visual-studio
我试图跟踪我们处理com对象的错误.我们的程序是从我们的activeX控件启动的,当应用程序再次关闭时会出现一些问题.我想在我们的应用程序首次从OCX启动时,将visual studio(2008)调试器附加到我们的应用程序中.我怎样才能做到这一点?
一些细节:
a)OCX和应用程序主要用c/c ++编写,只有一点c ++/cli(在启动应用程序时没有任何作用)
b)如果我在程序运行时附加到程序,我会在olelock退出时得到一个断言的.cpp
void AFXAPI AfxOleUnlockApp()
{
AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
ASSERT(pModuleState->m_nObjectCount != 0); <--- Triggers this
if (InterlockedDecrement(&pModuleState->m_nObjectCount) == 0)
{
// allow application to shut down when all the objects have
// been released
::AfxOleOnReleaseAllObjects();
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我首次从OCX启动时,我想将调试器附加到我们的程序中,这样我就可以尝试跟踪COM对象的生命周期.或许还有另一种方法来追踪这些物体?
gflags 是一般情况下你会考虑的复杂场景.特别是此页面用于在启动时无条件地调试应用程序.
但是,我认为这对你想要的东西来说太过分了.我通常只是在我的程序中转储一些代码,如果它是在DEBUG模式下构建并且在代码启动时按下F1键,它将等待附加调试器.像这样的代码不应该留下来,但它非常方便.
#ifdef _DEBUG
if ( ::GetAsyncKeyState( VK_F1 ) )
{
while ( !::IsDebuggerPresent() )
::Sleep( 100 );
::DebugBreak();
}
#endif
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2359 次 |
最近记录: |