C语言(第三十天)

这篇具有很好参考价值的文章主要介绍了C语言(第三十天)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

C语言(第三十天),c语言,开发语言

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

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

3. debug和release

C语言(第三十天),c语言,开发语言

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

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

C语言(第三十天),c语言,开发语言

                                                         release版本和debug版本的对比

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

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

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

C语言(第三十天),c语言,开发语言

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

C语言(第三十天),c语言,开发语言

 在监视窗口中观察:

C语言(第三十天),c语言,开发语言

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

C语言(第三十天),c语言,开发语言

 在内存窗口中观察数据:

C语言(第三十天),c语言,开发语言C语言(第三十天),c语言,开发语言

 

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

C语言(第三十天),c语言,开发语言

 除此之外,在调试的窗口中还有:自动窗口,局部变量,反汇编、寄存器等窗口,自行验证使用一下。文章来源地址https://www.toymoban.com/news/detail-685187.html

到了这里,关于C语言(第三十天)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学C的第三十天【自定义类型:结构体、枚举、联合】

    ========================================================================= 相关代码gitee自取 :C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 学C的第二十九天【字符串函数和内存函数的介绍(二)】_高高的胖子的博客-CSDN博客  ========

    2024年02月15日
    浏览(25)
  • Groovy开发语言系列(第三篇):DSL的强大能力

    欢迎阅读本系列的第三篇文章!在前两篇中,我们已经介绍了Groovy语言的发展历史、特点以及安装和基本语法。今天,我们将聚焦于Groovy的强大能力之一:领域特定语言(Domain-Specific Language,简称DSL)。 让我们先通过一个简单的示例来吸引大家对DSL的兴趣: 这段代码执行后

    2024年02月12日
    浏览(25)
  • 从零开发JavaWeb入门项目--十天掌握

    原文网址:从零开发JavaWeb入门项目--十天掌握_IT利刃出鞘的博客-CSDN博客 这是一个靠谱的JavaWeb入门项目实战,名字叫蚂蚁爱购。 从零开发项目 , 视频加文档 , 十天就能学会开发JavaWeb项目 ,教程路线是: 搭建环境 = 安装软件 = 创建项目 = 添加依赖和配置= 通过表生成代码

    2024年02月10日
    浏览(28)
  • 学习C语言十天了,我实现了仿真自由落体小球『C/C++&图形库EasyX』

    🌸作者简介: 花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。 🌸 本文收录于 初学C语言必会的20个小游戏专栏 ,本专栏主要内容为利用C/C++与图形库EasyX实现各种有趣的小游戏。 🌸 相关专栏推荐: C语言初阶系列 、 C语言进阶系列 、 数据结构与算法 本文主要内容为

    2023年04月15日
    浏览(27)
  • 【致敬未来的攻城狮计划】— 连续打卡第十天:FSP固件库开发及FSP配置详解。

     1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.Keil配置使用(使用 RASC 生成 Keil 工程) 6.Keil配置使用(使用 RASC 生成 Keil 工程)

    2023年04月26日
    浏览(44)
  • C语言(第三十五天)

    3. 移位操作符 左移操作符 右移操作符 注:移位操作符的操作数只能是整数。 3.1 左移操作符 移位规则:左边抛弃、右边补0 3.2 右移操作符 移位规则:首先右移运算分两种: 1. 逻辑右移:左边用0填充,右边丢弃 2. 算术右移:左边用原该值的符号位填充,右边丢弃 警告⚠️

    2024年02月10日
    浏览(27)
  • C语言(第三十二天)

    1. 递归是什么? 递归是学习C语言函数绕不开的一个话题,那什么是递归呢? 递归其实是一种解决问题的方法,在C语言中,递归就是函数自己调用自己。 写一个史上最简单的C语言递归代码: 上述就是一个简单的递归程序,只不过上面的递归只是为了演示递归的基本形式,不

    2024年02月11日
    浏览(24)
  • Java语言第三篇集合

    集合和数组的对比 数组的长度是不可变的,集合的长度是可变的。 数组可以存基本数据类型和引用数据类型。集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类。 Collection 集合 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

    2024年01月23日
    浏览(59)
  • C语言(第三十一天)

    6. 调试举例1 求1!+2!+3!+4!+...10!的和,请看下面的代码: 调试找一下问题。 7. 调试举例2 在VS2019、X86、Debug 的环境下,编译器不做任何优化的话,下面代码执行的结果是啥? 程序运行,死循环了,调试看看为什么? 调试可以上面程序的内存布局如下:  1. 栈区内存的使用习惯

    2024年02月11日
    浏览(32)
  • 易语言&miniblink交互教程——第三课 易语言与 Miniblink 交互

    今天来给大家讲解一下易语言miniblink交互教程的第三课,也就是如何让易语言与Miniblink进行数据交互,相互传递参数。 调用JS的方式很简单,只需要一句代码即可: 举个栗子: 当然,也可以用这个方法来调用我们自己写的JS函数: JS代码:     易语言代码为:   由此可知,

    2024年02月06日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包