VS2019实用调试技巧
- 1.debug和release的区别
 - 2.调试
 
- (1)调试最常使用的几个快捷键
 - (2)用监视窗口查看临时变量的值
 - (3)查看内存信息
 - (4)查看调用堆栈
 - (5)查看汇编信息
 - (6)查看寄存器信息
 
- 3.如何写出易于调试/好的代码
 - 4.编程中常见错误
 
VS集成开发环境上方有一个选项为Debug,表示这是代码的Debug版本,可以将其改为Release,表示这是代码的Release版本,那么Debug版本和Release版本有什么区别吗?


Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release 称为发布版本,编译器对我们写的代码进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用,Release版本不能调试。
例:请看下面代码:
Debug版本下运行,该程序会出现死循环,即无限输出hehe,这是为什么呢?

在vs2019环境下,变量i和arr相差两个整型,不同环境可能不一样,现在知道了局部变量i和arr的内存分配情况,我们先回归到代码。
由代码可知,从arr[10]开始越界访问,虽然对于程序而言arr[10]不存在,属于越界访问,但是对于实际内存而言,arr[10]就是arr[9]后面的一个位置,是真实存在的,因此可以将arr[10]赋值为0,同时也可以将arr[11]赋值为0,但是当访问到arr[12]的时候,由上面的内存分配图我们可以知道arr[12]实际上就是i,将arr[12]赋值为0,实际上就是将i赋值为0,因此i满足for循环条件,又会进入到下一轮循环,当i==12,再次访问到arr[12],将arr[12]赋值为0时,实际上又是将i赋值为0,又会进入下一轮的循环,因此这样下去就是无限死循环输出hehe。
那么在Release版本下,代码是怎么运行的呢?



由此可见Release版本的确会对代码进行优化,不过这种优化是底层的优化,比如这里对内存空间的开辟顺序进行了优化,而且这种优化并不会改变你的代码。











优秀的代码:
- 代码运行正常
 - bug很少
 - 效率高
 - 可读性高
 - 可维护性高
 - 注释清晰
 - 文档齐全
 
常见的coding技巧:
- 使用assert
 - 尽量使用const
 - 养成良好的编码风格
 - 添加必要的注释
 - 避免编码的陷阱。
 
- 编译型错误:都是语法错误引起的,直接看错误提示信息(双击),解决问题。或者凭借经验就可以搞定。相对来说简单。
 - 链接型错误:看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。一般是标识符名不存在或者拼写错误。
 - 运行时错误:借助调试,逐步定位问题。最难搞。
 
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/14177.html