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版本的确会对代码进行优化,不过这种优化是底层的优化,比如这里对内存空间的开辟顺序进行了优化,而且这种优化并不会改变你的代码。

F9:
创建断点和取消断点。
断点的重要作用:可以在程序的任意位置设置断点。这样就可以使得程序运行到断点的位置停止执行,继而开始调试,一步步执行下去。
F9和F5是配合使用的。











优秀的代码:
- 代码运行正常
- bug很少
- 效率高
- 可读性高
- 可维护性高
- 注释清晰
- 文档齐全
常见的coding技巧:
- 使用assert
- 尽量使用const
- 养成良好的编码风格
- 添加必要的注释
- 避免编码的陷阱。
- 编译型错误:都是语法错误引起的,直接看错误提示信息(双击),解决问题。或者凭借经验就可以搞定。相对来说简单。
- 链接型错误:看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。一般是标识符名不存在或者拼写错误。
- 运行时错误:借助调试,逐步定位问题。最难搞。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/195300.html