华域联盟 .Net Visual Studio Debug实战教程之断点操作

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

Visual Studio Debug实战教程之断点操作
 更新时间:2018年09月18日 11:18:01   作者:红猴子  

众所周知断点对于Visual Studio调试过程是十分重要的,断点的设置也是为了更好的进行调试。下面这篇文章主要给大家介绍了关于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 时设置了很多的断点的时候,它会非常有用。

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

您可能感兴趣的文章:Visual Studio Debugger七个鲜为人知的小功能Visual Studio Debug实战教程之基础入门

visualstudio
debug
断点

相关文章
VS2013安装时如何避开IE10的限制这篇文章主要介绍了VS2013安装时如何避开IE10的限制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2017-06-06
Json.net 常用使用小结(推荐)下面小编就为大家带来一篇Json.net 常用使用小结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2016-06-06
ASP.NET实现301重定向方法我们给大家整理了关于ASP.NET中实现301重定向的方法以及小技巧总结,有兴趣的朋友可以操作试试。 2018-04-04
Asp.Net 网站优化系列之数据库优化分字诀上 分库当我们的数据量很小的时候,我们会把用户表,博客表,论坛表,闪存表等等都砸在一个库里,我们的业务增长的很好,在不久之后我们尽力的优化了查询,但是效果依然不佳,这时候用分字诀的时机到了。 2010-06-06
浅谈.NET反射机制的性能优化 附实例下载在进入解释型模版引擎的探讨之前,我决定先分享一下这篇博客。因为在解释型引擎里将会引入反射的概念来实现更多、更复杂的功能 2012-04-04
asp.net 中文字符串提交乱码的解决方法现在为一家工作室做网站,在登陆模块中涉及到前端页面通过AJAX传递中文的用户名和字母的密码到后台验证,然后再把验证后的信息返回到前端的过程。 2009-11-11
.NET程序调试技巧(一):快速定位异常的一些方法这篇文章主要介绍了.NET程序调试技巧(一):快速定位异常的一些方法,本文讲解了定位本机异常、在客户环境定位.net程序异常两方面的内容,需要的朋友可以参考下 2015-06-06
微信公众平台开发之处理图片.Net代码解析这篇文章主要为大家详细解析了微信公众平台开发之处理图片.Net代码,感兴趣的小伙伴们可以参考一下 2016-06-06
解析如何利用一个ASP.NET Core应用来发布静态文件本文主要通过一些简单的实例来体验一下如何在一个ASP.NET Core应用中发布静态文件。针对不同格式的静态文件请求的处理,ASP.NET Core为我们提供了三个中间件,它们将是本系列文章论述的重点。有需要的朋友可以看下 2016-12-12
ASP.NET 站点地图(sitemap)简明教程毕业设计折腾了近一个月的时间,也将近完工阶段。下个礼拜六是论文答辩时间,所以今天晚上就抽空想去弄一下站点地图。不怕大侠们笑话,我在以前还真没弄过这些。以前开发过几个项目都是系统类,也就没怎么涉及了 2012-04-04

最新评论

本文由 华域联盟 原创撰写:华域联盟 » Visual Studio Debug实战教程之断点操作

转载请保留出处和原文链接:https://www.cnhackhy.com/5466.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者:

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部