首页 > 其他分享 >《重生到现代之从零开始的C语言生活》—— 调试

《重生到现代之从零开始的C语言生活》—— 调试

时间:2024-08-07 12:59:56浏览次数:15  
标签:错误 C语言 从零开始 内存 监视 Debug 重生 断点 调试

前言:调试是几乎每一个计算机行业的人员必备的技能,那么让我们来学习一下吧

bug

bug这个词好像出现在生活的很多地方,一般指在电脑系统中或程序中,隐藏着一些未被发现的缺陷和问题,简称程序漏洞

调试(debug)

我们发现bug后,下一步就是找到问题并修复问题,找问题的过程就是调试
调试一个程序,首先是承认代码出了问题,然后用各种手段去找代码错误的位置

Debug和Release

在VS上我们可以看到这两个选项

在这里插入图片描述
Debug通常称为调试版本,它包含着调试信息,并且不做任何优化,程序员在写代码的时候,一般用Debug版本

Release版本称为发布版本,它往往是经过优化的,使得程序在代码大小和运行速度上都是最优的,以便程序更好的使用,更加偏向使用者

开始调试

环境准备

首先是环境的准备,要在Debug环境下进行调试

使用快捷键

调用最常用的几个快捷键

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

断点的作用是可以在任意位置设置断点,断点可以在运行中让程序停在断点处

  • F9:启动调试,直接来到下一个断点处
  • F10:逐过程,通常来处理一个过程,一个过程可以是一次函数调用或者一条语句
  • F11:住语句,用这个快捷键可以进入调用函数的内部
  • CTRL+F5:程序直接开始运行不调试

监视和内存观察

监视

怎么开始监视
在菜单栏里【调试】-【窗口】-【监视】就能打开监视窗口,输入想观察的变量

【监视】可以观察变量的值

内存

怎么打开内存观察
在菜单栏里,【调试】-【窗口】-【内存】
在里面就能观察想要的内存数据
在窗口里输入&a ,arr等地址信息,就能得到想要的变量或者数组的地址

常见的编程错误

编译性错误

编译性错误一般都是语法错误,这种错误一般看错误信息就能解决,双击错误信息就能跳转到错误代码附件

链接性错误

链接性错误一般是因为

  • 标识符名不存在
  • 拼写错误
  • 头文件没包含
  • 引用的库不存在

运行时错误

运行时错误千变万化,需要自行借助调试逐步定位,慢慢发现错误


如果觉得有用可以点一下赞和关注,也可以先收藏以防需要时找不到哦,当然如果作者写的哪里有问题欢迎指出,我们一起进步!!!

祝看到这里的人天天开心哦(笔芯)

标签:错误,C语言,从零开始,内存,监视,Debug,重生,断点,调试
From: https://blog.csdn.net/yttandb/article/details/140894870

相关文章

  • 《重生到现代之从零开始的C语言生活》——函数递归
    递归啥是递归啊递归是解决问的一种方式,简单来说,就是函数自己调用自己递归解决问题把复杂的大问题转化为一个一个与原文题相似的小问题。递归的思想就是把大事化小在递归中,递就是递推,归就是回归递归中的限制条件递归必须存在限制条件,当满足这个条件时,递归不在继续每次......
  • 超详细明了的C语言函数递归,望周知。(包含求n的阶乘顺序打印⼀个整数的每⼀位求第n个斐
    1.递归是什么?递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。写⼀个史上最简单的C语⾔递归代码#include<stdio.h>intmain(){printf......
  • 从零开始开发微信小程序-资源准备
            工欲善其事,必先利其器。在完成小程序的申请之后,接下来就要着手准备开发环境和服务器的相关资源了。本文主要聚焦于域名备案以及SSL证书的购置流程;如果您对这些方面相当了解,可以直接跳过这部分内容。        1、服务器资源        1.1服务器......
  • 排序算法 归并排序 MergeSort -- C语言实现
    归并排序归并排序(Mergesort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(DivideandConquer)的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第2种方法);自下......
  • C语言——一维二维数组详解
    文章目录数组数组的概念一维数组的创建和初始化数组创建数组的初始化数组的类型一维数组的使用数组下标数组元素的打印数组的输入sizeof计算数组元素个数一维数组在内存中的存储二维数组的创建二维数组的概念二维数组的创建二维数组的初始化不完全初始化完全初始化按......
  • C语言的分支和循环(下)
    前言一、while循环1.if和while的对比2.while语句的执行流程3. while循环的实践 二、for循环1.语法形式2. for循环的执行流程3.for循环的实践4.练习 三、do-while 1.语法形式:2. dowhile循环的执⾏流程 3.dowhile循环的实例 4.练习总结前言......
  • 排序算法 希尔排序 ShellSort -- C语言实现
    希尔排序希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;但插入排序一般来说是低效的,因为插入排......
  • C语言典型例题28
    《C程序设计教程(第四版)——谭浩强》习题2.5输入一个华氏温度,要求输出摄氏温度。公式为C=5/9(F-32),要求输出要有文字说明,取两位小数数学知识:(1)华氏温度与摄氏温度(FahrenheittemperatureandCelsiustemperature),是两大国际主流的计量温度的标准。(2)华氏温标由来华氏温标:......
  • 【多线程-从零开始-肆】线程安全、加锁和死锁
    进程状态进程状态:就绪:正在CPU上执行,或者随时可以去CPU上执行阻塞:暂时不能参与CPU的执行Java的线程,对应状态做了更详细的区分,不仅仅是就绪和阻塞了六种状态:NEW当前Thread对象虽然有了,但是内核的线程还没有(还没调用过start)TERMINATE当前Thread对......
  • 【多线程-从零开始-伍】volatile关键字和内存可见性问题
    volatile关键字importjava.util.Scanner;publicclassDemo2{privatestaticintn=0;publicstaticvoidmain(String[]args){Threadt1=newThread(()->{while(n==0){//啥都不写......