P32调试技巧1、2

news2024/12/24 0:38:15

实用调试技巧

  • 什么是bug?
  • 调试是什么?有多么重要?
  • debug和release的介绍
  • windows环境调试介绍
  • 一些调试的实例
  • 如何写出好的(易于调试)代码
  • 编程常见的错误

什么是bug?

第一次被发现的导致计算机错误的飞蛾,也是第一个计算机程序错误

调试是什么?有多重要?

所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心愧,就必然需要掩盖,那就一定会有迹象,迹象越多就越容易顺藤而上,这就是推理的途径。顺着这条途径顺流而下就是犯罪,逆流而上,就是真相。

一名优秀的程序员是一名出色的侦探

每一次调试都是尝试破案的过程

调试是什么?

我们是如何写代码的?
image.png
拒绝-迷信式调试!!!

调试(Debugging/Debug),又称排除,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程

调试的基本步骤

  • 发现程序错误的存在
  • 以隔离、消除等方式对错误进行定位
  • 确定错误产生的原因
  • 提出纠正错误的解决办法
  • 对程序错误予以改正,重新测试

Debug和Release的介绍

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

Release版本可能会优化代码

image.png
这里为什么死循环了呢?
因为这里越界访问了!

我们将编译器改为release版本然后运行
image.png
这就可以说明release是做了优化的
那么它是如何优化的呢?
image.png
image.png
可以明确看到,release版本下在分配内存时将i放到了arr数组下面,这样,当arr数组越界访问也无法访问到i
image.png

windows环境调试介绍

1.调试环境的准备

image.png

2.学会快捷键

image.png
最常使用的几个快捷键:

F5

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

F9

创建断点和取消断点断点的重要作用,可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。

F10

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

F11

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

CTRL + F5

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

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

查看临时变量的值

image.png

调用堆栈

调用堆栈可以看到函数的调用逻辑,顺序和栈的进出一致,即先进后出
image.png

一些调试的实例

实例一

实现代码:求1!+2!+3! …+n!;不考虑溢出
image.png
通过调试发现,当J=3时运算的结果出错了
设置条件断点,直接跳转到j==3时停止
image.png
添加代码,每次循环时初始化ret =1
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1983772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Modbus -- TCP协议

MODBUS TCP协议是一种基于TCP/IP协议的Modbus变种,它允许Modbus协议在以太网网络上运行,使得设备之间可以通过IP网络交换数据。 一:协议概述 modbus_TCP协议:走的是网口,所以需要创建TCPclient对象进行通信,和modubus-RTU协议最大的区别是&a…

proxfier的使用和设置

1,安装proxifier工具 2,安装之后配置代理设置 3,首先点击彩色卷部分 4,修改配置文件,并且配置代理协议为https ip为127.0.0.1 端口为8888 (注意下面图片 default一定为直连) 5,设置代理服务器&#xff…

怎样配置虚拟机IP

目录(三步走) 配置本机IP 配置虚拟机外部IP 配置虚拟机内部IP 参考链接: 配置本机IP 打开“网络和共享中心”——>更改“适配器设置” 找到“VMnet8”,然后右键“属性”,弹出下列窗口 输入本机IP(你目前电脑的IP) win系统可以用的命令:IPconfig 一共有AB两位,…

为什么我3d模型选择面选不到?---模大狮模型网

在展览3D模型设计行业中,设计师常常面临诸多技术挑战,其中之一是在模型编辑过程中遇到选择面的困难。这不仅影响了设计工作效率,还可能影响最终作品的质量和展示效果。本文将探讨在3D模型设计中为何会遇到“为什么我3D模型选择面选不到?”这…

【51单片机仿真】基于51单片机设计的钟表定时闹钟系统仿真源码设计文档演示视频——完整资料下载

演示视频 设计内容 (1)使用 DS1302 结合字符型 LCD12864 显示器设计一个简易的定时闹钟 LCD 时钟。程序执行后 LCD 显示“00:00:00” (2)K1—设置现在的时间,年闪烁,再按 K1 键月闪…

淘宝小程序踩坑记录

最近搞了一套淘宝小程序配合淘宝店铺直接跳转,类似于扭蛋机那种机制,真是一路坎坷,一步一个坑,这里记录一下(前端);淘宝小程序文当中心 编译相关 用uni-app没有淘宝小程序独有的编译环境&…

EdgeWorkers 最佳实践丨助力流媒体创新

近日亚太区 Akamai EdgeWorkers 首届编程挑战赛圆满落幕。参赛团队充分利用 Akamai 的智能边缘平台,探索无服务器计算的应用潜力。爱奇艺等获胜团队凭借 Akamai EdgeWorkers 和 EdgeKV 产品开发功能,将 DNS 解析时间降低 40% 。 一、云上竞逐&#xff0…

21LTR-Scene打靶渗透【附POC】(权限提升)

靶机下载地址:21LTR: Scene 1 ~ VulnHub21LTR: Scene 1, made by JayMaster2000. Download & walkthrough links are available.https://www.vulnhub.com/entry/21ltr-scene-1,3/ 1. 主机发现端口扫描目录扫描【192.168.2.120】 1.1. 主机发现 nmap -sn 192.…

牛客周赛 Round 54 (A~E)

#牛客周赛 Round 54 (A~E) 前言: 以后会定时更新很多比赛的题解 希望借此让自己坚持赛后补题 要不然写完就结束 自己水平没有一点提高 本人很菜所以不会更新 太难的题 加油!!!1. ​清楚姐姐的糖葫芦…

落笔成画!Krita+ComfyUI解锁AI实时绘图

原文链接:落笔成画!KritaComfyUI解锁AI实时绘图 (chinaz.com) 安装前提:电脑本地已经安装过ComfyUI且能正常运行 首先我们到Krita的官网下载Krita,我们直接下载最新的安装就可以了,安装过程非常简单,选择…

SQL注入之sqli-labs靶场第一关

手工注入less-1 1.找注入点 通过 ?id1 and 12--没有发现变化,尝试闭合发现注入点 字符型注入,单引号闭合 2.猜解字段数量 发现字段数量为3 3.通过union联合查询判断回显点 发现回显点2,3, 4,进行信息收集 数据库…

在PyCharm社区版中切换中文界面的操作方法

在PyCharm社区版中切换中文界面,可以按照以下步骤操作: 打开PyCharm社区版,点击顶部菜单栏的 "File"(文件)。在下拉菜单中选择 "Settings"(设置),或者使用快捷…

SSM整合快速学习

目录 步骤: 一、环境搭建 1.创建JdbcConfig配置类 2.创建JdbcConfig配置类 3.创建MybatisConfig配置类 4.创建jdbc.properties 5.创建SpringMVC配置类 6.创建Web项目入口配置类 二、功能模块开发 步骤1:创建数据库及表 步骤2:编写模型类 步骤3:编写Dao接…

Unlikely argument type for equals(): int seems to be unrelated to Long

代码审查不规范: Unlikely argument type for equals(): int seems to be unrelated to Long check package code_check;public class Obj {public Obj(){}private Long mail;public Long getMail(){return mail;}public void setMail(Long mail){this.mail mail;…

【OpenCV C++20 学习笔记】提取图片中的水平和垂直对象

提取图片中的水平和垂直对象 原理实操——去除五线谱的五线二进制化提取垂直对象完善边缘和最终输出图片黑白反转平滑 完整代码 其他图片元素提取实践提取水平线条提取音符轮廓 原理 在腐蚀和膨胀操作中,通过卷积核(kernel),或者结构元素(structuring e…

在优化微信、支付宝小程序用户体验时有哪些关键指标

在优化小程序用户体验时,有几个关键指标需要特别关注,这些指标不仅能够帮助评估当前的用户体验状况,还能为后续的优化工作提供明确的方向。以下是一些关键指标及其解释: 1. 日活跃用户(DAU) 是指每天使用…

搭建Mybatis,实现数据库增删改

在pom.xml文件中粘贴下列&#xff0c;加载maven依赖 <?xmlversion"1.0"encoding"UTF-8"?> <projectxmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation&…

2024年武汉东湖高新区职称第二批次开始了

众所周知&#xff0c;武汉市东湖高新区职称一年两批次&#xff0c;今年下半年第二批水平能力测试报名也已经开始了&#xff0c;请注意报名时间&#xff0c;别错过&#xff01;&#xff01; 2024年武汉东湖高新区第二批次水测报名时间&#xff1a;&#xff08;一&#xff09;网上…

letcode 分类练习 哈希表 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

letcode 分类练习 哈希表 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 242.有效的字母异位词349.两个数组的交集202.快乐数1.两数之和 242.有效的字母异位词 分别定义两个字母哈希表就可以了 class Solution { public:bool isAnagram(string s, strin…

sql注入-常见注入方法复现

环境演示均已sql-labs为例 1、报错注入 1.1常用的报错注入的函数 掌握好extractvalue、updatexml、floor报错&#xff0c;floor报错较难需要多理解&#xff0c;updatexml较为常用 定义 报错注入是通过特殊函数错误使用并使其输出错误结果来获取信息的。是一种页面响应形式…