C语言VS2017 - 实用调试技巧 上

简介: C语言VS2017 - 实用调试技巧

文章目录

一、什么是bug

1947年,哈佛大学的计算机哈佛二代(Harvard Mark II)突然停止了运行。原来,哈佛二代当时还没有二极管和晶体管,它是一部继电器计算机,无数个喀哒作响的电磁开关在其中运作。当开关断开的时候会有电弧发出闪光,于是这只妖蛾子奋不顾身地飞了上去,用节肢动物的鲜血开辟了脊索动物的Debug史,从此名垂千古,永远地保存在了华盛顿的美国国家历史博物馆中,后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。

Bug可以翻译为幺蛾子 —— 所以可以说你这代码有个幺蛾子

二、调试

1、什么是调试

调试(Debugging / Debug),又称排错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程

所有发生的事情一定都有迹可循,如果问心无愧,就不需要掩盖了,如果问心有愧,就必然需要掩盖,就一定会有破绽,破绽越多就越容易顺藤而上,这就是推理的途径。

一名优秀的程序猿一定是一名出色的侦探 —— 每一次调试都是一次破案的过程

拒绝迷信调试,学会科学调试:

2、调试的基本步骤

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

三、Debug和Release

1、Debug和Release是什么

这里主要说明的就是这2个版本:

Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户更好的使用

2、Debug和Release的区别

1、所占空间

在此之前需要使用Debug和Release分别来运行代码,才能生成对应文件

从生成文件的大小来看:Debug的文件比Release的文件大

2、功能

Debug可以用于调试,而Release不能调试

3、优化

Debug不可以优化,而Release可以对代码进行优化

四、windowns环境调试技巧

1、调试环境准备

这里所调试的环境是:Visual Studio && Windows

将版本改为Debug调试版本。注:Linux开发环境调试工具是gdb

2、学会快捷键

学会快捷键会使我们的编码效率大大提高

以下这个窗口需要在调试后才能打开


当然这些还是要配合一些场景作一些了解:

1、当有一段有问题的代码,你已经排锁定了bug代码的区域,这时代码量又过长,想直接跳过非bug代码的区域时:断点+调试即可(F9+F5)


2、如果想进入到一个函数的内部可以逐语句执行(F11),或者不想进入函数的内部逐过程执行(F10)。


3、当我们的写的代码量大时且一个工程中有多个文件时。调试的时候难免会用到断点,且可能不止一个断点,这里可能就会造成紊乱。所以在调试,窗口里有个断点可以管理断点(CTRL + ALT + B)


4、在调试的过程中可以通过下面的局部变量窗口(CTRL + ALT + V + L)或者自动窗口(CTRL + ALT + V + A)来观察代码的步骤。

以上2个窗口都有一定的局限性,自由度不高。如果想自己设置要观察的数据时:在调试,窗口里打开监视窗口即可(CTRL + ALT + W , 1/2/3/4)

5、如果想要观察数据的内存的话,在调试,窗口里打开内存窗口即可(CTRL + ALT + M , 1/2/3/4)


6、如果想要看函数调用的逻辑,在调试,窗口,打开调用堆栈(这里的堆栈就是栈)(CTRL + ALT + C)

发现调用堆栈会模拟栈的执行逻辑


7、一段for循环代码,可能觉得在第50次循环有问题,这时按步就班的话就很low。可以使用断点,然后右击断点点击条件设置即可


相关文章
|
6月前
|
存储 编译器 C语言
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存2
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
|
29天前
|
C语言
C语言调试
C语言调试
14 0
|
3月前
|
C语言 索引
C语言编译环境中的 调试功能及常见错误提示
这篇文章介绍了C语言编译环境中的调试功能,包括快捷键操作、块操作、查找替换等,并详细分析了编译中常见的错误类型及其解决方法,同时提供了常见错误信息的索引供参考。
|
5月前
|
安全 编译器 程序员
【C语言】:VS实用调试技巧和举例详解
【C语言】:VS实用调试技巧和举例详解
49 1
|
5月前
|
存储 编译器 C语言
C语言学习记录——调试技巧(VS2019环境下)
C语言学习记录——调试技巧(VS2019环境下)
52 2
|
5月前
|
程序员 编译器 C语言
C语言中的assert.h:调试助手与断言详解
C语言中的assert.h:调试助手与断言详解
|
6月前
|
程序员 C语言 C++
C语言实用的调试技巧
C语言实用的调试技巧
47 3
|
6月前
|
程序员 编译器 测试技术
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
45 1
|
6月前
|
NoSQL 编译器 C语言
【C 言专栏】C 语言中的调试技巧与工具
【5月更文挑战第6天】在C语言编程中,调试是必不可少的技能,涉及基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查和性能分析。通过分析问题、设置断点、逐步调试和检查逻辑来解决错误。调试时需保持耐心,合理选用工具,记录过程,并避免过度调试。熟练掌握这些技能将提升代码质量和开发效率。
139 0
【C 言专栏】C 语言中的调试技巧与工具
|
6月前
|
程序员 C语言 C++
C语言——调试技巧
C语言——调试技巧