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

第十章:C语言的调试

        很多小伙伴刚开始听到C语言的调试,这是个啥,表示很怀疑,敲代码不就是直接就是干嘛,结果很多小白们,一运行错误多的数都数不过来。就开始这改改,那删删,莫名奇妙就运行成功了。到最后都不知道到底那错了。有一种小朋友是否有多问号的感觉。可想而知代码调试有多么重要,一个正真的大佬,20%在敲代码,80%在调试代码。咱们不扯别的,直接进入今天的主题--C语言调试

 

 一:bug

 

 

      在 Mark II 计算机上工作时电脑不能正常运作了,霍普和整个团队都搞不清楚为什么。后来才发现,是一只飞蛾意外飞入了一台电脑内部而引起的故障。终于把问题解除了,霍普在日记本中记录下了这一事件。

二:调试的重要性

 ①调试的步骤

1.发现程序错误的存

2.以隔离、消除等方式对错误进行定位
3.确定错误产生的原因
4.提出纠正错误的解决办法
5.对程序错误予以改正,重新测试

②Debug和Release的介绍

Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

三:Windows环境调试介绍

①准备调试(要在Debug环境下才可以调试)

 ②学会快捷键

• F5:启动调试,经常用来直接跳到下一个断点处。(在循环中跳到逻辑上的断点)

• F9:创建断点和取消断点。

      断点的重要作用,可以在程序的任意位置设置断点。

      这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。

• F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。

• F11:逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑

      进入函数内部(这是最常用的)。

• CTRL+F5:开始执行不调试。

③调试的时候查看程序当前的信息

1.查看临时变量的值

2.查看内存信息 

 3.查看调用堆栈

 四:编程常见的错误

1编译型错误
2链接型错误(无法解析的外部命令)
3运行时错误逻移出现问题

五:采用相关代码来减少bug

1.const关键字(const的作用可以避免无意中由于修改数据造成的编程错误。)

2.const修饰指针变量的作用

 3.例子(模拟实现库函数:strcpy)

//模拟实现库函数:strcpy
#include<stdio.h>
#include<assert.h>char* my_strcpy(char* dest, const char * src)
{char* ret = dest;assert(dest != NULL);//断言防止空指针assert( src != NULL);//断言防止空指针//1.第一种写法//while (*dest++ = *src++) //	;//2.第二种写法while (*src != '\0'){*dest = *src;dest++;src++;}*dest = *src;// \0 的拷贝return ret;
}int main()
{//初始化char arr1[] = "hello bit"; char arr2[20] = "xxxxxxxxxxxxx";char* p = NULL;//调用函数my_strcpy(arr2, arr1);//打印arr2printf("%s\n", my_strcpy(arr2, arr1));return 0;
}

        不知不觉就到了尾声呢,咱们第十章的知识点就到这里了啦,作为小白的我,可能写的不是很好,不对的地方还请大佬大佬指点指点。
 

http://www.lryc.cn/news/89992.html

相关文章:

  • 【20】SCI易中期刊推荐——计算机信息系统工程电子与电气(中科院3区)
  • 初识网络之UDP网络套接字
  • 数据中心末端配电的数字化方案及设备选型
  • k8s入门实战-Service
  • Python量化交易:策略创建运行流程
  • 企业该如何自主构建信息化管理系统?
  • linuxOPS基础_操作系统概述
  • 常用adb命令记录下
  • Etcdctl 命令v3
  • 第二十一章 开发Productions - ObjectScript Productions - 延迟发送
  • 用vue-full-calendar实现酒店预定管理展示
  • DirectX12环境配置(1)
  • Go-异常处理(defer recover panic)
  • 【完美解决】mysql启动不了:本地计算机上的MySQL服务启动后停止
  • C++ Qt 项目设计:基于C++与Qt的跨平台定时关机/关屏应用开发
  • Python新技术和趋势:如何应对Python生态的变化和发展趋势
  • Flutter 又一元老离职,感谢 Tim 这些年的付出
  • C++学习笔记3:sort和priority_queue的比较器重载
  • Java之旅——Mybatis
  • 抽奖中的分布式锁应用
  • 项目总结 车牌识别
  • 一台服务器通过apache安装多个web应用
  • 网络连通性测试
  • AntDB-S流式数据库体验
  • CentOS 和 Windows 上添加和删除路由
  • 2023年电大秋季招生截止日期 什么时候开始报名
  • 滑动窗口问题
  • 电子合同网页预览盖章效果实现
  • 棋盘覆盖问题
  • [CISCN2023]unzip