关于MSVS的实用调试技巧

简介: 关于MSVS的实用调试技巧

bug问题如何解决?如何找到bug?------调试

Bug是什么?Bug是怎么来的呢?

 bug的英文意思就是臭虫, 我们计算机的第一个bug就是因为一只已经死的臭虫进入到了计算机里面导致出现错误,因此我们把'计算机错误'称为Bug。

调试是什么?

调试(英语:debug),又称除错,是发现和减少计算机程序或电子仪器设备中错误的一个过程。

调试的基本步骤

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

Debug和Release的介绍

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

debug版本用于我们调试,release版本用于服务客户。

1.调试环境准备

debug是我们可以调试的开发环境,我们首先要设置为debug,如图:


2.调试快捷键

F10

  • F10:逐过程,通常⽤来处理⼀个过程,⼀个过程可以是⼀次函数调⽤,或者是⼀条语句。

第二步:打开监视窗口


然后监视窗口打开之后如下:


  • 按3次f10,运行程序

当然我们也能通过监视界面看到i的地址,需要输入&i就可以了。


F9 +F5

F9:创建断点和取消断点

断点的作⽤是可以在程序的任意位置设置断点,打上断点就可以使得程序执⾏到想要的位置暂定执⾏,接下来我们就可以使⽤F10,F11这些快捷键,观察代码的执⾏细节。

条件断点:满⾜这个条件,才触发断点

F5:启动调试,经常⽤来直接跳到下⼀个断点处,⼀般是 和F9配合使⽤。

f9+f5控制程序运行位置

就会出现下面的红点,红点就是我们创造的断点。

  • 再按f5,我们就可以将程序直接跳转到红点所在的位置。前面的赋值循环就直接跳过了。


F11

  • F11:逐语句,就是每次都执⾏⼀条语句,但是这个快捷键可以使我们的执⾏逻辑进⼊函数内部。在函
  • 数调⽤的地⽅,想进⼊函数观察细节,必须使⽤F11,如果使⽤F10,直接完成函数调⽤。

当箭头指向29行的时候我们按下f11


就可以进入函数内部了!

CTRL + F5

CTRL + F5:开始执⾏不调试,如果你想让程序直接运⾏起来⽽不调试就可以直接使⽤。

3.查看内存信息



4.实践

现在就是调试的实操了!

算出1!+2!+3!+...+n!


但是算出的结果为15


目前没有问题,我们继续去查找

然后我们继续

找bug需要耐心,别着急喔


然后我们发现了问题,ret应该=3!,为什么ret=12呢?

接着我们往回看看



原来在我们算2!后,我们的ret并没有重新变回1,

而是将2!的值继续带着,然后就有了ret=2!×   3!= 12


解决方案:只需要把int ret = 1;的位置改变一下就可以了。




目录
相关文章
|
6月前
|
算法 数据安全/隐私保护
基于GARCH-Copula-CVaR模型的金融系统性风险溢出效应matlab模拟仿真
本程序基于GARCH-Copula-CVaR模型,使用MATLAB2022A仿真金融系统性风险溢出效应。核心功能包括计算违约点、资产价值波动率、信用溢价及其直方图等指标。GARCH模型用于描述资产收益波动性,Copula捕捉依赖结构,CVaR度量极端风险。完整代码无水印输出。 具体步骤:首先通过GARCH模型估计单个资产的波动性,再利用Copula方法构建多资产联合分布,最后应用CVaR评估系统性风险。程序展示了详细的运行结果和图表分析,适用于金融市场风险量化研究。
|
10月前
|
编译器 API 语音技术
SDK介绍
【10月更文挑战第21天】
|
7月前
|
机器学习/深度学习 人工智能 PyTorch
从零开始:如何训练自己的AI模型
### 从零开始:如何训练自己的AI模型 训练AI模型如同培养新生儿,需耐心与技巧。首先明确目标(如图像识别、自然语言处理),选择框架(TensorFlow、PyTorch)。接着收集并预处理数据,确保多样性和准确性。然后设计模型结构,如卷积神经网络(CNN),并通过代码实现训练。训练后评估模型性能,调优以避免过拟合。最后部署模型至实际应用。通过猫狗分类器案例,掌握关键步骤和常见问题。训练AI模型是不断迭代优化的过程,实践才能真正掌握精髓。
|
Ubuntu 网络安全 数据安全/隐私保护
如何在 Ubuntu 上创建一个 SSH CA 以验证主机和客户端
如何在 Ubuntu 上创建一个 SSH CA 以验证主机和客户端
229 0
|
11月前
|
机器学习/深度学习 人工智能 算法
AI在医疗健康领域的应用
随着人工智能技术的不断发展,其在医疗健康领域的应用也日益广泛。从辅助诊断、个性化治疗方案的制定,到疾病预防和健康管理,AI技术都在发挥着重要作用。本文将探讨AI在医疗健康领域的应用,包括其在医学影像分析、基因编辑、药物研发等方面的应用,以及其对医疗行业未来发展的影响。
|
弹性计算 监控 Java
云效OOM 处理探讨
在处理云效中的OOM(可能指内存溢出)问题时,可以通过以下措施缓解或解决:首先,进行**诊断与监控**,包括启用详细日志记录和性能监控;其次,**优化应用**,如代码审查及资源限制设定;再者,采用**垂直与水平扩展**策略增加内存或分散负载;此外,优化**垃圾回收与内存管理**;最后,充分利用**云服务特性**如自动弹性伸缩。这些方法有助于提高云效应用的稳定性和效率。
|
Shell 网络安全 数据安全/隐私保护
MacOS Sonoma14.2.1系统SSH免密登录
【7月更文挑战第9天】在MacOS Sonoma 14.2.1中设置SSH免密登录,包括:1) 使用`ssh-keygen`生成RSA密钥对;2) 使用`ssh-copy-id`将公钥传到远程主机;3) 用`ssh-add --apple-use-keychain`添加私钥到ssh-agent,并为重启后自动添加配置自动化脚本;4) 可选地,编辑`~/.ssh/config`设置别名简化登录。确保远程主机的`.ssh/authorized_keys`文件权限为600。
428 4
|
11月前
|
存储 大数据 Apache
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
112 0
|
安全 前端开发 网络安全
【Azure App Service】访问App Service应用报错 SSL: WRONG_VERSION_NUMBER(上海蓝云阻断页)
在Azure App Service上部署的应用遇到`SSL: WRONG_VERSION_NUMBER`错误。问题可能由不兼容的TLS版本引起,但即使将最小入站TLS版本改为1.2,问题仍存在。实际原因是上海蓝云的阻断页面,表明网站未完成ICP备案或有安全规定限制。解决方案包括:1) 对App Service绑定自定义域名并进行ICP备案,或2) 使用Application Gateway处理公网请求。在复杂环境中,需仔细排查和适配规则。
383 11
|
存储 SQL NoSQL
关系型数据库的扩展性问题
关系型数据库的扩展性问题
378 2