我已经看过帖子谈论可能导致 Debug和Release版本之间存在差异的内容,但我认为没有人从开发的角度解决了什么是解决问题的最有效方法.
我在Release版本中出现错误而不是在Debug中出现的第一件事就是我通过valgrind运行我的程序,希望能有更好的分析.如果没有显示任何内容, - 而这在我之前发生过 - 那么我会尝试各种输入,希望在Debug版本中也能显示错误.如果失败了,那么我会尝试跟踪更改以找到两个版本在行为上分歧的最新版本.最后我想我会采用印刷语句.
当Debug和Release版本不同时,是否有任何最佳的软件工程实践可以有效地进行调试?此外,有哪些工具在比valgrind更基础的层面上运行以帮助调试这些案例?
编辑:我注意到很多回复表明一些一般的良好做法,如单元测试和回归测试,我同意这些做法非常适合发现任何错误.但是,是否有针对此Release与Debug问题专门定制的内容?例如,是否有静态分析工具这样的东西说"嘿,这个宏或这个代码或这个编程实践是危险的,因为它有可能导致你的Debug/Release版本之间的差异?"