VC调试篇:减少运行时错误,中断所有异常
问题简述
我在Win7下写的MFC程序,想让它在winXP下运行。一般情况下,如果所有的依赖库都可以在XP下运行的话,那么在XP下运行时没问题的。但是,结果却。。。
本来程序在win7下运行得好好的,又没有依赖win7的库,为什么会报错呢? 怎么样在win7下提早发现这些运行时错误?
调试方法
通过询问度娘,认为出现上述情况的原因可能有以下几种:
- 数组的访问越界。
- 程序中的野指针 (指针没有初始化就使用,指针为空等)
我最后发现程序中使用了未初始化的指针。这个野指针在win7下竟然能运行!能运行!天啊,这算是win7系统的优化吗。。。
提前找到这些运行时错误,中断所有异常
为了减少运行时的错误,应该在调试时尽可能地让所有的错误都暴露出来。这种野指针的异常 在VS2010 竟然不是默认就会捕获的。。那要怎么开启中断所有异常呢。
在 VS2010 下 ,通过选择菜单中的 调试 -> 异常,弹出如下对话框
默认情况下,红框中的选项都是没有选中的,只要选中红框中的所有选项,即可中断所有异常。
总结
- 尽早暴露异常。
- 中断所有异常。