Visual Studio Debug实战教程之基础入门

前言

在过去,我已经写过好几篇关于调试 / debug / 解 Bug 的文章,但都是从宏观的角度上去讲的,并没有针对哪种工具做具体深入的剖析。

在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间。通常,debug是指发现缺陷并改正的过程。修正缺陷紧随debug之后,或者说二者是相关的。如果代码中存在缺陷,我们首先要识别造成缺陷的根本原因(root cause),这个过程就称作调试(debugging)。找到根本原因后,就可以修正缺陷。

工欲善其事,必先利其器,一个强大的调试工具可以帮助我们快速的发现问题、解决问题。而能不能很好的利用这些工具则是菜鸟程序员和高手程序员在工作方法上的一大区别。

所以,接下来,我打算从我最熟悉也是用户体量最大的 Visual Studio 开始入手,动手写关于 Debug 的系列教程。

Visual Studio提供了很多用于调试的工具。有时调试需要花费大量时间去识别root cause。VS提供了许多辅助调试的便捷的工具。调试器(Debugger)包含错误列表、添加断点、可视化的程序流程、控制执行流程、Data Tips、监视窗口(watch windows)、多线程调试、线程窗口、并行调试概览以及IntelliTrace调试概览。我希望本文能够对调试功能的使用者有所裨益。

虽说 MSDN 上已经啥都有了,但是赤裸裸的英文世界还是挡住了不少的开发者,这里我希望能用最平实易懂的语言让大家快速上手 VS 的调试功能。

它适用于 C#,C/C ++,Visual Basic,JavaScript 等大部分 VS 支持的编程语言。

说明一下,此教程主要参考 MSDN,但同时也添加了我自身在使用过程中积累的一些经验。

好了,废话不多说,进入主题。

本次教程将介绍 Visual Studio 入门阶段的一些 Debug 功能。

与大多数 IDE 一样,Visual Studio 有两个调试阶段:

  • 一是发现并解决 Build 过程中的项目和编译错误。
  • 二是发现并解决 Run 过程中的动态错误。

Build 阶段

Build Solution

Build 一个 Solution 先从配置开始。

Solution 的配置有两种基本类型: Debug 和  Release。

它们的区别如下:

Debug Release
生成的可执行文件未经优化,大而慢,内含开发人员添加的调试信息,不会被投入市场使用。 生成的可执行文件经过了优化,小而快,可以被投入市场使用。

默认配置为 Debug。

除此之外,还可以指定目标平台,如 x86(32 位 Intel CPU)、x64(64 位 Intel CPU)和 ARM(ARM CPU,仅支持某些应用类型)。

若要更改此值,请单击平台下拉列表,选择其他平台或「配置管理器...」

配置好工程之后,就可以开始 Build 了。

最简单的方法是按下 F7,也可以在菜单中选择 Build Solution。

2、Output 窗口

Build 过程及其结果将显示在 Output 窗口。

这里会显示原始编译器输出,如Error,Warning 等。可以单击 Error 或 Warning 转到对应的代码行。

这是一个 Build 成功的例子。

3、Error List 窗口

Build 过程中出现的 Error 和 Warning 的详细信息可以在 Error List 窗口中查看。

单击某一项 Error 或者 Warning,可以转到对应的发生 Error 或者 Warning 的代码行。

如上图,红色波浪线代表了 Error ,可以将鼠标悬停在上方获取出现此 Error 的详细信息。

有的时候,并不是所有的 Error 你一眼就能看出其中的问题,可能会出现一些只对编译器才有意义的术语或者代码,例如:

fatal error C1189: #error ...

此时,很多人的做法是把这段话复制粘贴到百度/谷歌搜索栏再去搜索。其实你未必要去做这样的重复劳动。

也许你不知道,VS 自带了搜索功能。

在相应的 Error 或者 Warning 条目上右击,会出现一个菜单,点击 Show Error Help,将自动执行该 Error 或者 Warning 的 Bing 搜索。

另外,也可以点击 Code 列中的错误代码超链接,如 CS1525,同样会执行该错误代码的 Bing 搜索。

一一查看并解决 Error List 中出现的所有的 Error,Rebuild Solution 直至成功生成解决方案。

4、代码静态分析

解决了 Build 过程中 Error List 出现的所有 Error 之后,可以尝试执行代码静态分析。

代码静态分析会去分析代码中可能的导致运行时错误等问题,并给出 Warning。

不要觉得没 Erorr 了,Build 成功了,就万事大吉了,在一开始的时候,尽量解决代码中出现的 Warning,可以省去将来不必要的麻烦。

可以按快捷键 Alt+F11 也可以点击如下菜单,执行代码静态分析。

Warning 同样出现在 Error List 窗口,点击 「 Warning」选项卡查看。

跳转至出现 Warning 的代码行。绿色波浪线代表了 Warning,可将鼠标悬停在上方获取详细信息。

Run 阶段

5、基本操作

Build Solution 成功以后,按下 F5 执行,这将在 Debug 环境中启动程序。

此时默认出现两个窗口。

按下 Break 或 Stop 按钮来暂停或停止程序。

按下 Continue 按钮继续执行程序。

6、设置断点

设置断点是 Debug 过程最最最常用的功能。

断点指示 VS 在执行到哪一行代码的时候挂起。程序挂起的时候,可以查看任意你想看的东西,如变量值,内存,代码执行分支等。

设置断点很简单,只要在编辑区的边缘单击一下或者在相应的代码行按下 F9,旁边就会出现一个红色圆点,这个红色圆点就代表了断点。

设置好断点,按下 F5,程序即会在断点处停下来。

动图在这里。

接下来,常用的几个操作是:

F10 step over code 单步执行
F11 step into code 跳转至内层函数
Shift+F11 step out code 从当前函数中跳出

可以设置多个断点,在 F5,F10 等快捷键之间切换,转到不同的断点。

7、查看变量

程序执行到断点处,停下来的时候,可以查看代码中的变量,堆栈调用情况等,看下它们是不是在预期的范围内。

将鼠标悬停在变量上面,可以看到它此刻的值。

再放个动图,更清楚一点。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Visual Studio Debugger七个鲜为人知的小功能

    Visual Studio debugger是一个很棒的调试工具,可以帮助程序猿们快速地发现和解决问题.这里给大家简单介绍一下VS调试工具中的七个鲜为人知的小功能. 1. 一键跳转到指定语句 调试过程中经常需要拖拽黄箭头,使特定语句执行或者不执行.常规方法就是使用鼠标直接拖拽. 在Visual Studio 2017 15.3预览版中,有一个更简单地跳转到目标行的方法:在目标行盘旋鼠标指针,出现绿色竖线右箭头图标后,按住CTRL后鼠标左键点击,就把调试黄箭头移过去了,再点击调试下一步或者F5就直

  • Visual Studio Debug实战教程之断点操作

    前言 调试技巧是衡量程序员水平的一个重要指标.掌握好的调试技巧与工具的使用方法,也是非常重要的. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Studio 编程语言及其关联的库. 使用调试程序时,可以中断程序的执行以检查代码.检查和编辑变量.查看寄存器.查看从源代码创建的指令,以及查看应用程序占用的内存空间. 断点,可以说是 Debug 过程中最常用的功能. 但是大家最熟悉最经常使用的可能就是普通的断点.其实,关于断点,Visu

  • Visual Studio Debug实战教程之基础入门

    前言 在过去,我已经写过好几篇关于调试 / debug / 解 Bug 的文章,但都是从宏观的角度上去讲的,并没有针对哪种工具做具体深入的剖析. 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间.通常,debug是指发现缺陷并改正的过程.修正缺陷紧随debug之后,或者说二者是相关的.如果代码中存在缺陷,我们首先要识别造成缺陷的根本原因(root cause),这个过程就称作调试(d

  • SpringBoot实战教程之新手入门篇

    目录 1.SpringBoot简介 2.SpringBoot安装 2.1.基于Maven的安装 2.2.基于Gradle的安装 3.创建HelloWorld应用 4.代码结构 5.Configuration类 5.1.导入其它配置 6.自动化配置 6.1.逐渐替换自动化配置 6.2.禁止特定的自动化配置 7.使用@SpringBootApplication注解 总结 1. SpringBoot 简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spri

  • Visual Studio 2017安装使用教程

    "工欲善其事,必先利其器",学习一门语言,选择一款高效的IDE(集成开发环境)尤为重要,支持C++的IDE有很多,Visual Studio便是其中之一. Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.话不多说,进入正题. 一.下载 Visual Studio 打开Visual Studio 的官网下载链接

  • Visual Studio 2017 community安装配置方法图文教程

    博主最近想要改变vs2017的安装组件等部分,但是却遇到了无法进入安装界面的问题,可以说是因为C盘搬移而构建的软链接失效引起的,有兴趣的朋友不妨看看,博主已经解决了这个问题:vs2017 因软链接失效而无法进入安装界面的解决方法 本文网址:vs2017安装和使用教程(详细) 一.官网下载 1.下载网址:微软官网 2.官网首页 3.选择菜单栏最右边的更多,在"Developer & IT"下拉一栏选择"Visual Studio"进入 4.进入之后是这个界面,

  • Visual Studio 2017 IDE安装使用图文教程

    本文为大家分享了Visual Studio 2017 IDE的安装与最基本使用,供大家参考,具体内容如下 首先,进入VisualStudio的官网下载最新版本的VSIDE(目前是VS2017):VS2017下载地址 打开网页,点击红色画笔圈起的按钮 然后会下载下来一个文件,点击它,会弹出一个这样的窗口 点击"继续",稍等一小会之后正式进入安装界面 然后点击红圈内的"安装" VisualStudio Community 2017是微软提供的免费版的IDE 之后进入如下

  • Visual Studio 2017 (VS 2017)离线安装包制作方法

    史上功能最强大的Visual Studio 2017版本发布,但是由于版本更新速度加快和与第三方工具包集成的原因,微软研发团队没有为这个版本提供离线下载的安装文件.如果用户处在一个与外网隔离的网络环境中,则必须首先自行创建理想安装包.下面在参考微软官方文档(Create an offline installation of Visual Studio 2017 -)的基础上, 介绍如何创建离线包. 下载安装工具 用户可以通过不同的途径从(https://www.visualstudio.com)

  • 精彩回顾!Visual Studio 2017正式版发布全纪录

    又是一年发布季,微软借着Visual Studio品牌20周年之际,于美国太平洋时间2017年3月7日9点召开发布会议,宣布正式发布新一代开发利器Visual Studio 2017.同时发布的还有 .NET Core Tooling 1.0 .NET Core Microservice instance Visual Studio for MAC preview 4 Visual Studio Mobile Center Preview Team Foundation Server 2017

  • Visual Studio 2017下ASP.NET CORE的TagHelper智能提示解决办法

    之前在VS2017RC中就发现该问题,安装了依赖,但是前段一直点不出来asp-for,后来查了发行说明, 才知道在VS2017rc中暂时无法解决,所以一直等到VS2017正式版的发布,急冲冲的装好, 建了一个demo项目,还是无法出现TagHelper的智能提示. 不死心,我又去扒拉了一下VS2017的发行说明,找了一下已知问题: 发现有这一行: 然后我根据提示,进入到Github页面,果然找到了TagHelper为何不能使用的描述: 同样,页面给出来了解决办法,安装一个Razor服务的扩展:

  • Visual Studio 2017创建.net standard类库编译出错原因及解决方法

    正式版上个月已经Release了,从那时到现在经常会收到更新提示,估计问题还不少吧!其中最吸引我的当然是.net standard与.net core. 刚好最近接触.net standard项目,新建一个类库直接编译却出错!!立马心情不太好了,对它的兴趣大打折扣! 如果是新手估计立马就会吐槽了!作为老手还是静下心来看看原因. 看最后一项: 找不到资产文件"c:\users\newblifes\documents\visual studio 2017\Projects\TestDemo\Test

随机推荐