C语言(第三十天)

news2025/1/20 21:59:50

1. 什么是bug
bug本意是昆虫”或“虫子”,现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问
题,简称程序漏洞。
“Bug” 的创始人格蕾丝·赫柏(Grace Murray Hopper),她是一位为美国海军工作的电脑专家,
1947年9月9日,格蕾丝·赫柏对Harvard Mark II设置好17000个继电器进行编程后,技术人员正在进行整机运行时,它突然停止了工作。于是他们爬上去找原因,发现这台巨大的计算机内部一组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受光和热的吸引,飞到了触点上,然后被高电压击死。所以在报告中,赫柏用胶条贴上飞蛾,并把“bug”来表示“一个在电脑程序里的错误”,“Bug”这个说法一直沿用到今天。

                                         历史上的第一个bug(图片来自网络)

2. 什么是调试(debug)?
当我们发现程序中存在的问题的时候,那下一步就是找到问题,并修复问题。
这个找问题的过程叫称为调试,英文叫debug(消灭bug)的意思。
调试一个程序,首先是承认出现了问题,然后通过各种手段去定位问题的位置,可能是逐过程的调
试,也可能是隔离和屏蔽代码的方式,找到问题所的位置,然后确定错误产生的原因,再修复代码,重新测试。

3. debug和release

 在VS上编写代码的时候,就能看到有debug和release两个选项,分别是什么意思呢?

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序;
程序员在写代码的时候,需要经常性的调试代码,就将这里设置为debug,这样编译产生的是debug版本的可执行程序,其中包含调试信息,是可以直接调试的。
Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。当程序员写完代码,测试再对程序进行测试,直到程序员的质量符合交付给用户使用的标准,这个时候就会设置为release,编译产生的就是release版本的可执行程序,这个版本是用户使用的,无需包含调试信息等。

                                                         release版本和debug版本的对比

对比可以看到从同一段代码,编译生成的可执行文件的大小,release版本明显要小,而debug版本明显大。

4. VS调试快捷键
那程序员怎么调试代码呢?

4.1 环境准备
首先是环境的准备,需要一个支持调试的开发环境,我们上课使用VS,应该把VS上设置为debug,如
图:

 4.2 调试快捷键
调试最常使用的几个快捷键:
F9:创建断点和取消断点
断点的作用是可以在程序的任意位置设置断点,打上断点就可以使得程序执行到想要的位置暂定执
行,接下来我们就可以使用F10,F11这些快捷键,观察代码的执行细节。
条件断点:满足这个条件,才触发断点

F5:启动调试,经常用来直接跳到下一个断点处,一般是 和F9配合使用。
F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
F11:逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部。在函数调用的地方,想进入函数观察细节,必须使用F11,如果使用F10,直接完成函数调用。
CTRL + F5:开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。
VS更多快捷键了解:http://blog.csdn.net/mrlisky/article/details/72622009

5. 监视和内存观察
在调试的过程中我们,如果要观察代码执行过程中,上下文环境中的变量的值,有哪些方法呢?
这些观察的前提条件一定是开始调试后观察,比如:

#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;
}

5.1 监视
开始调试后,在菜单栏中【调试】->【窗口】->【监视】,打开任意一个监视窗口,输入想要观察的对象就行。
打开监视窗口:

 在监视窗口中观察:

 5.2 内存
如果监视窗口看的不够仔细,也是可以观察变量在内存中的存储情况,还是在【调试】->【窗口】->【内存】
打开内存窗口:

 在内存窗口中观察数据:

 

 在打开内存窗口后,要在地址栏输入:arr,&num,&c,这类地址,就能观察到该地址处的数据。

 除此之外,在调试的窗口中还有:自动窗口,局部变量,反汇编、寄存器等窗口,自行验证使用一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/943329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringBoot】使用 HandlerInterceptor 拦截器进行用户登录验证? 为什么不使用 SpingAOP ?

文章目录 前言一、为什么不使用 SpringAOP ?1, 需求分析2, SpringAOP 能实现吗? 二、使用 HandlerInterceptor1, 实现 HandlerInterceptor 接口2, 将自定义拦截器加入到系统配置 三、HandlerInterceptor 实现原理源码分析 总结 前言 各位读者好, 我是小陈, 这是我的个人主页,…

crawlab通过docker单节点部署简单爬虫

crawlab 单节点docker安装 此处介绍的是单节点的方式&#xff0c;多节点的情况可以把爬虫上传到一个节点中&#xff0c;之后会同步到其它节点上 version: 3.3 services:master:image: crawlabteam/crawlabcontainer_name: crawlab_masterrestart: alwaysenvironment:CRAWLAB…

GaussDB技术解读系列:高级压缩之OLTP表压缩

8月16日&#xff0c;第14届中国数据库技术大会&#xff08;DTCC2023&#xff09;在北京国际会议中心顺利举行。在GaussDB“五高两易”核心技术&#xff0c;给世界一个更优选择的专场&#xff0c;华为云数据库GaussDB首席架构师冯柯对华为云GaussDB数据库的高级压缩技术进行了详…

〔018〕Stable Diffusion 之 批量替换人脸 篇

✨ 目录 &#x1f388; 下载插件&#x1f388; 插件基础使用&#x1f388; 基础使用效果&#x1f388; 批量处理图片&#x1f388; 多人脸部替换 &#x1f388; 下载插件 如果重绘图片的时候&#xff0c;你只想更换人物面部的话&#xff0c;可以参考这篇文章扩展地址&#xff…

【GAMES202】Real-Time Environment Mapping2—实时环境光照2

一、Shadow from Environment Lighting 上篇我们说了给定Environment&#xff0c;如何计算一个着色点的Shading&#xff0c;但没说Shadow。而事实上&#xff0c;实时渲染中很难做到环境光的Shadow。 原因也很容易想到&#xff0c;一种观点我们把环境光当成多光源问题&#xff…

软件测试实训系统建设方案

一 、系统概述 软件测试实训系统是软件开发过程中的一项重要测试活动&#xff0c;旨在验证不同软件模块或组件之间的集成与交互是否正常。综合测试确保各个模块按照设计要求正确地协同工作&#xff0c;以实现整个软件系统的功能和性能。以下是软件测试实训系统的一般流程和步骤…

2023腾讯云服务器多少钱一年?CPU内存带宽配置报价

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G4M带宽112元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、云服务器CVM S5实例2核2G配置280.8元一年、GPU服务器GN10Xp实例145元7天&#xff0c;腾讯云服务器网长期更新腾讯云轻量…

格式化u盘怎么做?分享几个简单方法!

“u盘用了好久&#xff0c;存储了很多不太重要的文件&#xff0c;想将它格式化之后继续使用。但是不知道怎样才能格式化u盘&#xff0c;大家有什么好的建议吗&#xff1f;” U盘是常见的移动存储设备&#xff0c;然而&#xff0c;在日常生活中使用u盘时&#xff0c;我们可能因为…

锁策略、原子编程CAS 和 synchronized 优化过程

前言 锁冲突&#xff1a;两个线程获取一把锁&#xff0c;一个线程阻塞等待&#xff0c;一个线程加锁成功。 目录 前言 一、锁策略 &#xff08;一&#xff09;乐观锁和悲观锁 &#xff08;二&#xff09;重量级锁和轻量级锁 &#xff08;三&#xff09;自旋锁和挂起等待…

HTML基础1

一、创建项目和标签基础 1.1 什么是HTML 英文全称Hyper Text Markup Language&#xff0c; 中文全称为超文本标记语言。 超文本标记语言是标准通用标记语言下的一个应用&#xff0c;也是一种规范&#xff0c;一种标准&#xff0c;它通过标记符号来标记要显示的网页中的各个部…

进程与线程(概念、并行、并发)

进程与线程 一、定位二、什么是进程&#xff1f;三、进程管理1、PCB相关属性&#xff08;了解&#xff09;2、多任务的处理方式 四、什么是线程&#xff1f;总结 一、定位 在计算机系统中&#xff0c;操作系统是其中的重要一环。对上&#xff0c;给软件提供稳定的运行环境&…

ssm+vue线上体验馆管理系统源码和论文

ssmvue线上体验馆管理系统源码和论文085 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0…

el-collapse折叠面板默认全部展开/关闭

所要展开项的name标识符与v-model绑定值匹配即可默认展开。 1. 案例 <el-collapse v-model"activeNames"><el-collapse-item name"0" title段落1>那一年&#xff0c;花开得不是最好&#xff0c;可是还好&#xff0c;我遇到你&#xff1b;&l…

高忆管理:A股已具备年度配置价值

周末利好四箭齐发&#xff0c;财政部、证监会、三大买卖所均宣布严重方针调整&#xff0c;首要包含印花税调降、IPO节奏阶段性收紧、融资保证金比例降至80%、限制大股东和实控人减持等。二级商场上&#xff0c;大盘大幅高开后一路震动走低&#xff0c;终究收盘涨幅显着收窄。业…

ROS通信机制之服务(Service)的应用

1、服务的概述 在上节我们讲过一个重要通信机制话题&#xff1a;ROS通信机制之话题(Topics)的发布与订阅以及自定义消息的实现&#xff0c;这里介绍另外一种节点之间传递数据的方法&#xff1a;服务(Service)服务的本质是同步的跨进程函数调用&#xff0c;也就是说节点可以调用…

骨传导耳机哪款比较好,市面上最好的骨传导耳机分享

随着科技的日新月异&#xff0c;骨传导耳机也在不断更新换代。市场上涌现出许多品牌&#xff0c;这使得消费者在购买时感到困惑。别担心&#xff01;我们为你整理了一些市场上最好的骨传导耳机品牌&#xff0c;希望能帮到你。现在&#xff0c;就让我们一起探索这些骨传导耳机的…

人工智能会成为人类的威胁吗?马斯克、扎克伯格、比尔·盖茨出席

根据消息人士透露&#xff0c;此次人工智能洞察论坛将是一次历史性的聚会&#xff0c;吸引了来自科技界的许多重量级人物。与会者们将共同探讨人工智能在科技行业和社会发展中的巨大潜力以及可能带来的挑战。 埃隆马斯克&#xff0c;特斯拉和SpaceX的首席执行官&#xff0c;一直…

ssm+vue理发店会员管理系统源码和论文

ssmvue理发店会员管理系统源码和论文089 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&a…

《高性能Linux网络编程核心技术揭秘》已出版

#好书推荐##好书奇遇季#《高性能Linux网络编程核心技术揭秘》&#xff0c;京东当当天猫都有发售。定价109元&#xff0c;网店打折销售更便宜。本书配套示例项目源码、作者QQ答疑。 本书详解高性能Linux网络编程的核心技术及DPDK框架&#xff0c;剖析Nginx高性能服务器架构&…

《PyTorch 2.0深度学习从零开始学》已出版

#好书推荐##好书奇遇季#《PyTorch 2.0深度学习从零开始学》&#xff0c;京东当当天猫都有发售。定价69元&#xff0c;网店打折销售更便宜。本书配套示例项目源码、PPT课件。 本书以通俗易懂的方式介绍PyTorch深度学习基础理论&#xff0c;并以项目实战的形式详细介绍PyTorch框…