RT.程序在Release下可以正常运行,debug下就要崩溃,崩溃的原因是我用sendmessage向主窗口发消息,debug下m_hWnd句柄值为???,可是Release下正常,这是什么情况呢?

解决方案 »

  1.   

    debug崩溃是因为有断言检查,说明m_hWnd的值是未知的,这时候扼杀掉bug是最好的。而Release是直接忽略断言的,所以不会报错。有时候m_hWnd的值是未知的Release照样可以运行,那是因为程序暂时没用到这个资源,但在程序跳到此堆栈时,XP下就会直接关闭程序,出现个调试框框了。win7是屏幕变白,显示关闭或调试程序。所以一般用debug来扼杀掉所有萌芽的bug。
      

  2.   

    不应该,肯定有哪里操作不当的地方。
    DEBUG有很多ASSERT窗体句柄的地方,而Release不一定有。
    所以有错误Release不一定报错或出异常,除非操作了句柄。
      

  3.   

    Release不去检查数据内容,你有时候可以正常运行。但是如果Debug下有问题,那你的程序肯定有问题。
    看不到你的代码也无法找到错误根源。
      

  4.   

    确实遇到过这种情况.
    如果release运行正常的话,先不要管它.
      

  5.   

    Debug出错,Release不出错,那么你的程序一定会有潜在的bug,只是没有表现出来而已
      

  6.   

        这和断言有什么关系?断言一般只是检测值存不存在,而不会改变m_hWnd的值吧?获取m_hWnd的代码是:AfxGetApp()->m_pMainWnd->m_hWnd,我也试了其他几种获取句柄代码,都是这样。这个程序界面很简单,就一个基于对话框的界面,上面放了一些分页控件,上述代码是在程序的CXXDlg类里使用的。
        崩溃是因为得到的主窗口句柄有错,虽然是断言促发,但是我的问题是为什么Debug下获取到的主窗口句柄是未知的而Release却正确?Release调试的时候是有值的,debug是没有值,就三个问号。请大家帮帮忙?
      

  7.   

    表示关注,我也是这样的情况,relese后运行出来的新对话框并不显示我分页的内容。Debug直接就奔溃了!