看了很多参考,我只想知道我程序方面容易发生这个问题的根源在哪里,就算是指针为空,内存没分配呀,什么的,我怎么着手调试,找到问题代码.如果是调试的话,也有时搞几个小时,一个夜晚都没问题,有时有但就是调不出来..但到别人手里就有啊,晕

解决方案 »

  1.   

    你遇到这问题时,就在Build下运行ReBuildAll,很有帮助!
      

  2.   

    DEBUG单步调试,设断点一步一步定位,能迅速诊断
      

  3.   

    针为空,内存没分配,是导致异常的主要原因,写日志dump出来,细细检查。。
      

  4.   

    喜报,找到问题所在了.这里把我做的过程跟感兴趣的网友交流一下
    首先在编译release版本时,生成map文件,这个文件保存了各函数调用的入口地址详细列表.
    当程序运行出现  0X0XXXXXXXX ...指定内存不能为读时,在map文件里找到与前面地址相近的入口地址,
      Address         Publics by Value              Rva+Base     Lib:Object0001:00045310       ?OnBeforeNavigate2@CIEView@@UAEXPBDK0AAVCByteArray@@0PAH@Z 00446310 f   IEView.obj
     0001:00045550       ?OnNavigateComplete2@CIEView@@UAEXPBD@Z 00446550 f   IEView.obj
     0001:00045570       ?OnNewWindow2@CIEView@@UAEXPAPAUIDispatch@@PAH@Z 00446570 f   IEView.obj
     0001:000455a0       ?OnDocumentComplete@CIEView@@UAEXPBD@Z 004465a0 f   IEView.obj
     0001:000455d0       ?OnDownloadBegin@CIEView@@UAEXXZ 004465d0 f   IEView.obj
     0001:000455e0       ?OnDownloadComplete@CIEView@@UAEXXZ 004465e0 f   IEView.obj
    再根据入口地址找到前面相应的函数,
    最后回到vc里找到这个函数源码,设置断点,
    最终发现 esi 00000000