在我们写代码的时候常常会出现一些错误(逻辑上的错误),当你不知道这些错误怎么修改的时候就可以尝试进行调试
目录
1.调试的基本步骤
2.Debug和Release的介绍
3.快捷按键与功能详解
3.1 - F10逐语句执行
3.2 - F11逐过程执行
3.3 F5 - 调试 F9 - 设置/取消断点
4.调试过程中查看相关信息
4.1自动窗口
4.2临时变量
4.3监视
4.4内存
4.5反汇编
4.6寄存器
4.7调用堆栈
- 发现程序错误的存在
- 以隔离,消除等方式对错误进行定位
- 确定错误产生的原因
- 提出纠正错误的解决办法
- 对程序错误予以改正,重新测试
Debug为调试版本,包含调试信息,并且不作优化,便于程序员调试程序
Release为发布版本,进行了各种优化,便于用户使用
如何确定是Debug版本还是Release版本
我们调试是要将环境改成Debug,Release环境下是没办法调试的
- F5 - 开始调试
- ctrl+f5 开始执行(不调试)
- F9 设置断点/取消断点
- F10 逐过程 - 不会进入函数
- F11 逐语句 - 遇到函数会进入函数
- (F5是和F9配合使用的)
到此这篇vs怎么调试程序(vs的调试功能怎么用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!/pre>
p>这段代码是怎么执行的呢,我们来按F10,逐过程看看代码怎么运行
/p>
div>
![]()
/div>
p>按了一次F10后可以看到开始运行了,现在光标的位置在红圈所在地方,说明代码运行到了这里
/p>
div>
![]()
/div>
p>再按一次F10,就运行到了下一句,此时我们打开局部变量看看
/p>
div>
![]()
/div>
p>打开之后我们可以看到,运行到这一步之后,就会创建一个变量i,类型是int
/p>
div>
![]()
/div>
p>我们再按一次F10
/p>
div>
![]()
/div>
p>运行到下一步的时候,就把i的值赋为0了,接下来是一个循环,我们来看看循环是怎么运行的
/p>
div>
![]()
/div>
p>满足循环条件i < 10,进入循环,并执行语句printf("%d",i),此时会打印出0
/p>
div>
![]()
/div>
p>再次按F10的时候,就会回到for语句,继续判断是否满足for循环的条件,满足则进入循环,不满足离开循环.
/p>
div>
![]()
/div>
p>当i已经打印了1-9之后,i会变成10,在判断不满足for循环条件之后,就会离开循环,执行下一句
/p>
div>
![]()
/div>
p>执行到return 0 之后,就结束程序了
/p>
p>
以上代码我们测试了F10的功能是逐过程执行代码,我们可以一条一条的查看代码,当你的程序出现错误的时候,你就可以逐语句,看看程序运行的过程和你想象的过程是否一样,如果不一样,那到底是哪一部分的代码出现了问题/p>
p>
/p>
p>当我们遇到函数之后,如下面这段代码
/p>
pre>
/code>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
span style="color:#c21c13;">,F11是逐语句执行,从程序开始到结束的代码每一条都会执行,会进入函数内部,F10是逐过程,不会进入函数内部
/span>
div>
![]()
/div>
div>
![]()
/div>
span style="color:#c21c13;">设置断点之后,按F5运行,就会移动到下一个断点处,并运行前面所有的代码
/span>
span style="color:#a639d7;">
当我们进入循环,如果循环有100次,你想找到第50次,断点应该怎么设置/span>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
span style="color:#a639d7;">
还有一种方法/span>
div>
![]()
/div>
span style="color:#c21c13;">要开始调试才能看到窗口里的相关信息
/span>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
div>
![]()
/div>
span style="color:#c21c13;">左边一栏显示的是内存单元的地址
/span>,
span style="color:#c21c13;">中间存放的是内存中的信息,内存中本来放的是二进制的数据,为了方便显示,显示的时候用16进制
/span>,右边一栏是把内存中的信息解读一下,参考价值不高
div>
![]()
/div>
div>
![]()
/div>
span style="color:#c21c13;">先进后出
/span>)
span style="color:#c21c13;">先进先出
/span>)
div>
![]()
/div>
当我们运行main函数时会调用test,test会调用test1,test1会调用test2,使用调用堆栈窗口时,可以观察到函数调用逻辑是怎样的,当程序比较复杂时,通过调用堆栈可以清晰的观察到调用逻辑
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/41286.html