Visual studio调试技巧

Visual studio调试技巧

  • bug是什么?
  • Debug和Release
    • Debug
    • Release
  • 如何调试
  • VS调试快捷键
  • 调试过程中查看程序信息
    • 查看临时变量的值
    • 查看内存信息
    • 查看调用堆栈
    • 查看汇编信息
    • 查看寄存器信息
  • 编译常见错误
    • 编译型错误
    • 链接型错误
    • 运行时错误

bug是什么?

  • bug的英文释义为“臭虫、虫子”,现在人们将在电脑系统或者程序中隐藏着一些未被发现的缺陷和问题统称为bug。

人类历史上第一个计算机程序bug就是和“虫子”有关。
有⼀位为美国海军⼯作的电脑专家叫格蕾丝·赫柏(Grace Murray Hopper),格蕾丝·赫柏1947年9⽉9⽇对Harvard Mark II设置好17000个继电器进⾏编程后,技术⼈员正在进⾏整机运⾏时,它突然停⽌了⼯作。于是他们爬上去找原因,发现这台巨⼤的计算机内部⼀组继电器的触点之间有⼀只⻜蛾,这显然是由于⻜蛾受光和热的吸引,⻜到了触点上,然后被⾼电压击死。所以在报告中,赫柏⽤胶条贴上⻜蛾,并把“bug”来表⽰“⼀个在电脑程序⾥的错误”,“Bug”这个说法⼀直沿⽤到今天。

  • Bug的官方释义:是用于描述计算机程序或系统中的错误,缺陷,错误,故障或错误的常见术语,该错误,缺陷,错误,故障或错误会导致产生错误或意外的结果,或导致其行为异常。大多数错误是由于人们在程序的源代码或其设计中所犯的错误和错误引起的,而一些错误则是由编译器生成的错误代码引起的。包含大量错误和/或严重干扰其功能的错误的程序被认为是错误的。详细说明程序中错误的报告通常称为错误报告,故障报告,问题报告,故障报告,变更请求等。——来自维基百科

Debug和Release

Debug和Release

Debug

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

  • Debug(调试)的官方释义:是一种有条理的过程,可以发现并减少计算机程序或电子硬件中的错误或缺陷数量,从而使其表现出预期的效果。当各个子系统紧密耦合时,调试会变得更加困难,因为一个子系统中的更改可能会导致另一个子系统中出现错误。已经编写了许多有关调试的书籍,因为它涉及许多方面,包括:交互式调试,控制流,集成测试,日志文件,监视,内存转储,统计过程控制,以及改进检测并简化更改的特殊设计策略。——来自维基百科

Release

  • Release被称为发布版本,它往往进行了各种优化,使得程序在代码大小和运行速度上都达到最佳,以便用户更好的使用。

Release

如何调试

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

调试的基本步骤:
1.发现程序错误的存在
2.以隔离、消除等方式对错误进行定位
3.确定错误产生的原因
4.提出纠正错误的解决办法
5.对程序错误予以改正,重新测试

VS调试快捷键

  • Visual studio是一个集成开发环境,简称IDE,它是集成了编辑器、编译器和调试器。(在Linux环境下,gcc是编译器,gdb是调试器)
  • 下面简绍几个在调试过程中常见的vs快捷键

F9:创建断点,取消断点

F9

  • 断点的作用是可以在程序任意位置创造断点,在想让程序停留的地方打上断点,程序暂停执行后可以配合其他快捷键进行调试。

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

F9

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

F10

F11:逐语句,即每一次都执行一条语句,最为主要的是这个快捷键可以进入函数内部

F11

ctrl+F5:开始执行不调试,在想让程序执行起来,而非调试可以直接使用

ctrl+F5

调试过程中查看程序信息

  • 在查看调试过程中的程序信息时,必须先要开始调试即F10

查看临时变量的值

查看临时变量的值

查看内存信息

查看内存信息

查看调用堆栈

查看调用堆栈

查看汇编信息

查看汇编信息

查看寄存器信息

查看寄存器信息

编译常见错误

编译型错误

  • 编译型错误⼀般都是语法错误,这类错误⼀般看错误信息就能找到⼀些蛛丝⻢迹的,双击错误信息也能初步的跳转到代码错误的地⽅或者附近

链接型错误

  • 链接型错误一般原因是因为标识符名不存在,拼写错误,标识符不存在或者引用的库不存在等原因

运行时错误

  • 运行时错误时程序员在编写程序时,为根据自身所想而产生的错误,需要用调试解决

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

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

相关文章

springcloud(智慧养老平台)

开发语言:Java JDK版本:JDK1.8(或11)服务器:tomcat 数据库:mysql 5.6/5.7(或8.0)数据库工具:Navicat 开发软件:idea 依赖管理包:Maven 代码数据库…

SAM:Segment Anything Model

论文(ICCV,fackbook):Segment Anything 源码: https://github.com/facebookresearch/segment-anything demo:Segment Anything | Meta AI (segment-anything.com) 一、摘要 本文介绍了“Segment Anything…

活动回顾 | 春起潮涌——硬件驱动的量化交易与AI

4月20日,华锐技术ACLUB联合AMD在上海举办了“春起潮涌——硬件驱动的量化交易与AI”沙龙活动,会议围绕FPGA硬件加速、CPU&网卡调优、AI技术应用等展开,近50位量化IT与分享嘉宾一起探讨硬件技术在量化交易和AI领域的应用和创新。 FPGA在交…

构筑稳固基石:HTML网站架构与结构设计的深度探索

构筑稳固基石:HTML网站架构与结构设计的深度探索 在万维网的广阔天地里,每一个网站都是信息的港湾,而HTML作为这一切的基础,其架构与结构设计直接决定了站点的可访问性、可维护性和扩展性。本文将带你深入HTML的架构世界&#xf…

【C++第七课-string用法】

这里写自定义目录标题 string的初步介绍sring的构造函数string的构造函数-重点掌握无参的构造函数用常量字符串来初始化拷贝构造 string的构造函数-非重点掌握拷贝字符串str从pos位置开始的len个字符拷贝字符串s的前n个字符用n个c去初始化 string的赋值string的遍历和访问下标[…

爬虫自动化之drissionpage实现随时切换代理ip

目录 一、视频二、dp首次启动设置代理三、dp利用插件随时切换代理一、视频 视频直接点击学习SwitchyOmega插件使用其它二、dp首次启动设置代理 from DrissionPage import ChromiumPage, ChromiumOptions from loguru

matplotlib/seaborn 绘图可视化全面总结

1.概述 使用Matplotlib 绘图实现可视化时,会面临不同的需求有所调整,本文档重点对绘图过程中产生的一些小众需求进行全面总结,其他任务时可以随时即抽即用。 2.绘图 2.1 一般绘图 plt.figure() 参数设置说明 matplotlib.pyplot.figure( …

C++设计模式-创建型设计模式

设计模式 设计模式是什么 设计模式是指在软件开发中,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方案;其实就是解决问题的固定套路。但是要慎用设计模式,有一定的工程代码量之后用它比较…

【论文阅读】Tutorial on Diffusion Models for Imaging and Vision

1.The Basics: Variational Auto-Encoder 1.1 VAE Setting 自动编码器有一个输入变量x和一个潜在变量z Example. 获得图像的潜在表现并不是一件陌生的事情。回到jpeg压缩,使用离散余弦变换(dct)基φn对图像的底层图像/块进行编码。如果你给…

git ,查看某个版本的某个文件内容

如题,右键 open git bash here, 打开git命令行: 首先: git log 可以查看历史提交的记录,拷贝某个版本的版本号, 类似如: commit 1ba842efcf8076a24d7fb5d6c6323e801ccbf3ff Author: x&…

先电2.4的openstack搭建

先电2.4版本的openstack,前期虚拟机部署参考上一篇2.2版本,基本步骤是一样的,准备两个镜像文件CentOS-7.5-x86_64-DVD-1804.iso,XianDian-IaaS-V2.4.iso [rootcontroller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777…

L1-042 日期格式化

作者 陈越 单位 浙江大学 世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。 输入格式: 输入在一行中按照“mm-d…

华为OD机试 - 小扇和小船的数字游戏 - 二进制(Java 2024 C卷 200分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

json文件的读取

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏笔者水平有限,欢迎各位大佬指点,相…

论文笔记(四十五)Attention Is All You Need

Attention Is All You Need 文章概括摘要1. 介绍2. 背景3. 模型架构3.1 编码器和解码器堆栈3.2 Attention3.2.1 按比例点积Attention3.2.2 Multi-Head Attention3.2.3 注意力在模型中的应用 3.3 定位前馈网络3.4 嵌入与 Softmax3.5 位置编码 4 为什么 Self-Attention5. Trainin…

ssm104园区停车管理系统+jsp

园区停车管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管…

P9422 [蓝桥杯 2023 国 B] 合并数列

P9422 [蓝桥杯 2023 国 B] 合并数列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 用队列即可 当两个队列队首&#xff1a;a b &#xff0c;弹出 当a < b&#xff0c;把a加给其后一个元素&#xff0c;弹出a 当b < a&#xff0c;把b加给其后一个元素&#xff0c;弹出…

[初阶数据结构】时间复杂度与空间复杂度

前言 &#x1f4da;作者简介&#xff1a;爱编程的小马&#xff0c;正在学习C/C&#xff0c;Linux及MySQL。 &#x1f4da;本文收录于初阶数据结构系列&#xff0c;本专栏主要是针对时间、空间复杂度&#xff0c;顺序表和链表、栈和队列、二叉树以及各类排序算法&#xff0c;持续…

无人机+无人车:自组网协同技术及应用前景详解

无人车&#xff0c;也被称为自动驾驶汽车、电脑驾驶汽车或轮式移动机器人&#xff0c;是一种通过电脑系统实现无人驾驶的智能汽车。这种汽车依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作&#xff0c;使得电脑可以在没有任何人类主动操作的情况下&#xff0c;…

Python爬虫--异常处理

1. 异常处理概述 程序在运行的时候难免会遇到各种各样的问题&#xff0c; 如果没有异常处理&#xff0c;那么程序遇到问题的时候就可能奔溃&#xff0c; 这样就非常耗时又麻烦了&#xff0c; 为了避免这种情况发生&#xff0c;就需要开发一个具备异常处理的程序。 2. 常见状…