当前位置: 首页 > 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;
}

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

相关文章:

第十章:C语言的调试

很多小伙伴刚开始听到C语言的调试&#xff0c;这是个啥&#xff0c;表示很怀疑&#xff0c;敲代码不就是直接就是干嘛&#xff0c;结果很多小白们&#xff0c;一运行错误多的数都数不过来。就开始这改改&#xff0c;那删删&#xff0c;莫名奇妙就运行成功了。到最后都不知道到底…...

【20】SCI易中期刊推荐——计算机信息系统工程电子与电气(中科院3区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…...

初识网络之UDP网络套接字

目录 一、UDP中的socket编程常用接口 1. socket的含义 2. sockaddr结构 3. socket编程中UDP协议常用接口介绍 3.1 创建socket文件描述符&#xff08;TCP/UDP、客户端 服务器&#xff09; 3.2 绑定端口号&#xff08;TCP/UDP&#xff0c;服务器&#xff09; 3.3 接收数据…...

数据中心末端配电的数字化方案及设备选型

普通PDU和智能PDU有什么区别&#xff1f; 机架安装配电盘或机架配电单元 (PDU) 是一种配备许多插座的设备&#xff0c;可将电力分配给位于数据中心机架或机柜内的服务器、存储设备和网络设备。领先的分析公司 IHS 将它们分为两大类&#xff1a; 1) 基本 PDU 提供可靠的配电。 2…...

k8s入门实战-Service

k8s入门实战-Service Service 和 Label Service 通过一组 Pod 路由通信。Service 是一种抽象&#xff0c;它允许 Pod 死亡并在 Kubernetes 中复制&#xff0c;而不会影响应用程序。在依赖的 Pod (如应用程序中的前端和后端组件)之间进行发现和路由是由Kubernetes Service 处理…...

Python量化交易:策略创建运行流程

学习目标 目标 知道策略的创建和运行知道策略的相关设置知道RQ的策略运行流程应用 无 1、体验创建策略、运行策略流程 1.1 创建策略 1.2 策略界面 2、 策略界面功能、运行介绍 2.1 一个完整的策略需要做的事情 选择策略的运行信息&#xff1a; 选择运行区间和初始资金选择回…...

企业该如何自主构建信息化管理系统?

实践证明&#xff0c;企业自己搭建的信息化系统灵活性更高&#xff0c;更能契合企业的需求。 我们可以借助零代码平台自主搭建&#xff0c;既提供了各个应用系统的标准化功能&#xff0c;又支持自定义搭建&#xff0c;可根据企业自身需求修改。 全球领先的信息技术研究和顾问公…...

linuxOPS基础_操作系统概述

计算机发展史 第一台计算机是1946 年2 月14 日诞生日&#xff0c;第一台名称ENIAC。体积一间屋子的大小&#xff0c;重量高达28t。 第一代&#xff1a;1946 – 1958 > 12 年 &#xff08;电子管&#xff09; 第二代&#xff1a;1958 – 1964 > 6 年 &#xff08;晶体管…...

常用adb命令记录下

adb root 获取root 权限(以root权限运行ADB守护程序)adb remount 以读写方式重新挂载设备的文件系统adb reboot 重启设备adb devices 查看当前连接设备adb get-serialno 获取设备的序列号adb backup 备份设备的应用程序和数据adb bugreport 收集设备的当前状态信息以进行故障排…...

Etcdctl 命令v3

一、v3必须导出环境变量 export ETCDCTL_API3 二、查看版本 etcdctl version 三、写入键 1.基本 etcdctl put foo bar 2.绑定租约 etcdctl put foo bar --leasexxxx 四、获取键 1.基本 etcdctl get foo 2.按十六进制获取 etcdctl get foo --hex 3.只读取键值 et…...

第二十一章 开发Productions - ObjectScript Productions - 延迟发送

文章目录 第二十一章 开发Productions - ObjectScript Productions - 延迟发送延迟发送 生成事件日志条目在 ObjectScript 中生成事件日志条目 第二十一章 开发Productions - ObjectScript Productions - 延迟发送 延迟发送 除了同步&#xff08;等待&#xff09;和异步&…...

用vue-full-calendar实现酒店预定管理展示

文章目录 前言一、关于vue-full-calendar二、使用步骤1. 引入库2. 使用库3. 开始编码4. 实际效果图展示5. 点击弹窗展示6. 弹窗展示效果图 总结 前言 近些天有位做酒店业务朋友问到我&#xff0c;有没有前端比较好用的预定日历查看插件&#xff0c;实际上我也没有研究过&#…...

DirectX12环境配置(1)

开发环境&#xff1a;visual studio 2022 第一种配置DirectX12环境得方式。首先创建一个c得空项目&#xff0c;然后创建一个main.cpp文件。把下面这串代码放进去&#xff0c;先不用管这串代码什么意思&#xff0c;后面会逐行逐句得讲解&#xff0c;因为我们创建得是空项目&am…...

Go-异常处理(defer recover panic)

系列文章目录 提示&#xff1a;goi语言基础文章 GO-异常处理 文章目录 系列文章目录前言一、关键字含义defer /recover 实现异常捕获和处理应用场景deferrecoverpanic 二、实例实例讲解上述几种情况 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; …...

【完美解决】mysql启动不了:本地计算机上的MySQL服务启动后停止

本文基于mysql8.0&#xff0c;5.7也可以参考 navicat 突然莫名其妙连不上mysql 查看服务&#xff0c;也启动不了&#xff0c;手动启动出现错误&#xff1a; 本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止 20230525更新&#xff01; 先…...

C++ Qt 项目设计:基于C++与Qt的跨平台定时关机/关屏应用开发

基于C与Qt框架的定时关机与关屏应用开发全攻略 (一) 项目概述 (Project Overview)1.1 项目需求解析 (Analyzing the Project Requirements)1.2 选择技术栈 (Choosing the Tech Stack)1.3 功能概览 (Function Overview) (二) 设计思路 (Design Thinking)2.1 系统架构设计 (Syste…...

Python新技术和趋势:如何应对Python生态的变化和发展趋势

第一章&#xff1a;引言 Python作为一门简洁、优雅且易于学习的编程语言&#xff0c;一直以来都备受开发者的喜爱。它拥有强大的生态系统和活跃的社区&#xff0c;使得Python在各个领域都有广泛的应用。然而&#xff0c;随着时间的推移&#xff0c;Python生态系统也在不断演变…...

Flutter 又一元老离职,感谢 Tim 这些年的付出

前天在 insiders 收到 Tim Sneath 的离职邮件时感觉很震惊&#xff0c;因为他绝对是 Flutter 团队的元老级人物&#xff0c;几乎每次一次 Flutter 版本发布和社区活动都有他的身影&#xff0c;可以说他是我的 Flutter 领路人之一。 Tim 是在 2017 加入 Flutter 团队&#xff0…...

C++学习笔记3:sort和priority_queue的比较器重载

1 sort 三种方法 1. 直接重载函数 #include <vector> #include <memory> #include <vector> #include <queue> #include <iostream> #include <algorithm>using namespace std;class Node{ public:int value;Node(){value 0;};explici…...

Java之旅——Mybatis

Mybatis 是一个基于 Java 的 ORM&#xff08;Object-Relational Mapping&#xff09;&#xff0c;用于 Java 应用程序的持久层框架&#xff0c;它将在 Java 对象和数据库关系之间建立一个映射。Mybatis 的作用主要是简化 SQL 语句的编写和维护&#xff0c;以及减少代码中的冗余…...

JMeter中稳定获取与传递Token的三种实战方案

1. 为什么token获取总在JMeter脚本里“掉链子”做接口测试的同行应该都踩过这个坑&#xff1a;明明API文档写得清清楚楚&#xff0c;Postman里一调一个准&#xff0c;可一到JMeter里&#xff0c;登录接口返回了token&#xff0c;后续请求却始终401——Header里token字段空着、变…...

知其雄,守其雌,为天下谿,在 SAP Fiori Elements 开发里修一条能承载业务之水的溪谷

老子《道德经》第二十八章说,知其雄,守其雌,为天下谿。完整语境里,这句话后面还接着,为天下谿,常德不离,复归于婴儿。中国哲学书电子化计划收录的《道德经》第二十八章文本,也把这组句子放在知其白、守其黑,知其荣、守其辱这一连串对照之中,可见老子并不是简单赞美柔…...

解锁iOS 17-26.4越狱的3个关键技巧:从新手到专家的完整指南

解锁iOS 17-26.4越狱的3个关键技巧&#xff1a;从新手到专家的完整指南 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &#x1f447; 项目…...

浔川代码编辑器 v4.1.0 正式版重磅上线!AI 加持,轻量高效,开箱即用

浔川代码编辑器 v4.1.0 正式版重磅上线&#xff01;AI 加持&#xff0c;轻量高效&#xff0c;开箱即用基于 Python Tkinter SQLite3 深度打磨&#xff0c;浔川代码编辑器 v4.1.0 正式版今日全面发布&#xff01;本次迭代全面整合内测优化成果&#xff0c;AI 助手、在线运行、…...

为什么选择 Telerik UI for UWP?10个理由让你的Windows应用开发效率倍增

为什么选择 Telerik UI for UWP&#xff1f;10个理由让你的Windows应用开发效率倍增 【免费下载链接】UI-For-UWP Telerik UI for Universal Windows Platform (UWP) is no longer supported. 项目地址: https://gitcode.com/gh_mirrors/ui/UI-For-UWP 如果你正在开发Wi…...

从UE/Unity转战Godot 4.2:一个老引擎用户的第一周避坑实录

从UE/Unity转战Godot 4.2&#xff1a;一个老引擎用户的第一周避坑实录当我在项目组里提议尝试Godot时&#xff0c;同事们的表情就像看到有人用算盘跑深度学习。作为十年Unity老用户&#xff0c;这个决定确实需要勇气——但当你发现团队80%的预算都要用来支付引擎订阅费时&#…...

YooAsset资源治理:Unity热更新与AB包依赖管理实战

1. 为什么Unity老手一提资源管理就皱眉&#xff1a;从AssetBundle的“三座大山”说起在Unity项目做到中后期&#xff0c;几乎每个主程都会经历这么一个深夜&#xff1a;打包时间突然从3分钟涨到12分钟&#xff1b;热更包体积比预期大出40%&#xff0c;CDN带宽告急&#xff1b;策…...

雪球md5__1038签名逆向:从Chrome调试到Node.js稳定复现

1. 这不是“破解”&#xff0c;而是对前端加密逻辑的常规逆向工程实践你打开雪球网的行情接口&#xff0c;抓到一个带md5__1038xxx参数的请求&#xff0c;复制下来一试——换台电脑、换个时间、甚至只是刷新一下页面&#xff0c;参数就失效了。后端直接返回403 Forbidden或{&qu…...

别再只用SSH了!给CentOS 7.9服务器装上图形桌面,用VNC远程操作真香

解锁CentOS 7.9图形化运维&#xff1a;VNC远程桌面实战指南在Linux服务器管理的日常工作中&#xff0c;纯命令行操作虽然高效&#xff0c;但遇到复杂的文件管理、图形化工具调试或团队协作时&#xff0c;图形界面往往能事半功倍。本文将带您从零开始&#xff0c;为CentOS 7.9服…...

HTTPS静态资源403/404根因排查:从Nginx配置到SELinux权限

1. 这不是SSL证书的问题&#xff0c;而是HTTP服务配置的“隐身故障”你刚在云服务商控制台花了几十块钱买了张正规CA签发的SSL证书&#xff0c;上传到Nginx或Apache&#xff0c;配好了443端口&#xff0c;https://yourdomain.com打开首页也绿锁高亮&#xff0c;一切看起来都对—…...