VS2022中的调试

embedded/2024/11/14 19:32:40/

目录

前言:

使用:

调试:


前言:

在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。那么,哪款编程工具让你的工作效率翻倍?是智能的代码编辑器,强大的版本控制工具,还是那些让你事半功倍的自动化脚本?让我们一起分享、探讨,找到能让效率飞升的秘密武器。

为了提高咱们的日常编程的效率,好的编译器肯定是少不了的,今天我们着重介绍VS2022这款编译器。

使用:

首先是VS2022的日常使用,不妨有初学的小伙伴一开始使用vs的时候,会发现VS有一个功能是自动弹出你可能需要的变量或头文件,如下:

这种我们可以通过Tab或者回车,选中我们需要的文件或者变量,这是自动弹出的方便性。我们如果自己创建了一个变量,vs也是可以自动弹出,如:

报错和警告也同时具有,如果我们出现了语法问题,在对应的语法上下文就会出现对应的红色波浪线等:

警告方面比如,我们输入scanf,但是没有对返回值进行接受,就会报警告:

对于注释部分,简单的快捷方式如ctrl + k + c,快速取消注释如ctrl + k + u就可以快速取消。

这是日常使用部分,我们今天的重点是调试部分,因为日常编码部分我们是可以快速检查,通过快速跑读代码以及正常的报错是可以提高编码的速度的,但是一个程序的交付,还有看最终的调试部分,所以重点是调试。

调试:

调试部分我们首先引出一个话题,什么是debug 什么是release?

这是两种版本,release是发行版本,在Linux章节如果我们需要调试,就需要gcc -g ...生成debug版本,包含调试信息我们才可以调试,但是VS这里即便是release版本我们也是可以执行调试的:

左上角的就是Release,我们建议,调试的时候使用debug版本,因为release版本本来也不是调试的,而且如果将release作为调试的话,优化是比较严重的,并且在Vs2022的大体上,优化更重,比如拷贝 + 构造会直接优化成构造都是简单的,优化一旦加大我们还不容易看懂。

这是debug和release的区别。

那么调试我们主要介绍这些调试技巧:F10 F11 F5 + F9 监视窗口 内存窗口的使用,这些操作已经足以覆盖我们的日常使用了。

咱们调试的时候,分为逐语句调试和逐过程调试,最直接的说就是经过一条函数调用语句的时候,会不会进入函数体。

F11是逐语句,我们平时可以直接使用F10或者F11进入调试,F10是逐过程。

那么F5  + F9的意思是,它们经常搭配到一起使用,但是F5如果直接按就有点类似于直接运行程序,这是因为没有断点,F9用来打断点,如果有了断点,F5默认将程序执行到该部分:

就像这样。

监视窗口:

调试开始之后,我们可以在窗口那里找到监视窗口,但是这里还是温馨提示,监视窗口有的时候并不是太准确,所以应该结合打印结果来看,监视窗口我们可以看到变量的值,类型,甚至可以直接&变量,这些操作都是被允许的,部分操作是不太被允许的,比如对右值取地址,即超出语法范围的操作,甚至就是说,可以在监视窗口执行简单的运算。

内存窗口:

同样是在窗口部分点开,我们在里面一般都是通过地址来学习程序的哪里应该怎么做。

一般都是要变量初始化结束之后,我们才能看到对应的地址,但是地址并不是万能的,比如右值,有的右值是将亡值,但是在内存空间是存在自己的空间的,我们没有办法看到,但是不能说它没有空间。

汇编:

汇编有的时候也是我们的一大学习利器,我们可以通过汇编来谈底层,比如new的底层为什么是malloc + 初始化 + 抛异常,为什么new = operator new + 抛异常,许多函数调用我们都是可以通过汇编的底层代码来看的。


感谢阅读!


http://www.ppmy.cn/embedded/113500.html

相关文章

Vue3+TypeScript+Vite+Less 开发 H5 项目(amfe-flexible + postcss-pxtorem)

参考文档 amfe-flexible:将根元素 html 的字体大小 fontSize(1rem) 设为 viewWidth / 10,以适配不同终端 postcss-pxtorem:将 px 单位转换为 rem 单位 安装依赖 pnpm add amfe-flexible pnpm add postcss-pxtorem …

微信 SDK、NCF 、CO2NET、Senparc.AI 近期重大更新,欢迎解锁

◾️更新基础库,包括缓存、APM、CO2NET 核心模块等全面升级; ◾️更新支付接口调用过程中的 SM(国密)和 RSA 判断方式; ◾️更新微信 SDK 接口 Senparc.Weixin SDK ✍️v2024.9.10 更新基础库,包括缓…

代码随想录算法训练营第五十八天 | 拓扑排序精讲-软件构建

目录 软件构建 思路 拓扑排序的背景 拓扑排序的思路 模拟过程 判断有环 写代码 方法一: 拓扑排序 软件构建 题目链接:卡码网:117. 软件构建 文章讲解:代码随想录 某个大型软件项目的构建系统拥有 N 个文件,文…

【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题三

某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenStack搭建企业内部私有云平台,开源Kubernetes搭建云原生服务平台,选…

【java】scala ExecutorService停止线程池的简单案例

上代码: import org.scalatest.funsuite.AnyFunSuite import java.util.concurrent.{ExecutorService, Executors, TimeUnit}class ExecutorPoolTest extends AnyFunSuite {val threadPool: ExecutorService Executors.newFixedThreadPool(1)val job: Runnable n…

linux-Linux 内核与模块管理-内核基础

Linux 内核是操作系统的核心,它负责管理硬件资源和提供系统调用接口供用户程序使用。Linux 内核的设计极为灵活和模块化,它允许开发者通过加载和卸载模块来动态地扩展内核的功能。 一、Linux 内核概述 1.1 内核的基本功能 Linux 内核的主要功能可以分…

技术成神之路:设计模式(十三)访问者模式

介绍 访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变对象结构的前提下,定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来,使得新的操作可以无缝地添加到现有对象中。 1.定…

Unity URP APK打包物体不渲染问题

在测试Shader性能的时候,打包到真机上测试是不可少的。但在一次打包APK时安装,打开程序竟然发现本应该生成的物体都不渲染了,但是在Debug的输出UI上确确实实生成了固定数量的物体,而它们的MeshRender却没有任何渲染,但…