VC调试篇:减少运行时错误,中断所有异常

问题简述

我在Win7下写的MFC程序,想让它在winXP下运行。一般情况下,如果所有的依赖库都可以在XP下运行的话,那么在XP下运行时没问题的。但是,结果却。。。

WinXp下运行的错误报告

本来程序在win7下运行得好好的,又没有依赖win7的库,为什么会报错呢? 怎么样在win7下提早发现这些运行时错误?

调试方法

通过询问度娘,认为出现上述情况的原因可能有以下几种:

  1. 数组的访问越界。
  2. 程序中的野指针 (指针没有初始化就使用,指针为空等)

我最后发现程序中使用了未初始化的指针。这个野指针在win7下竟然能运行!能运行!天啊,这算是win7系统的优化吗。。。

提前找到这些运行时错误,中断所有异常

为了减少运行时的错误,应该在调试时尽可能地让所有的错误都暴露出来。这种野指针的异常 在VS2010 竟然不是默认就会捕获的。。那要怎么开启中断所有异常呢。

在 VS2010 下 ,通过选择菜单中的 调试 -> 异常,弹出如下对话框

中断所有异常

默认情况下,红框中的选项都是没有选中的,只要选中红框中的所有选项,即可中断所有异常。

总结

  1. 尽早暴露异常。
  2. 中断所有异常。
posted @ 2017-07-16 16:46  smallpi  阅读(777)  评论(0编辑  收藏  举报

页脚