你不知道的VS调试技巧,来这看就对了(上)

简介: 笔记

什么是bug


1.png

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

调试是什么?有多重要?

所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心有愧,

就必然需要掩盖,那就一定会有迹象,迹象越多就越容易顺藤而上,这就是推理的途径。

顺着这条途径顺流而下就是犯罪,逆流而上,就是真相。

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

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

我们是如何写代码的?


Debug和Release的介绍。


Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

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

的,以便用户很好地使用。

bebug和release文件

2.png3.png

在release版本下,我们的调试会显示被优化


调试技巧


调试快捷键

最常使用的几个快捷键:

F5

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

F9

创建断点和取消断点

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

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

F10

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

F11

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

长用的)。

CTRL + F5

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

更多调试技巧:请点这里


查看临时变量信息

4.png

查看堆栈信息

5.png

查看内存信息

6.png

查看汇编信息

查看寄存器信息

0.png


调用实例


8.png

输入3,输出15,说明程序有问题,这时我们一步一步按F11进行调试,找出问题,我们看到当i为3时,刚开始ret应该等于1,而这里却等于上一次的值,说明我们未对ret的值进行修改


9.png

ret改为1后,此时程序功能实现

10.png

实例二

我们这里可以看到程序进入了死循环,我们按F11进行逐步调试

11.png

这里我们可以看到当i为12时,继续按F11i此时又变为0,这是因为arr[12],此时访问到了i所在的位置,改变了它的值

12.png

临时变量创建在栈区,并且先使用高地址给i,而数组又是从低地址到高地址进行访问,arr[12],此时访问到了i所在的位置

13.png

相关文章
|
JavaScript C# 开发工具
22款Visual Studio Code实用插件推荐
Visual Studio Code是一个轻量级但功能强大的源代码编辑器,轻量级指的是下载下来的Visual Studio Code其实就是一个简单的编辑器,强大指的是支持多种语言的环境插件拓展,也正是因为这种支持插件式安装环境开发让Visual Studio Code成为了开发语言工具中的霸主,让其同时支持开发多种语言成为了可能。俗话说的好:“工欲善其事,必先利其器”,安装一些实用插件对自己日常的开发和工作效率能够大大的提升,避免996从选一款好的开发插件开始。以下是我整理的一些比较实用的Visual Studio Code插件希望对大家有用,大家有更好的插件推荐可在文末留言🤞。
659 0
|
人工智能 自然语言处理
离颠覆好莱坞又近了一步!Pika推出Lip Sync(口型同步)
【2月更文挑战第13天】离颠覆好莱坞又近了一步!Pika推出Lip Sync(口型同步)
455 1
离颠覆好莱坞又近了一步!Pika推出Lip Sync(口型同步)
|
机器学习/深度学习 运维 前端开发
集成学习方法:Bagging与Boosting的应用与优势
集成学习方法:Bagging与Boosting的应用与优势
568 0
|
监控 安全 网络安全
|
9月前
|
Java
课时4:JDK简介
课时4:JDK简介。主讲人李兴华,内容分为两部分:1. JDK的具体内容;2. JDK的下载。JDK(Java开发工具包)是Java开发的核心工具,提供编译和解释功能,必须通过官方网站下载并配置。目前主要版本为JDK 10,历史版本包括JDK 1.0、JDK 1.2、JDK 1.5、JDK 1.8等。JDK下载页面提供多平台支持,需先接受协议再选择适合的操作系统版本进行下载。安装完成后即可搭建Java开发环境。
271 0
|
存储 数据挖掘
服务器数据恢复—用RAID5阵列中部分盘重建RAID5如何恢复原raid5阵列数据?
服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障,用户方请人维修。维修人员在没有了解故障磁盘阵列环境的情况下,用另外4块硬盘(除去掉线的硬盘)重新创建了一组全新的RAID5阵列并完成数据同步,导致原raid5阵列数据全部丢失。
|
存储 网络协议 网络性能优化
一文详细理解计算机网络体系结构(考试和面试必备)
这篇文章提供了C++基础知识的快速概述,包括C++的特点、面向对象设计、组成部分、标准、学习建议、应用领域、源文件、编译器、类与对象、编译执行步骤、分号与块、标识符、基本数据类型、typedef、枚举类型、变量定义与声明等。
656 0
一文详细理解计算机网络体系结构(考试和面试必备)
|
C语言
全网最详细用c语言实现植物大战僵尸游戏(下)-1
全网最详细用c语言实现植物大战僵尸游戏(下)
411 0
|
缓存 JavaScript 前端开发
Node.js模块化的基本概念和分类及使用方法
Node.js模块化的基本概念和分类及使用方法
282 0
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
274 0

热门文章

最新文章