今天尽是干货。我们来讨论如何为中断设置条件吧。

就像习大大讲的精确扶贫一样,如果我们能很精确地,仅在需要的时候把断点命中,以查看这个时候的程序数据,我们就能显著地提高 Debug 的效率。为断点设置条件能帮助我们更准确快速地发现程序的痛点。
基础方法与步骤:
  1. 移动光标进入要设断点的代码行
  2. 点击F9以设置断点
  3. 右键点击那个熟悉的红圈圈,然后击中菜单 Conditions...
  4. 在弹出的窗口中,我们在第一个下拉框中选择中选择不同的项可以为这个断点设置不同的中断条件
  • 条件表达式:访问上下文中的变量,可以设置命中的条件表达式。仅当表达式满足或者不满足的时候断点才真正生效。如下图中的例子,如果不设置条件,断点将会命中三次。设置了 keyValuePair.Key == "2" 之后,只会命中一次, 在 Key 为 “2” 的时候。
  • 击中次数:如果一行代码会被执行10次,而我们仅仅对最后两次感兴趣,我们可以设置 Hit Count > 8.
  • 过滤条件:我们可以通过机器,线程或者进程的一些属性来过滤断点。
今天尽是干货。我们来讨论如何为中断设置条件吧。

就像习大大讲的精确扶贫一样,如果我们能很精确地,仅在需要的时候把断点命中,以查看这个时候的程序数据,我们就能显著地提高 Debug 的效率。为断点设置条件能帮助我们更准确快速地发现程序的痛点。
基础方法与步骤:
  1. 移动光标进入要设断点的代码行
  2. 点击F9以设置断点
  3. 右键点击那个熟悉的红圈圈,然后击中菜单 Conditions...
  4. 在弹出的窗口中,我们在第一个下拉框中选择中选择不同的项可以为这个断点设置不同的中断条件
  • 条件表达式:访问上下文中的变量,可以设置命中的条件表达式。仅当表达式满足或者不满足的时候断点才真正生效。如下图中的例子,如果不设置条件,断点将会命中三次。设置了 keyValuePair.Key == "2" 之后,只会命中一次, 在 Key 为 “2” 的时候。
  • 击中次数:如果一行代码会被执行10次,而我们仅仅对最后两次感兴趣,我们可以设置 Hit Count > 8.
  • 过滤条件:我们可以通过机器,线程或者进程的一些属性来过滤断点。
迈进一小步:
如果一个方法会被很多地方调用,有些调用者还是别人的代码(我们没有调试符号)。我们能不能根据调用者(caller)的名字来过滤呢?比方说我们有如下一个方法:
当然,回答是肯定的。我们需要把这个方法做一点小小的修改, 添加一个带 CallerMemberName 特性并拥有默认值的参数 caller。之后,我们就可以根据 caller 来设置条件了。如下图所示,我们只有在调用者为 Calculator 的时候断点才会命中。
 
 
没有调试代码,也没有调试符号也可以调试吗?是的!不过,这是下次我们讨论的话题。
迈进一小步:
如果一个方法会被很多地方调用,有些调用者还是别人的代码(我们没有调试符号)。我们能不能根据调用者(caller)的名字来过滤呢?比方说我们有如下一个方法:
当然,回答是肯定的。我们需要把这个方法做一点小小的修改, 添加一个带 CallerMemberName 特性并拥有默认值的参数 caller。之后,我们就可以根据 caller 来设置条件了。如下图所示,我们只有在调用者为 Calculator 的时候断点才会命中。
 
 
没有调试代码,也没有调试符号也可以调试吗?是的!不过,这是下次我们讨论的话题。

Visual Studio 调试技巧 (二)-- 为中断设置条件的更多相关文章

  1. Visual Studio 调试技巧 -- 为 Lambda 表达式设置中断

    如果我说 .NET 世界上最厉害的开发平台(语言),资深的同仁肯定不会往下看了,因为这将是一个无休止的争论,到头来搞不好还是人身攻击.然而,如果我说 Visual Studio 是世界上最友好最强大的 ...

  2. Visual Studio 调试技巧[Command Window & Immediate Window ](Tips)

    Visual Studio 调试技巧[Command Window & Immediate Window ](Tips) 1. immediate window 定义的一些 alias (// ...

  3. 新手必备!11个强大的 Visual Studio 调试技巧

    简介 调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总 ...

  4. Visual Studio 调试技巧

    .net程序开发工具我都用vs(visual studio),开发过程中的跟踪调试最常用的就是断点跟踪调试了,但是现在才发现,用了这么多年vs断点跟踪调试是白用了啊.它居然还可以有这么多用法. 设置断 ...

  5. Visual Studio调试技巧 -- Attach to Process

    本文系作者原创,但可随意转载.另:图中使用的IDE为Visual Studio 2013 RC 英文版. 一般写完代码时,我们通常会启动调试运行一下看看是否正确,启动运行的方式无非是F5-- Star ...

  6. Visual Studio 调试技巧之即时窗口的妙用

    在 Visual Studio 中有一个窗口叫 Immediate 窗口,中文版本应该叫即时窗口.默认会在你启动调试时在 VS 编辑器中弹出来.你也可以通过 Debug | Windows | Imm ...

  7. BI之SSIS入门最新版Visual Studio调试技巧

    简介 最近公司业务需要用到BI SSIS,SSIS是什么?"SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案( ...

  8. Visual Studio 调试技巧:10 篇热文汇总

    本文精选了 DotNet  2017年11月份的10篇热门文章.其中有技术分享.技术资源. 注:以下文章,点击标题即可阅读 <Visual Studio的调试技巧 > 调试技巧是衡量程序员 ...

  9. Visual Studio 调试技巧---指针,元素个数

    刚才,我在Visual Studio 中发现了一个以更好的方式调试指针的技巧.您可以在监视窗口中选择“n”,其中“n”是要显示的元素数.我认为下图是不言而喻的.

随机推荐

  1. secureCRT使用小贴士

    (一)使用WIN键盘 在securecrt界面:工具→键映射编辑器,在弹出的键盘中点击“home”,会弹出一个窗口,在“发送字符串”中输入:\033[1~ 另存为securecrt安装根目录下的Key ...

  2. JS实现继承多态

    //类对象构造模版,无new访问,类似静态访问 var Class = { create: function () { return function () { //initialize初始化 //a ...

  3. 【C语言】中的stdbool.h头文件

    C语言中的stdbool.h头文件 一.相关基础知识 二.具体内容 Win7下安装的VS2015中的stdbool.h的位置为: F:\Program Files (x86)\Microsoft Vi ...

  4. 对rsync进行封装的shell脚本

    抓取 #!/bin/bash . push.sh # 错误处理:尝试查找备份文件 function onError() { local errFile="err" local se ...

  5. spm使用之二兼谈spm的贱格

    上一篇还没写完, 因为我觉得太长了, 影响阅读, 就截断继续写. 因为还没有写到修改 创建模块的模板啊. 之所以想到要修改spm用来创建模块的模板, 是因为, 有一天我突然上不了网了, 发现spm完全 ...

  6. [BZOJ 1901] Dynamic Rankings 【树状数组套线段树 || 线段树套线段树】

    题目链接:BZOJ - 1901 题目分析 树状数组套线段树或线段树套线段树都可以解决这道题. 第一层是区间,第二层是权值. 空间复杂度和时间复杂度均为 O(n log^2 n). 线段树比树状数组麻 ...

  7. Windows常见蓝屏故障分析

    转自Windows常见蓝屏故障分析 症状描述: 当您在运行Microsoft Windows 2000/XP/Server 2003.Microsoft Windows Vista/Server 20 ...

  8. TCP协议的3次握手与4次挥手过程详解

    1.前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一 ...

  9. WITH AS and materialize hints

    WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...

  10. dpkg error

    在ubuntu乱搞,突然出现错误 dpkg: error: cannot read info directory: No such file or directory E: Sub-process / ...