VS的调试技巧

这篇具有很好参考价值的文章主要介绍了VS的调试技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Visual Studiohttps://visualstudio.microsoft.com/zh-hans/vs/

目录

 1、什么是调试?

2、debug和release

3、调试

3.1、环境

3.2、 快捷键

3.2.1、F10和F11

3.2.2、ctrl+F5

3.2.3、F5与F9

 3.2.3.1、条件断点

3.3、监视和内存观察

3.3.1、监视

3.3.2、内存


1、什么是调试?

当我们发现程序中存在的问题的时候,那下⼀步就是找到问题,并修复问题。 这个找问题的过程叫称为调试,英⽂叫debug(消灭bug)的意思。


调试⼀个程序,⾸先是承认出现了问题,然后通过各种⼿段去定位问题的位置,可能是逐过程的调 试,也可能是隔离和屏蔽代码的⽅式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码, 重新测试。

 

VS的调试技巧,C语言,VS编译器,c语言

 

2、debug和release

VS的调试技巧,C语言,VS编译器,c语言

  • Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序; 程序员在写代码的时候,需要经常性的调试代码,就将这⾥设置为debug,这样编译产⽣的是debug 版本的可执⾏程序,其中包含调试信息,是可以直接调试的。
  • Release 称为发布版本,它往往是进⾏了各种优化,使得程序在代码⼤⼩和运⾏速度上都是最优的, 以便⽤⼾很好地使⽤。当程序员写完代码,测试再对程序进⾏测试,直到程序员的质量符合交付给⽤ ⼾使⽤的标准,这个时候就会设置为release,编译产⽣的就是release版本的可执⾏程序,这个版本是 ⽤⼾使⽤的,⽆需包含调试信息等。 

简单来说,Debug版本是程序员使用的版本,进行调试和修复,而Release版本是当程序员写完代码,并且代码符合质量标准后,进行上交的版本,也就是最后用户使用的版本,同时Release版本是无法进行调试和修改的。 

VS的调试技巧,C语言,VS编译器,c语言 

VS的调试技巧,C语言,VS编译器,c语言

且二者的最大不同之处就在于存储在电脑磁盘中的内存空间并不一致,Release存储的更小,而Debug存储的更大。 

3、调试

3.1、环境

调试的环境,在调试代码之前,必须先进行环境的改变,也就是先将编译器的变为debug的版本环境,而X86和X64环境并无大碍。

VS的调试技巧,C语言,VS编译器,c语言

3.2、 快捷键

VS中常用的快捷键:http://t.csdn.cn/Gjfmi

3.2.1、F10和F11

介绍:

  • F10:逐过程,通常⽤来处理⼀个过程,⼀个过程可以是⼀次函数调⽤,或者是⼀条语句。
  • F11:逐语句,就是每次都执⾏⼀条语句,但是这个快捷键可以使我们的执⾏逻辑进⼊函数内部。 

区别:

VS的调试技巧,C语言,VS编译器,c语言 

如以上代码:

  • 若使用F10进行调试,根据F10的调试原理,在调试到调用函数test()时,F10会直接越过,并得出结果,随后立即跳往下一个语句,for()
  • 而,若使用F11进行调试,根据F11的调试原理,在调试到调用函数test()时,F11会进入test中,通过调用函数,抵达void test()并开始调试里面的每一个语句,待调试完里面的所有语句后,在跳回原来的test()之后的语句。 

结论:在函数调⽤的地⽅,想进⼊函数观察细节,必须使⽤F11,如果使⽤F10,直接完成函数调⽤。 

3.2.2、ctrl+F5

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

3.2.3、F5与F9

介绍:

  • F5:启动调试,经常⽤来直接跳到下⼀个断点处,⼀般是 和F9配合使⽤。
  • F9:创建断点和取消断点 断点的作⽤是可以在程序的任意位置设置断点,打上断点就可以使得程序执行到想要的位置暂定执 ⾏,接下来我们就可以使⽤F10,F11这些快捷键,观察代码的执行细节。 

注意:

F5在没有配合F9的使用时,就和Ctrl+F5毫无区别(最新的VS2020版本),甚至是一闪而过。 

VS的调试技巧,C语言,VS编译器,c语言

 作用:

F9的是用于在有可能出现问题的地方使用,配合F5,可以使调试变得更加的简便和轻松。

譬如:

VS的调试技巧,C语言,VS编译器,c语言

如以上代码:

在得知错误点在for语句时

  • 若在for循环开始的那一行中摁下F9,设置断点,而后在摁下F5,那么在for之前的代码语句将会快速进行调试,随后抵达F9的所在位置。
  • 而若没有使用该功能,我们想要查询for语句中的错误,只能使用F10或者F11进行逐行的代码调试,效率极其低下。 
 3.2.3.1、条件断点

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

 VS的调试技巧,C语言,VS编译器,c语言

在进行条件断点之前,我们先了解一下断点。

如以上代码,有两个断点,分别是第18行和第23行。

那么在18行的断点结束后,摁下F5,跳往的是第23行的断点,还是?

VS的调试技巧,C语言,VS编译器,c语言

 答案并不是第23行的断点,而是下一处循环的断点。

for语句,是一个循环语句,在循环未结束之前,是不会停下,而设在for语句循环体内的断点也是如此,当一次循环的断点结束后,摁下F5飞往的是下一次循环的断点,直到循环结束!

这也是断点的一个特点,断点是逻辑断点,并非物理表面上的物理断点! 

条件断点:

VS的调试技巧,C语言,VS编译器,c语言
 如以上代码,有这样一个疑问,如果我知道了某一次循环会出错,但是我要知道那一次循环具体出错的原因,那么我该怎么办?应该是在循环语句中不断的使用F11进行内部循环的调试,调试到那一次循环位置,还是说?

VS的调试技巧,C语言,VS编译器,c语言

于是乎,当我们遇到这类问题时,我们就可以将断点设置为条件断点进行调试。

条件断点的原理是只有满足改条件时,循环便会中断,且之前进行的循环过程会被快速调试。 

如何设置:

摁F9设置断点——>右击断点——>选择“条件”——>设置条件——>回车 

3.3、监视和内存观察

在调试的过程中我们,如果要观察代码执⾏过程中,上下⽂环境中的变量的值,有哪些⽅法呢?

3.3.1、监视

开始调试后,在菜单栏中【调试】->【窗⼝】->【监视】,打开任意⼀个监视窗⼝,输⼊想要观察的对 象就行。

打开监视窗口:

VS的调试技巧,C语言,VS编译器,c语言

 注意:只有在进行调试后(摁下F10),才能点击窗口右侧选项栏内的监视,否则会没有任何东西出现。

VS的调试技巧,C语言,VS编译器,c语言

 且,在监视栏中,输入的对象必须是合法对象,也就是在代码中合理的表达式或者变量,否则会没有任何东西出现。

3.3.2、内存

 如果监视窗⼝看的不够仔细,也是可以观察变量在内存中的存储情况,还是在【调试】——>【窗⼝】——> 【内存】

打开内存窗口:

VS的调试技巧,C语言,VS编译器,c语言

在内存窗⼝中观察数据: 

VS的调试技巧,C语言,VS编译器,c语言 

第一行表示内存地址,第二行表示内存中的十六进制展示,第三行表示内存数据的解析。

VS的调试技巧,C语言,VS编译器,c语言 

在打开内存窗⼝后,要在地址栏输⼊:arr,&num,&c,这类地址,就能观察到该地址处的数据。 

VS的调试技巧,C语言,VS编译器,c语言 

VS的调试技巧,C语言,VS编译器,c语言 文章来源地址https://www.toymoban.com/news/detail-684355.html

到了这里,关于VS的调试技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenCV】VS编译器配置OpenCV库路径

            大家好呀,本篇是我在学习OpenCV库的时候一开始需要在vs2019或者vs2022编译器底下进行配置的一篇学习笔记,希望能够对OpenCV感到困惑的同学有所帮助。         废话不多说,我们直接开始吧: 目录 下载OpenCV  配置Microsoft.Cpp.x64.user文件 1.找到Microsoft.Cpp.x64.user文件

    2024年02月04日
    浏览(47)
  • Matlab配置编译器(Matlab2020b+vs2013)

    Matlab可以使用 mex –setup 命令来设置编译器 如果是先装visual studio后装matlab,一般情况下只需要在命令行输入mex –setup按照提示选择即可完成编译器的设置 如果是先装matlab后装visual studio,很可能无法找到编译器,那就需要修改设置 1、matlab安装目录 MATLAB2020binwin64mexopts 中有

    2024年02月05日
    浏览(48)
  • 解决MATLAB2020B关于找不到vs2019C++编译器问题

    在配置 matlab 深度学习环境过程中,出现找不到 vs219C++编译器 问题,尝试了各种办法,还是失败,经过摸索和结合他人经验,最终成功,予以总结,供需要的朋友们参考 配置: matlab2020b、vs2019 ,其他版本方法类似 1.matlab中运行mex-setup  出现问题,叫我安装MinGW-w64,但由于后

    2024年02月16日
    浏览(52)
  • Matlab2022a无法识别vs2019编译器,未检测到支持的编译器,错误使用Mex -setup error cannot find support compiler

    1、确定一下您的问题:错误使用Mex 2、再执行以下命令: 如果您的结果跟我一样,那么可以继续看,如果不一样,就可能不是同一个问题。 下面直接说解决方案: 3、打开powershell,执行下面命令 install-module -scope currentuser MSI 按照提示输入Y 4、继续执行命令 get-msirelatedproduct

    2024年02月06日
    浏览(67)
  • VSCode编译器环境下,调试3d-tiles-validator

    参照3d-tiles-validator仓库的 README.md文件 Clone the repository into the current directory: Change into the directory of the cloned repository: Install the validator and all its dependencies: 完成上述步骤后,\\\"ts-node\\\"可以直接来执行3d-tiles-validator VsCode打开3d-tiles-validator文件夹 Ctrl+Shift+D 打开运行调试配置面板,添加

    2024年02月11日
    浏览(36)
  • 【C语言】--编译及编译器

    夫学须静也,才须学也;非学无以广才,非志无以成学 个人主页:【😊个人主页】 系列专栏:【❤️系列专栏】 C语言一直以来都是初入编程的小白们的必修课,作为程序员必学语言之一,C语言自然有属于它的奥秘,接下来就由我来带领大家走进C语言的世界吧🚗🚗🚗 1、

    2024年02月13日
    浏览(48)
  • 【Linux】编译器-gcc/g++与调试器-gdb的使用

    👀 樊梓慕: 个人主页  🎥 个人专栏: 《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》 🌝 每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.gcc/g++语法 2.gcc的使用及编译器是如何\\\"翻译\\\"代码的? (1)预处理 (2)编译 (3)汇编

    2024年02月04日
    浏览(49)
  • 【UNIX 环境编程】GCC 编译器 | Makefile 基础入门 | GDB 调试教学

    💭 写在前面: 本文将介绍如何使用 GCC 编译器编译,并详细介绍了 Makefile 的基本构造、创建Makefile 文件以及 Makefile 变量,以提高编译效率。此外,本文还将探讨GDB调试器的使用,包括调试前的准备、readelf 读取 ELF 文件信息、显示代码、断点、调试、监视、跳转等内容。 

    2024年02月03日
    浏览(61)
  • 【Linux】编译器gcc和g++与调试器gdb的使用

    我们知道,一个程序被运行起来之后需要经历四个阶段然后才变成一个可执行的程序,他们分别为:预处理,编译,汇编和链接。下面我们将介绍这四个阶段的操作,测试代码如下: 1.1 预处理 预处理也叫预编译,程序在预处理阶段会完成如下操作: 展开头文件,将头文件中

    2024年02月07日
    浏览(33)
  • 编译原理课程设计--C语言编译器

    源程序1: 源程序1词法分析结果: 与程序1语法分析结果(部分) 源程序1四元式: 源程序1优化后的四元式: action-goto表(部分) 文件目录: (1)掌握语义分析过程,即语法制导翻译过程。 (2)在语法分析的LR分析程序中的基础上添加程序,进行语义分析,生成源程序的四

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包