高难度有关问题,Debug下程序没有任何有关问题,Release下做某一操作(点击菜单)程序崩溃

高难度问题,Debug下程序没有任何问题,Release下做某一操作(点击菜单)程序崩溃。
应用程序错误:
“0x73d311c7“指令引用的”0x00000004"内存,该内存不能为"read".
这种错误有什么办法找原因,我用了在发行版本中调试程序的方法,你调试它就没问题,你直接运行它才崩溃,郁闷。。

------解决方案--------------------
Release加上调试信息来Debug。
------解决方案--------------------
首先是这个BUG能否重复再现。偶然的错误更难以调试。
------解决方案--------------------
很简单,加入一个写文件模块,判断出到哪里crash,然后在确定原因!
------解决方案--------------------
这样的问题其实很多
看是不是一些线程同步之类的错误
可能打日志看一下吧

------解决方案--------------------
记log,看asm,别无他法

vc++ 9.0 release 加调试信息的和不加调试信息的链接的函数是有区别的.
------解决方案--------------------
自己多打印一下日志信息
或者结合pdb和dump文件等来分析出错的地方等
------解决方案--------------------
探讨
这样的问题其实很多
看是不是一些线程同步之类的错误
可能打日志看一下吧

------解决方案--------------------
Debug下程序没有任何问题,Release下做某一操作
------------------------------------------
Debug 与 Release 对变量的初始化是不一样的,可能是程序中用到了没有初始化的变量

比如说定义了 int i;

但没有初始化, Debug 与 Release 下这个值可能是不一样的
------解决方案--------------------
我以前遇到这样的问题,是多线程引起的

调试对时间,对线程间的切换是有影响的,可能在调试时资源的释放顺序是对的,


但执行时情况变了,最好打日志进行调试
------解决方案--------------------
还有Debug下分配内存的时候实际上比申请的多了好像是8个字节样
------解决方案--------------------
恩,先看看错误能否重现,进行了怎样的操作就出现问题,对应代码的地方写log吧。。。
------解决方案--------------------
发现我的程序基本都没在release下运行测试过
------解决方案--------------------
恩,生成pdb调试一下吧。

如果无法重现,考虑打印日志分析。
------解决方案--------------------
release下也可以调式

VC6.0 中,菜单Project\Settings...选择Release状态C/C++卡片中:Category 选择 generalOptimizations 选择 Disable(Debug)Debug Info 选择 Program DatabaseLink 卡片中:Generate debug info好了,现在Release就可以跟踪了
------解决方案--------------------
Release下加载符号调试 Ctrl+G 地址定义到出错的指令地址处0x73d311c7,然后根据前后源代码分析

------解决方案--------------------
先查看变量是否都初始化,共享变量访问和释放是否有问题。
设置出现错误时生成dump然后配合pdb查找错误原因,定位。
------解决方案--------------------
打印日志吧。