C语言:实用调试技巧

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

为什么要学习调试技巧?

因为我们会写出bug,而且有时候自己找不到。

一名优秀的程序员是一名出色的侦探。

每一次调试都是尝试破案的过程

我们应该如何寻找和修改bug呢?


目录

1.程序的两种类型(debug和release类型)

几个常见的快捷键

各种调试窗口

a.自动窗口

b.局部变量

c.监视

d.内存

编程常见的错误

a.编译型错误

b.链接型错误

c.运行时错误

利用一个例子来了解const和assert


1.程序的两种类型(debug和release类型)


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

debug是程序员(也就是我们这群苦逼)尝试用的,它会有调试的过程。

release是用户使用的,它直接出结果


如果我们要进行调试的话,只能在debug的环境下


几个常见的快捷键

F5


启动调试,经常用来直接跳到下一个断点处。


F9


创建断点和取消断点


断点的重要作用,可以在程序的任意位置设置断点。


这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。


F10


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


F11


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


长用的)。


CTRL + F5


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


F5和F9是搭配使用的,F9是在任意一行设置断点,而F5直接跳到断点的地方,然后停在那里。


各种调试窗口

想要进入自动窗口等调试窗口,得先按F10!才会出现那些窗口

a.自动窗口


这个会自动跳出运行某一行时的变量,你不能查看你想看的变量的,所以这种方法对于我们来说是不方便的

b.局部变量

局部变量的窗口就在自动窗口下面一个。

局部变量这个窗口就是你指向哪一部分,它将那一部分所有的局部变量的值展现给你看。

c.监视

监视可以让我们看到我们想要的变量或者地址!!!

还是监视比较方便

d.内存

同理还有函数堆栈等窗口没有尝试,但操作方法一样。

编程常见的错误


a.编译型错误


基本上就是像这样的语法错误,这种语法错误会因为随着我们多打代码,可以自己发现,并且自己改正,相对简单。


b.链接型错误

基本上就是因为自己未定义函数或者未初始化变量所组成的,这个和上一种错误一样,相对简单、。


c.运行时错误

这种运行时错误指的是,可以运行成功,但运行结果错误,这种错误往往是最致命的。

示例1演示:

我们是求1!+2!+3!的值,我们通过监视,发现3!的值变为12,而不是6。这里我们分析后,发现上一次算2!的值没有重置保留了下来,所以造成了错误。在11行加一句ret=1就可以了。

  • 利用一个例子来了解const和assert

assert可以来判断是否出错了,例如:这里判断传过来的是否是空指针,如果是空指针就报错。


assert的头文件是#include


我们可以利用assert来提高代码的安全性。

const可以放在两个位置,一个位置是*的左边,一个是*的右边

放在*的左边,*p不能改变了,p可以改变。

放在*的右边,p这个地址不能改变了,*p可以改变。


相关文章
|
9天前
|
程序员 C语言 C++
C语言实用的调试技巧
C语言实用的调试技巧
|
15天前
|
程序员 C语言 C++
C语言——调试技巧
C语言——调试技巧
|
17天前
|
程序员 编译器 测试技术
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
23 1
|
22天前
|
NoSQL 编译器 C语言
【C 言专栏】C 语言中的调试技巧与工具
【5月更文挑战第6天】在C语言编程中,调试是必不可少的技能,涉及基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查和性能分析。通过分析问题、设置断点、逐步调试和检查逻辑来解决错误。调试时需保持耐心,合理选用工具,记录过程,并避免过度调试。熟练掌握这些技能将提升代码质量和开发效率。
【C 言专栏】C 语言中的调试技巧与工具
|
22天前
|
存储 编译器 C语言
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存2
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
|
22天前
|
程序员 C语言 C++
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存1
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
|
22天前
|
C语言
C语言使用宏定义实现等级调试输出PRINT_LEVEL
C语言使用宏定义实现等级调试输出PRINT_LEVEL
|
22天前
|
程序员 编译器 C语言
编程最重要的技术之一 — 调试(以C语言代码为例)
编程最重要的技术之一 — 调试(以C语言代码为例)
47 0
|
22天前
|
存储 程序员 编译器
C语言第十三弹---VS使用调试技巧
C语言第十三弹---VS使用调试技巧
|
22天前
|
存储 程序员 编译器
c语言从入门到实战——VS2022实用调试技巧
Visual Studio是集成开发环境,其内置了多种调试工具和技巧帮助开发人员在开发过程中解决问题。以下是一些VS实用调试技巧的简介
62 0