vs环境——C语言实用调试技巧

简介: vs环境——C语言实用调试技巧

目录

什么是bug?

调试的目的

调试的基本步骤

Debug和Release的介绍

windows环境调试介绍

1.选择Debug调试版本

2.学会快捷键

3.调试窗口的使用

1.局部变量窗口

2.监视窗口

3.内存查看窗口

4.调用堆栈窗口

什么是bug?

bug是计算机领域专业术语,原意是臭虫,现在指程序上存在的漏洞和错误等。

调试的目的

调试,又称除错 ,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。

调试的目的:发现bug和修复bug。

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

调试的基本步骤

1.发现程序错误的存在。

2.以隔离,消除等方式对错误进行定位

3.确定错误产生的原因。

4.提出纠正错误的办法。

5.对错误予以改正,重新测试。

Debug和Release的介绍

如下面所示,在工程中,我们会看到Debug和Release两种版本

image.png

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

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

我们在自己写代码时选择Debug版本,以便更好的发现错误和改正错误。

windows环境调试介绍

1.选择Debug调试版本

image.png

2.学会快捷键

image.png

F9

设置断点,断点的作用是使程序运行到断点处停止

image.png

断点就是上图中的那个小红点,再按一下F9断点会消失。

F5

启动调试和F9配合使用,F9将断点设置好后,用F5可直接跳到断点处。

F10

逐过程————按一下F10程序往下走一步。

image.png

F11

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

ctrl+F5

使程序直接运行而不进行调试

shift+F5

终止调试

3.调试窗口的使用

image.png

学会使用调试窗口,对寻找错误会有很大帮助

接下来以下面这段代码为例,进行讲解

#include<stdio.h>
int main()
{
  int i = 0;
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  for (i = 0; i < 10; i++)
  {
    arr[i] = 9;
  }
}

1.局部变量窗口

image.png

这个窗口可以查看局部变量的值及其变化

image.png

image.png

2.监视窗口

image.png

监视1.2.3.4都可以使用。监视窗口使用最广泛,极为方便,可自行输入要查看的变量或变量的地址。

image.png

3.内存查看窗口

image.png

内存窗口,可以 查看内存信息

image.png

要查询对象可自行输入。

4.调用堆栈窗口

image.png

此窗口用下面这段代码进行讲解

#include<stdio.h>
void test3()
{
  printf("一键三连\n");
}
void test2()
{
  test3();
}
void test1()
{
  test2();
}
void test()
{
  test1();
}
int main()
{
  test();
}

image.png

像栈一样的展示函数调用逻辑

可观察到函数一步一步的调用逻辑

相关文章
|
11天前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
33 7
|
13天前
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
27 1
|
14天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
32 2
|
2月前
|
C语言
C语言调试
C语言调试
19 0
|
2月前
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
31 0
|
3月前
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
5月前
|
Linux C语言 Windows
C语言文件编程-Linux环境下运行
本文介绍了在Linux环境下使用C语言进行文件编程时的两种主要接口:C标准库函数与Linux系统调用。C标准库提供了`fopen`, `fread`, `fwrite`, 和 `fclose`等函数,适用于普通文件操作;而Linux系统调用如`open`, `read`, `write`, 和 `close`则更适合处理设备文件,同时也可用于普通文件。这两种方法的主要区别在于前者使用文件指针,后者使用文件描述符。文章还给出了两个示例程序:一个使用C标准库函数实现文件复制,另一个则使用Linux系统调用完成相同任务。
|
4月前
|
C语言 索引
C语言编译环境中的 调试功能及常见错误提示
这篇文章介绍了C语言编译环境中的调试功能,包括快捷键操作、块操作、查找替换等,并详细分析了编译中常见的错误类型及其解决方法,同时提供了常见错误信息的索引供参考。
|
5月前
|
前端开发 C语言 C++
C语言03----第一个程序HelloWorld(vs版)
C语言03----第一个程序HelloWorld(vs版)
|
6月前
|
安全 编译器 程序员
【C语言】:VS实用调试技巧和举例详解
【C语言】:VS实用调试技巧和举例详解
54 1