一定要掌握的实用调试技巧(vs2019)(上)

简介: 一定要掌握的实用调试技巧(vs2019)(上)

1、什么是bug?


BUG的英文释义是“虫子”,现在人们将再电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞),人类历史上第一个程序BUG就是与虫子有关。

1937年,一个年轻的美国小伙找到IBM公司要了200万叨做计算机,第一台成品取名为“马克1号”,写代码的是一个小妮·雷斯·霍波。有一天,他在调试程序时出现故障,经过一阵子周折,发现有只飞蛾被烤糊在两个继电器触电的中间导致短路。于是把程序故障统称为“臭虫BUG”。从此这只虫子名垂千古,永远的保存在了华盛顿的美国国家历史博物馆中


2、调试是什么?


       2.1、调试是什么


一般指的你写的代码,在Debug模式下编译以后,编译器在你的代码里插入了调试信息,你可以一步一步运行程序,查看中间结果,适用于你程序运行不对,需要检查中间过程确定问题源头的时候。


       2.2、调试的基本步骤


  • 发现程序错误的存在
  • 以隔离、消除等方式对错误进行定位
  • 确定错误产生的原因
  • 提出纠正错误的解决办法
  • 对程序错误予以改正,重新测试

       2.3、Debug和Release的介绍


  • Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序
  • Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用

  • 可在编译器此处选择配置

 

3、Windows环境调试介绍


       3.1、调试环境的准备


在环境中选择 debug 选项,才能使代码正常调试


       3.2、学会快捷键


下面是调试常用的快捷键:

F5: 启动调试,经常用来直接跳到下一个断点处(若没有断点将运行整个程序)

F9:创建断点和取消断点。断点的重要作用,可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去

F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句

F11:逐语句,就是每次都执行一条语句,但是这个快捷键可以使执行逻辑进入函数内部,这是最常用的

Ctrl+ F5:开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用


       3.3、调试的时候查看程序当前信息


注意:以下所有内容都是在调试开始后才可操作的


               3.3.1、查看临时变量的值


四个监视窗口都可以用,只需要在监视名称是输入合法的监视内容即可

               3.3.2、查看内存信息


与监视窗口同理,四个口都可以用

在地址处输入你要查询的地址,在列处可以自己进行选择

选定后回车即可查看

               3.3.3、查用调用堆栈


               3.3.4、查看汇编信息


               3.3.5、查看寄存器信息



4、调试的实例


1. #include <stdio.h>
2. int main()
3. {
4.  int i = 0;
5.  int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
6. 
7.  for (i = 0; i <= 12; i++)
8.  {
9.    arr[i] = 0;
10.     printf("hehe\n");
11.   }
12.   return 0;
13. }


调试如下


相关文章
|
2月前
|
存储 NoSQL 安全
【C++调试】深入探索C++调试:从DWARF到堆栈解析
【C++调试】深入探索C++调试:从DWARF到堆栈解析
65 1
|
2月前
|
程序员 编译器 C语言
编程最重要的技术之一 — 调试(以C语言代码为例)
编程最重要的技术之一 — 调试(以C语言代码为例)
42 0
|
2月前
|
存储 编译器 程序员
【调试方法】基于vs环境下的实用调试技巧
【调试方法】基于vs环境下的实用调试技巧
|
5月前
|
C#
C#调试与测试 | DebuggerDisplay使用技巧
DebuggerDisplay可以让你在调试器中显示你自己定义的字符串,代替默认的显示方式。换句话说,它可以让你在调试器中更加方便地查看对象的信息。 当你在调试一个复杂的对象时,往往会发现默认的显示方式不能满足你的需求。这时,你可以使用 DebuggerDisplay 来自定义你想要显示的信息。例如,你可以将一些比较重要的属性或字段的值显示在调试器中,这样你就可以更加方便地了解对象的状态。另外,如果你使用了一些自定义的类,这些类可能没有默认的 ToString 方法,调试器默认的显示方式就会非常简陋,这时你可以使用 DebuggerDisplay 来定义一个更加友好的显示方式。
31 0
|
10月前
|
存储 编译器 C语言
一定要掌握的实用调试技巧(vs2019)(下)
一定要掌握的实用调试技巧(vs2019)(下)
|
10月前
|
程序员 Windows
学C的第十九天【实用调试技巧:1. 调试;2. Windows环境调试介绍;3. 一些调试的实例;4. 一些调试的实例】-2
查看调用堆栈(调用堆栈) 通过调用堆栈,可以清晰地反应函数的调用关系以及当前调用所处的位置。
|
10月前
|
NoSQL 程序员 Linux
学C的第十九天【实用调试技巧:1. 调试;2. Windows环境调试介绍;3. 一些调试的实例;4. 一些调试的实例】-1
1. 调试 (1). 调试是什么? 调试(Debugging / Debug),又称出错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程(一系列动作)。
|
11月前
|
监控 程序员 编译器
代码的调试技巧
代码的调试技巧
|
11月前
|
程序员 C语言 C++
编程最重要的技术—调试(以C语言代码为例)
编程最重要的技术—调试(以C语言代码为例)
|
Java 开发工具 C#
如何以超快的方式调试?
如何以超快的方式调试?