VC调试篇:减少运行时错误,中断所有异常
问题简述
我在Win7下写的MFC程序,想让它在winXP下运行。一般情况下,如果所有的依赖库都可以在XP下运行的话,那么在XP下运行时没问题的。但是,结果却。。。

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

默认情况下,红框中的选项都是没有选中的,只要选中红框中的所有选项,即可中断所有异常。
总结
- 尽早暴露异常。
- 中断所有异常。
VC调试篇:减少运行时错误,中断所有异常的更多相关文章
- VC调试篇
难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言.不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件. 我以前接触的程序大多是有比较成形的思路和方法,调试起来出 ...
- VC调试篇:ASSERT(FALSE)时怎么办?查看调用堆栈
问题简述 我们在调试程序时,经常会遇到程序中断的情况,就像下图这样. 我艹,这该怎么办,我们一下子就懵逼了.我们选择中断,常常会跳到一个莫名其妙的地方去. 正是这个断言 ASSERT(::IsWind ...
- VC++调试基础
一.调试基础 调试快捷键 F5: 开始调试 Shift+F5: 停止调试 F10: 调试到下一句,这里是单步跟踪 F11: 调试到下一句,跟进函数内部 Shift+F11: 从当前函数中跳 ...
- vc调试大全
一.调试基础 调试快捷键 F5: 开始调试 Shift+F5: 停止调试 F10: 调试到下一句,这里是单步跟踪 F11: 调试到下一句,跟进函数内部 Shift+F11: 从当前函数中跳 ...
- VC调试方法大全
VC调试方法大全 一.调试基础 调试快捷键 F5: 开始调试 Shift+F5: 停止调试 F10: 调试到下一句,这里是单步跟踪 F11: 调试到下一句,跟进函数内部 Shift+F11: ...
- gdb对应vc调试命令
gdb vc调试对照表: 实现功能 vc gdb 修改后编译 f7 ma ...
- VC++调试说明
目录 第1章调试说明 1 1.1 调试设置 1 1.2 跟踪代码 2 1.3 断点 2 第2章模块生命周期 4 2.1 exe模块 4 2.2 dll模块 5 ...
- 【转】Android LCD(四):LCD驱动调试篇
关键词:android LCD TFTSN75LVDS83B TTL-LVDS LCD电压背光电压 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台 ...
- OD调试篇3-小软件破解1
OD调试篇3-小软件破解1 要求如下图该软件需要改5个地方,其中1.2是软件未注册而设定限定的添加个数,3.4.5是软件显示的一些未注册的信息. 一. 1.按1运行程序,添加用户添加第五个时出现提示, ...
随机推荐
- css隐藏元素的六类13种方法
隐藏元素的方法 隐藏元素的方法可以总结为六类:直接隐藏.对溢出内容隐藏.对元素透明度进行调整.将元素移除当前屏幕.对元素的层级关系进行调整.对元素进行裁剪 只有对元素的透明度进行调整才可以点击,其余都 ...
- cookie和session的介绍
1.cookie和session cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此产生cookie. cookie的工作原理是:由服务器产生 ...
- JavaScript: window.onload = function() {} 里面的函数不执行
问题:写了一个最简单的页面.在script标签中使用的 window.onload = function() { function add() { //... } } 页面上:<div oncl ...
- LeetCode105. Construct Binary Tree from Preorder and Inorder Traversal
题目 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3 ...
- centos6 下查看SELinux状态 关闭SELinux
转载自:https://blog.csdn.net/boomjane_testingblog/article/details/52859977 SELinux(Security-Enhanced Li ...
- 统计重复IP并排序
#降序排列 sort ip20180623.log | uniq -c | sort -rn | more #可以输出到文件哦 sort ip20180623.log | uniq -c | sort ...
- Linux 个人服务搭建脱坑实录
环境:VMware.Centos7 64位.jdk1.7.Tomcat 7 说明:本是个人的爬坑经历所总结出来的,记录一下心得.也给有需要的人提供一些帮助.引用了一些大神的笔记,非常感谢,希望大神们不 ...
- ARM S3C2440 时钟初始化流程
1.设置lock time 2.设置分频系数 3.设置CPU到异步工作模式 4.设置 FCLK 了解 芯片的时钟原理图,以及寄存器的作用 了解芯片的晶振频率,锁相环,分频系数,以及有哪些时钟
- 7-1 python 操作redis
1.安装并导入redis模块 # pip install redis 安装redis模块 import redis # 导入redis模块 2.连接一个或多个redis,指定数据库名,并指定返回字符串 ...
- vue笔记v-bind
把message的信息绑定给title,运行出来的结果是<span title="you loaded this page on +Mon Nov 21 2016 18:28:38 G ...