当前位置: 首页 > news >正文

【C 语言系统入门教程】第 8 讲:VS 实用调试技巧 | 零基础学习笔记

【C 语言系统入门教程】第 8 讲:VS 实用调试技巧 | 零基础学习笔记

前言

写代码一定会遇到错误,调试(Debug)是程序员必须掌握的核心技能。

本讲专门讲解VS 编译器最实用的调试方法,包括 Debug/Release 区别、常用快捷键、监视窗口、内存观察,并用 3 个经典案例带你实战调试,彻底告别 “盲改代码”。

系列往期笔记:

第 1 讲:C 语言常见概念

第 2 讲:C 语言数据类型和变量

第 3 讲:分支和循环(上)

第 4 讲:分支和循环(下)

第 5 讲:数组

第 6 讲:函数

第 7 讲:数组和函数实践:扫雷游戏


🎯 本讲学习目标

  1. 理解bug、调试、Debug、Release的基本概念。

  2. 掌握 VS最常用调试快捷键(F5、F9、F10、F11)。

  3. 学会使用监视、自动窗口、内存窗口观察变量。

  4. 能独立调试 3 个经典错误案例。

  5. 学会调试扫雷游戏这类综合项目。

  6. 能区分编译错误、链接错误、运行时错误并对应解决。


📝 核心学习内容

1. 什么是 bug?

  • bug:程序中隐藏的缺陷、问题、漏洞。

  • 由来:1947 年计算机继电器里飞进一只飞蛾导致故障,从此沿用 bug 表示程序错误。

2. 什么是调试(debug)?

发现程序错误 → 定位问题位置 → 分析原因 → 修复代码 → 重新测试

这个找错、改错的过程就是调试。


3. Debug 和 Release 版本

类型含义特点文件大小
Debug调试版本含调试信息,不优化,供程序员调试较大
Release发布版本全速优化,无调试信息,给用户使用更小、更快

【重点】调试必须切到 Debug!Release 不能调试。

【配图预留】

release版本和debug版本的对⽐

4. VS 调试快捷键(必背)

  1. F9:设置 / 取消断点

  2. F5:启动调试,直接跳到下一个断点

  3. F10:逐过程,不进函数

  4. F11:逐语句,进入函数内部

  5. Ctrl + F5:运行不调试


5. 监视和内存观察

5.1 监视窗口

调试启动后:

调试 → 窗口 → 监视 → 监视 1

可输入变量名,实时查看值变化。

打开监视窗⼝
在监视窗⼝中观察
5.2 内存窗口

调试 → 窗口 → 内存 → 内存 1

输入地址(& 变量、数组名),可查看内存存储数据。

内存窗⼝设置列

示例代码:

#include <stdio.h> int main() { int arr[10] = { 0 }; int num = 100; char c = 'w'; int i = 0; for (i = 0; i < 10; i++) { arr[i] = i; } return 0; }

6. 调试举例 1:阶乘求和错误

题目:求 1!+2!+…+10!

错误代码

#include <stdio.h> int main() { int n = 0; int i = 1; int sum = 0; int ret = 1; for(n=1; n<=10; n++) { for(i=1; i<=n; i++) { ret *= i; } sum += ret; } printf("%d\n", sum); return 0; }

错误原因:ret 没有每次重置为 1。

调试方法:F10 逐步观察 ret 和 sum 的变化。


7. 调试举例 2:数组越界死循环

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

现象:死循环

原因

  • 栈区从高地址到低地址使用

  • 数组越界覆盖了变量 i

  • i 被改成 0,循环永远不结束


8. 调试举例 3:扫雷游戏调试技巧

  1. 在函数入口打断点(F9)

  2. F5 直接跳到函数

  3. F11 进入函数内部

  4. 监视窗口输入:

    • 一维数组:数组名,10

    • 二维数组:数组名[0],11


9. 编程常见错误归类

9.1 编译型错误
  • 语法写错、少分号、括号不匹配

  • 双击错误行直接跳转到问题位置

9.2 链接型错误
  • 函数名写错、未包含头文件、未实现函数

  • 提示:无法解析的外部符号

9.3 运行时错误
  • 逻辑错、死循环、越界、崩溃

  • 必须用调试解决


📝 课后习题

一、选择题

  1. 调试程序时,VS 必须切换到()

    A. Debug

    B. Release

    C. 都可以

    D. 随便

  2. 想要进入函数内部调试,使用快捷键()

    A. F5

    B. F9

    C. F10

    D. F11

  3. 数组越界导致死循环,通常发生在()

    A. 堆区

    B. 栈区

    C. 全局区

    D. 常量区

二、判断题

  1. Release 版本可以正常调试。()

  2. F10 是逐过程,不会进入函数。()

  3. 运行时错误必须靠调试才能定位。()

三、实操题

  1. 打开阶乘求和错误代码,用 F10 调试找到错误并修复。

  2. 对扫雷游戏的SetMine函数打断点调试,观察布雷过程。


📝 参考答案

一、选择题

  1. A

  2. D

  3. B

二、判断题

  1. ×


📝 本讲总结

  1. 调试是程序员必备技能,不会调试就不会写代码。

  2. Debug 用于调试,Release 用于发布

  3. 必背快捷键:F9 断点、F5 运行、F10 逐过程、F11 进函数

  4. 监视窗口、内存窗口可以看清程序内部

  5. 错误分三类:编译错、链接错、运行错,调试专治运行时错误。

  6. 学会调试,你就能真正掌控代码


📌 版权说明

本文为个人学习笔记整理,配套课程课件内容,未经允许禁止转载,如有错误欢迎评论区指正~

http://www.jsqmd.com/news/620221/

相关文章:

  • 4000元作业批改准的学习机哪个好?2026兼顾护眼与批改的旗舰之选 - 速递信息
  • x64dbg实战指南:从零开始掌握程序调试与分析技巧
  • Maomi.In | .NET 全能多语言解决方案陀
  • 餐厅问答智能体构建全流程指南,AI智能体开发进阶项目
  • 小红的图上加边【牛客tracker 每日一题】
  • 终极指南:3分钟为Axure RP安装中文语言包,告别英文界面困扰
  • 2026 年在职雅思稳过机构权威榜单:上班族高效出分指南,监督为王、稳过无忧 - 速递信息
  • 如何在Windows上轻松安装APK文件:APK-Installer完整指南
  • 【研报299】2026电动汽车牵引电机技术创新机遇研究报告:AI与先进冷却的创新方向
  • 深入解析安卓USB升级包:如何高效提取关键镜像文件
  • 如何提高C编程能力
  • 靠谱的石油套管生产厂家 - 资讯焦点
  • 章二 直通心灵的窗口
  • 2026年佛山GEO优化公司哪家好?推荐评测口碑对比知名七家排名
  • DeepSeek教我如何诡辩
  • WEB-RTC vs H.323
  • ◇【技术解析】TD3算法:如何通过Clipped Double Q-learning解决Actor-Critic中的高估问题
  • 2026雅思机构权威榜单发布|财政紧缩下的教育投资,如何用市场经济眼光选对雅思机构? - 速递信息
  • XShell突然罢工?别慌!手把手教你用FinalShell快速接管服务器运维(附下载与基础配置)
  • 第X篇:COZE实战指南 【基于COZE工作流打造智能视频素材提取引擎】全流程解析
  • 甜味剂超细粉碎工艺与设备选型全攻略
  • PDE (Processing D Editor) 三维场景编辑器 · 软件白皮书 · 基于 v..执
  • 2026雅思机构权威实测榜|刚需备考选哪家? - 速递信息
  • 百度网盘直链解析:突破限速实现10倍下载加速的终极指南
  • 计算机毕业设计:Python全国天气爬虫可视化预测系统 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
  • 2026雅思备考指南!五大机构对比,多次元教育凭实力稳居榜首 - 速递信息
  • 山东鼎恩家庭教育骗人的还是真的?看完这5个方面你就明白了 - 资讯焦点
  • MetaGPT实战:5分钟搭建你的第一个AI开发团队(含角色配置与代码生成)
  • 前端小白必看:30天轻松掌握AI开发,收藏这文章让你薪资翻倍!
  • 从数据采集到回放验证:ADTF 适配 ROS 的 ADAS 测试实践愿