首页 > 其他分享 >C语言学习--断点调试

C语言学习--断点调试

时间:2024-08-19 12:55:20浏览次数:12  
标签:案例 -- 代码 C语言 程序员 int 断点 调试

提示:断点调试作为一种重要的调试技术,能够帮助程序员逐行分析代码的执行过程,查找潜在的 Bug,并最终解决问题。

目录

前言

13.1 一个实际需求

13.2 断点调试介绍

13.3 断点调试的快捷键

13.4 断点调试应用案例 1

13.5 断点调试应用案例 2

13.6 断点调试应用案例 3

13.7 断点调试应用案例 4

总结

附录


前言

在软件开发过程中,调试代码是不可避免的一部分。尤其是在面对复杂问题或难以察觉的错误时,普通的代码检查往往难以发现问题的根源。这时候,断点调试作为一种重要的调试技术,能够帮助程序员逐行分析代码的执行过程,查找潜在的 Bug,并最终解决问题。这章将详细介绍断点调试的基本概念、快捷键操作以及通过实际案例演示断点调试的应用。掌握断点调试技能不仅能够提高代码调试效率,还能帮助程序员更深入地理解代码的执行逻辑,进而提升编程能力


13.1 一个实际需求

在开发中,程序员发现一个非常诡异的错误,怎么看源代码都发现不了这个错误,这时老程序员就会温馨提示,可以使用断点调试,一步一步的看源码执行的过程,从而发现错误所在。

13.2 断点调试介绍

断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。然后程序可以进行分析从而找到这个 Bug【百度百科】

 

断点调试是程序员必须掌握的重要的技能。

 

使用断点调试也能帮助我们最终查看 C 程序源代码的执行过程,提高程序员的水平

13.3 断点调试的快捷键

f5: 开始调试 、执行到下一个断点

f11: 逐句执行代码, 会进入到函数体中

f10: 逐过程执行(遇到函数,不会进入到函数体)

shift+f11: 跳出(跳出某个函数, 跳出前,会将该函数执行完)

shift+f5: 终止调试

13.4 断点调试应用案例 1

看一下变量的变化情况等

 

void main() {

int sum = 0; //断点下在这里,然后使用 f10(逐过程执行, 可以看到各个变量的变化情况)

int i = 0;

for(i = 0; i < 10; i++) {

sum += i;

printf("\n i=%d", i);

printf("\n sum=%d", sum);

}

printf("退出 for 循环了~~");

}

63d63af9804146e38bbeb53379ec3438.png

13.5 断点调试应用案例 2

看一下数组越界的情况, 当数组越界后,会输出一个未知的值

 

void main() {

int arr[] = {1,2,3,4,5};

int i = 0;

int len = sizeof(arr) / sizeof(int);

for(i = 0; i <= len; i++) {

printf("\narr[%d]=%d", i, arr[i]);

}

}

13.6 断点调试应用案例 3

演示如何进入到调用的函数体内,f11(进入到函数体) , shift + f11 (跳出函数)

看看 C 设计者是怎么实现的。(提高编程思想)。

d51ee4f870814b528cf3d918e24ec226.png

13.7 断点调试应用案例 4

eaf32af31c3b4ad7b44b090339df9699.png


总结

通过本章的学习,我们深入了解了断点调试的基本操作和应用场景。我们通过实际案例演示了如何利用断点调试分析变量变化、检测数组越界问题、以及深入函数体内查看代码执行过程等实用技巧。这些调试技巧不仅能够帮助我们迅速定位问题,还能促使我们对代码的执行过程有更深层次的理解。断点调试作为一项必备技能,对于提高程序员的调试效率和编程水平至关重要。在今后的开发工作中,熟练应用断点调试,将使我们更加从容应对各种复杂的编程挑战。

附录

参考:【尚硅谷C语言零基础快速入门教程-哔哩哔哩】 https://b23.tv/vS3vTDp

 

标签:案例,--,代码,C语言,程序员,int,断点,调试
From: https://blog.csdn.net/weixin_62881069/article/details/141264101

相关文章

  • Linux下的库(静态与动态)原理与制作
    程序的编译过程程序的编译过程是将源代码转换为可执行文件的一系列步骤。这个过程通常包括预处理、编译、汇编和链接等阶段 1.预处理(Preprocessing)预处理器(cpp)处理源代码文件中的预处理指令,如#include和#define。它展开宏定义,包含头文件,并删除注释。输出是经过预处理的......
  • Redis的十大数据类型的常用命令(上)
    目录1.key的操作命令2.String的常用命令案例一:dy点赞案例二:文章的喜欢数3.List的常用命令案例:公众号订阅的消息4.Hash的常用命令案例:早期购物车设计5.Set的常用命令案例一:抽奖小程序案例二:朋友圈点赞案例三:朋友圈点赞6.Zset的常用集合(sortedset)案例一:根据商品......
  • 威高血净偏高的关联交易:销售费用率远高同行,现金流转负
    《港湾商业观察》施子夫 王璐日前,山东威高血液净化制品股份有限公司(以下简称,威高血净)针对首轮审核问询函进行了回复。威高血净的上市梦由来已久。早在2022年6月公司就递表港交所,其后无果,2023年12月30日公司又递表上交所主板,保荐机构为华泰联合证券。威高血净成立于2004......
  • 中创新航再被宁德时代专利诉讼不止不休,遭机构下调评级和目标价
    《港湾商业观察》黄懿7月26日,中创新航科技集团股份有限公司(下称“中创新航”,03931.HK)发布《诉讼公告》,将其与宁德时代新能源科技股份有限公司(下称“宁德时代”,300750.SZ)的专利诉讼再次推进大众视线中。业绩上来看,中创新航2023其增收不增利的欠佳表现遭到机构下调评级和目标......
  • Leetcode-552 学生出勤记录II
    Leetcode-552学生出勤记录II1.题目描述2.解题思路3.代码实现1.题目描述Leetcode-552学生出勤记录II2.解题思路(1)使用记忆化搜索来实现;(2)定义f[i][j][k]为右边填写j个A,且右边相邻位置有k个连续的L的情况下,向左填字母能构造多少个长为i的字符串;(3)对......
  • AutodL训练yolov9
    AutodL训练yolov9全过程1、租借Autodl服务器:AutoDL算力云|弹性、好用、省钱。租GPU就上AutoDL选择环境,直接选择镜像,yolov9官方2、创建完成:点击Jupyterlab进入服务器,到这里服务器租用完成2、下载yolov9官网代码:https://github.com/WongKinYiu/yolov93、进入服务器,上......
  • 计算机毕业设计django+vue基于水果超市管理系统【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和电子商务的普及,传统零售业正面临着前所未有的挑战与机遇。水果超市作为日常生活中不可或缺的一部分,其管理模式亟......
  • 计算机毕业设计django+vue音乐网站的设计与实现【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展,音乐已成为人们日常生活中不可或缺的一部分,数字音乐平台的兴起更是极大地丰富了人们的音乐获取方式。传统的音乐播放......
  • 计算机毕业设计django+vue的献血管理系统【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会对公益事业的日益重视,无偿献血作为保障医疗用血安全、充足的重要一环,其管理效率与服务质量直接关系到医疗体系的稳健运行及公众健......
  • redis 哨兵模式开启方案
    哨兵模式一、配置sentinel模式二、测试sentinel日志输出的状态信息环境准备准备三台系统为CentOS7的主机master:192.168.152.71slave1:192.168.152.72slave2:192.168.152.73.哨兵模式的介绍:Redis哨兵模式(RedisSentinel)用于提供高可用性和监控功能,主要......