【发布时间】:2014-09-09 13:23:26
【问题描述】:
我已经在 Visual Studio 项目 (C++) 上工作了数周,今天早上我遇到了调试错误,导致可执行文件根本无法启动。编译器和链接器似乎都做得很好。 但是,我有一个调试断言失败,并且似乎涉及到的文件位于基础类目录中,它被称为 dlgdata.cpp。此代码中失败的 ASSERT (FALSE) 语句 sn-p(调试器指向)
HWND CDataExchange::PrepareCtrl(int nIDC)
{
ASSERT(nIDC != 0);
ASSERT(nIDC != -1); // not allowed
HWND hWndCtrl;
COleControlSite* pSite = NULL;
m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
if (hWndCtrl == NULL)
{
// Could be a windowless OCX
pSite = m_pDlgWnd->GetOleControlSite(nIDC);
if (pSite == NULL)
{
TRACE(traceAppMsg, 0, "Error: no data exchange control with ID 0x%04X.\n", nIDC);
ASSERT(FALSE); // that is the one
AfxThrowNotSupportedException();
}
当我创建一个框来显示控制变量的值时,我不确定我是如何创建它的。当我忽略失败并继续调试时,这会触发断点并将我带到 winocc.cpp,并且再次突出显示 ASSERT 语句。
BOOL CWnd::EnableWindow(BOOL bEnable)
{
ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));
if (m_pCtrlSite == NULL)
return ::EnableWindow(m_hWnd, bEnable);
else
return m_pCtrlSite->EnableWindow(bEnable);
}
我可能会返回备份,但这需要几个小时的工作时间,我很想知道在这些问题发生时如何处理它们。如果他们再次发生。 干杯,M。
【问题讨论】:
标签: debugging visual-studio-2013 assertion