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

前言

调试技巧是衡量程序员水平的一个重要指标.掌握好的调试技巧与工具的使用方法,也是非常重要的.

Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题。 该调试器可用于所有 Visual Studio 编程语言及其关联的库。 使用调试程序时,可以中断程序的执行以检查代码、检查和编辑变量、查看寄存器、查看从源代码创建的指令,以及查看应用程序占用的内存空间。

断点,可以说是 Debug 过程中最常用的功能。

但是大家最熟悉最经常使用的可能就是普通的断点。其实,关于断点,Visual Studio 有很多的高级功能,有些简直就是调试利器啊。

本次教程将介绍 Visual Studio 关于断点的更多高级玩法。

1. 普通断点

为了保证内容完整性,还是要说下普通断点。

设置普通断点的方法很简单,就是在代码行的左边栏灰色区域点击或者把光标放在某代码行,按下 F9。

如上图所示,此时左边栏出现的红色圆点就代表了一个断点。

按下 F5, Debugger 就会在此处停下来。

2. 条件断点

不像是普通的断点,程序每次执行都会停下来。条件断点的意义是,只有在条件被满足时,Debugger 才会在此处停下来。

设置条件断点一般的方法是在红点处右键选择条件或者把光标放在红点处,等待齿轮图标出现并点击。

条件断点设置窗口如下。

总共有三种类型的条件断点:

  • 条件表达式 (Conditional Expression)
  • 命中次数 (Hit Count)
  • 筛选器 (Filter)

条件表达式

条件表达式也有两种类型:

为 ture (Is ture)

如下图示,此处设置的条件为: 当 testInt == 4 is ture 时命中断点。

更改时 (When changed)

如下图示,此处设置的条件为: 当 testInt 被更改的时候命中断点。

命中次数

命中次数在 Debug 循环语句时非常有用。

比如你怀疑程序出错点发生在 N 次循环之后或者某些次循环,那么可以设置循环语句内的命中次数,让它在某些次或者某次循环停下来,而不是每次都停下来。

如下图,设置的条件为:让它每隔一次循环断下来。

筛选器

筛选器是用来限制断点命中时所在的设备、进程和线程。

比如,在一个多线程的程序中,你不必手动 GetThreadId,可以通过筛选器,设置让它只在某线程中执行到此处时停下来。

筛选器表达式用法为:

MachineName = "name"

ProcessId = value

ProcessName = "name"

ThreadId = value

ThreadName = "name"

多个表达式之间可以使用运算符 & (AND), || (OR), ! (NOT) 连接 。

3. 追踪断点

在断点设置窗口,除了条件,我们还可以看到操作 (Action)选项框。

操作 (Action) 的意义是设置追踪点 (Tracepoint)。

Tracepoint 相当于是一种临时的有 Trace 功能的断点,它会把消息打印到 Output 窗口。

勾选后面的继续执行 (Continue Execution),代表 Tracepoint 命中时,Debugger 不会停下来,否则将会在此处停下来。两种情况下,消息都会打印出来。

可以使用下面的关键字作为消息。

4. 函数断点

在 Debug 菜单下,点击新建断点,可以新建两种类型的断点:函数断点 (Function Breakpoint)和数据断点(Data Breakpoint)。

函数断点是通过函数名设置断点,当程序执行到该函数的时候断点断下来。

5. 数据断点

紧接上面,这里讲下数据断点。

数据断点的意义是,让程序在当某处地址指定字节发生改变的时候中断下来。它只有在 Break Mode 下才可以设置。

地址栏可以用具体的内存地址,也可以用表达式来代表内存地址。例如,可以使用 &avar,让程序在当变量 avar 内容发生改变的时候中断下来。

6. 在 Call Stack Window 设置断点

也许你不知道,是可以在 Call Stack 窗口设置断点的。

当你在查看函数的调用关系的时候,想在这一些列的函数中快速设置断点,那么其实很简单:在 Call Stack 窗口,点击想要设置断点的函数所在的行,按下 F9 即可。

7. 在 Disassembly Window 设置断点

还可以在 Disassembly 窗口设置断点。但前提必须是 Break Mode 下。

反汇编窗口设置断点的方式跟在源代码中设置断点的方式相同,只要在代码左边栏边缘处点击一下,红色圆点就出现了。

8. 断点管理

我们前面所设置的所有断点都会出现在断点窗口 (Breakpoints Windows)。

在这里,可以对所有的断点进行管理,比如批量启用、禁用、删除等,还可以在程序运行过程中,查看断点的命中状态。

当你的工程非常大,Debug 时设置了很多的断点的时候,它会非常有用。

总结

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

(0)

相关推荐

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

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

  • 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 2017 community安装配置方法图文教程

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

  • Visual Studio 2017安装使用教程

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

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

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

  • Visual Studio 2017安装失败的解决方法

    vs2017安装操作失败,今天VS2017更新之后...MVC5右击没有Controller出现 然后我就修复,重装...都不行并且出现 安装操作失败..提示.Net.Core.SDK安装失败 然后我又下载了个SDK...装不上去... 错误提示: 由于发生一个或多个包故障,产品未能安装列出的工作负荷和组件. 工作负荷不完整 ASP.NET 和 Web 开发 (Microsoft.VisualStudio.Workload.NetWeb,version=15.0.26323.1) 组件不完整 .

  • Visual Studio 2017 15.5 正式发布!性能再提升

    Visual Studio 2017 15.5 版本已正式发布,同时发布的还有 Visual Studio for Mac 7.3.此次更新包含主要性能改进,新特性以及 bug 修复.发行说明中文版目前尚未更新,可先查看英文版.部分亮点整理如下: 性能 大型 C# 和 Visual Basic 项目的解决方案加载时间几乎减半.调试和发布之间的切换时间明显缩短.在 .NET Core 项目中添加,删除和重命名文件和文件夹会更快.项目模板现在也应该比以前更快地展开,在最特殊的情况下,甚至可以看到最多

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

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

  • 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

随机推荐