我用VC6写了一个项目,如果在IDE下用执行EXECUTE PROGRAME执行程序,一切正常,但如果用GO来调试程序,只要进入一个特定的函数就会报错。-----------------------------------------------
Debug Assertion Failed!Programe :*******.exe
File:afxcoll.inl
Line:222For informantion on how your progame can cause an assertion failure,see the Visual C++ documentation on asserts.Press Retry to Debug the application .-----------------------------------------------但我根本没有办法进行调试去找这个assert。因为没有进入这个函数就报错了。我该怎么去查错?

解决方案 »

  1.   

    情况不具体,是不是那个ASSERT的某一个指针错误?关注中
      

  2.   

    我是用一个菜单函数来调用的。我把断点设在该函数的第一条语句,也没有用。没有到这条语句就报错了。我找不到是那一个assert。
      

  3.   

    程序大不大?笨方法是在所有ASSERT处加断点
      

  4.   

    出现这样的问题,一般是assert断言出错。
    你可以打开该文件并定位到222行。
    _AFXCOLL_INLINE CString CStringArray::GetAt(int nIndex) const
    { ASSERT(nIndex >= 0 && nIndex < m_nSize);
    return m_pData[nIndex]; }看明白了吧。你访问string的时候越界了。所以出错。
      

  5.   

    我在函数中用了很多CString的类。
    但让我郁闷的是我无法判断是那一句话出错了,因为我点了菜单项时就会报错,但实际上调试过程并没有执行到与这个菜单项相关函数的任何一个语句。我只有点“重试”或“忽略”才能运行到这个函数的第一条语句。
      

  6.   

    看看调试器的watch里头是不是有一些相关的表达式。这有时会导致一进入函数的作用域调试器就在后台调用该表达式,而表达式中的有些数据又没准备好,所以出错。