debug与release行为不一致,怎样查错

如果是计算结果不对之类的错误,你在每一步计算后输出一下当地的信息,可以帮助你找到是从哪个地方开始,计算结果飘了。
如果是崩溃,看调用栈,一般能找到问题,比如说某个函数的参数接收到nullptr,然后企图在nullptr上操作,或者是无限递归爆栈了。当然,打log也是一种办法,帮助你找出崩溃前发生了什么。

■网友
通常都是下标越界造成的。
或者访问了某段已经释放了的内存,其实也算越界。
这两种操作并不一定会造成程序崩溃。
但是debug和release优于优化不同,内存的管理可能不大一样,那么越界的时候指向的内容是不一样的,从而造成行为不同。

■网友
崩溃了就可以看调用堆栈了啊,结合局部变量窗口去debug咯。如果没崩溃,找到预期结果不一致的地方,打log,把中间结果一个个输出看看从哪里开始不一样咯。还有种hard模式:从头检查一遍代码,把那些不规范的代码及早更正过来。
■网友
查你最近修改的代码部分。修改了哪里后导致出错的?还有检查一下变量初始化问题。
■网友
没有代码,全凭瞎猜。反复读代码,当成在看一个不认识的傻逼写的垃圾代码,原因往往异常简单。
■网友
打印log
■网友
1. 先解决程序里的警告。
2. 是不是路径引起的一些配置文件配置错误。
【debug与release行为不一致,怎样查错】 3. release也能调试启动,能看到中断的地方,针对排错。


    推荐阅读