C语言日记——调试篇

一、调试调试的基本步骤

发现程序错误的存在

以隔离、消除等方式对错误进行定位

确定错误产生的原因

提出纠正错误的解决办法

对程序错误予以改正,重新测试

二、Debug和Release

Debug通常称为调试版本,它包含调试信息,并且不作任何优化,

便于程序员调试程序。

可以进行一步一步的调试

在对应文件夹

Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用

不能一步一步调试也在对应文件夹但与debug版本内存大小会不同。

  • 常用快捷键

最常使用的几个快捷键:

F5

启动调试,经常用来直接跳到下一个断点处。

F9

创建断点和取消断点

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

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

如果程序前面有scanf则需要把scanf完成

F10

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

F11

逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最常用的)。

CTRL+F5

开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。

没进入调试状态

F10进入调试状态

  1. 自动窗口

什么都不用输入变量自己存在,会自动的把程序里的运行,进入函数里会把函数外的值给不显示,只显示函数里的变量。所以当需要观察全局时自动窗口不太方便!

  1. 局部变量

与自动窗口类似,观察程序运行过程中上下文的信息

  1. 监视

需要手动输入,但是都是自己想要观察的值,进入函数也不会消失而是变成灰色。最常用

监视窗口如果要监控void函数里的数组可以用【数组名,第几位】

  1. 内存

用内存功能查看数组地址

输入数组名字.列数可以自己输入,一行显示4列1列一个字节

  1. 调用堆栈
  1. 反汇编

把程序转换为汇编语言

练习和注意事项

栈区

此程序当i+到12之后会把i变0,因为发现i和arr{12}是同一个地址

当下标10过后适当的往后越界,就有可能到i的地址,当改到12的时候i也会更改就会导致程序的死循环。

strcpy(目标,内容)

求字符串长度

Char*是一个指针,str里面是字符h的地址

Const:修饰指针,让指针指向的内容不可以更改。

Assert(str)不让str为空指针,需要引用头文件<assert.h>

相关推荐
Armouy6 分钟前
Nuxt.js 学习复盘:核心概念与实战要点
前端·javascript·学习
AI科技星9 分钟前
万能学习方法论的理论建构与多领域适配性研究(乖乖数学)
人工智能·学习·算法·机器学习·平面·数据挖掘
格林威10 分钟前
ZeroMQ 在视觉系统中的应用
开发语言·人工智能·数码相机·机器学习·计算机视觉·c#·视觉检测
safestar201213 分钟前
React 19实战:Action、并发与性能,一次告别“意大利面状态”的升级
开发语言·javascript·vue.js
ZhaoJuFei16 分钟前
React生态学习路线
前端·学习·react.js
一只幸运猫.22 分钟前
Rust实用工具特型-Clone
开发语言·后端·rust
0xDevNull33 分钟前
Java BigDecimal 完全指南:从入门到精通
java·开发语言·后端
桌面运维家34 分钟前
交换机环路排查:STP配置实战与网络故障精确定位
开发语言·php
XiYang-DING35 分钟前
【Java】从源码深入理解LinkedList
java·开发语言
837927397@QQ.COM35 分钟前
个人理解无界原理
开发语言·前端·javascript