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可以改变。


相关文章
|
存储 编译器 C语言
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存2
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
202 3
|
程序员 C语言 C++
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存1
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
196 3
|
C语言
C语言使用宏定义实现等级调试输出PRINT_LEVEL
C语言使用宏定义实现等级调试输出PRINT_LEVEL
385 0
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
528 2
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
400 1
|
C语言
C语言调试
C语言调试
202 0
|
安全 编译器 程序员
【C语言】:VS实用调试技巧和举例详解
【C语言】:VS实用调试技巧和举例详解
177 1
|
C语言 索引
C语言编译环境中的 调试功能及常见错误提示
这篇文章介绍了C语言编译环境中的调试功能,包括快捷键操作、块操作、查找替换等,并详细分析了编译中常见的错误类型及其解决方法,同时提供了常见错误信息的索引供参考。
|
存储 编译器 C语言
C语言学习记录——调试技巧(VS2019环境下)
C语言学习记录——调试技巧(VS2019环境下)
200 2
|
程序员 C语言 C++
C语言实用的调试技巧
C语言实用的调试技巧
190 3