🎉此文是以vs2019来讲解,但其他vs版本的调试也大同小异
- about visual studio :是一个
集成开发环境
,即IDE,集成以下内容: -
- 编辑器
-
- 编译器
-
- 调试器–🕵️♂️本文讲解的有关调试器的相关知识
补充:🎉LInux系统下的编译器:gcc,调试:gdb
调试常用快捷键
🌞注意:F10、F9、F11等在笔记本上需要配合Fn一起使用
快捷键 | 作用 |
---|---|
Ctrl+F5 | 开始执行代码(不调试,遇到断点也不会停下) |
F5 | 启动调试,每按一次就跳到下一个断点,一般和F9配合使用 |
F9 | 设置和取消断点 |
F10 | 逐过程调试(遇到函数不进入) |
F11 | 逐语句调试(遇到函数会进入,可查看函数细节) |
🥙关于断点
:常用于:多行、跨文件的情况。
🚍用F5+F9配合,可以实现调试过程中的跳转,实现从一个文件跳转到另一个文件(包含关系),观察其内部细节。
😜也可以从下面窗口查看对应快捷键:
Debug版本和Release版本区别
🚌Debug版本:
- 称为
调试版本
,是程序员写代码,找bug的版本 - 包含
调试信息
,不做优化
🎊Release版本:
- 称为
发布版本
,是程序写好后,发布出去,供用户使用的版本。(不能进行调试)
🕵️♀️注意:
- 测试人员测试的就是Release版本
- Release版本不可以调试
查看调试过程中相关信息
🥓接下来会从以下几个方面去讲解:
🥁注意🥁:以下标记内容只有在程序处于调试状态才可以(不是运行状态),即按下(F5\F11\F10)后处于调试状态,才会有这些选项,通过这些选项,我们可以去观察调试过程中的一些信息。
1.监视(Watches)
🎉最常用,使用起来也很方便:
- 🎉Tips:数组名,数字
arr,3
,可以显示指定元素个数和内容
2.内存
3,反汇编:查看汇编代码
4,查看调用堆栈–查看函数的调用情况
- 🥗本质:用栈的结构模拟出的函数调用情况
一个死循环案例分析
🥞在Windows系统,vs2019的IDE上有以下一段代码出现死循环,分析其原因
int main()
{
int i = 0;
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (i = 0; i < 13; i++)
{
arr[i] = 0;
printf("1\n");
}
return 0;
}
🛵程序运行结果:死循环打印:1
😊分析:
首先在这个Win系统下,X86,有以下前提条件:
内存分为:
- 栈区–>存放局部变量
- 堆区
- 静态区
🚤栈区存储局部变量的特点:
- 😜:先使用高地址空间,再使用低地址空间。
所以在上述代码中栈区内存是这样的:(数组越界,修改了i的值)
错误类型简介
🥙一个编译型程序程序想要运行要经过三个步骤
- 编译
- 链接
- 运行—-调试:解决的就是运行时出现的错误
🥙每一个阶段,都有可能发生错误,由此我们将错误简单分为以下三类:
🥚编译型错误:
- 🚐是检查语法错误,若有错误,编译不通过。
🍿链接错误:
- 链接,是指调用一些函数,比如#include<stdio.h>这个.h文件中包含了一些库函数,如果在代码里面没有加上这个,就会出现连接错误。还有,调用函数时,如果函数名写错,也会出现链接错误。一般这种错误描述为:
无法解析的外部符号
。
🚲运行错误:死循环、没有得到预期运行结果、栈溢出…
- 在运行的时候才发生错误,需要通过调试来定位错误,从而发现错误并且解决。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142468.html