Visual Studio 使用调试技巧

这篇文章来源于http://damieng.com/blog/2014/02/05/8-visual-studio-debugging-tips-debug-like-a-boss,本文在原文翻译的基础上增加一些我个人的经验,希望对读者有帮助。

1. 断点中内嵌Lambda表达式

VS中插入断点有多种类型,例如Hit Count,Condition,Location或者仅仅是一个断点,这里先给大家演示一个插入Lambda表达式的例子。

在 var a = items 这条语句上插入一个条件断点,然后输入一个针对a的Lambda表达式:来判断a的集合中是否含有i==30的项,如果存在则中断程序。在实际调试程序的时候我们需要在特定值时中断程序或者判断列表(或IEnumerable)中是否含有特定项。这里,Condition中不仅可以输入Lambda表达式,更可以输入任何类型或字符串,不过这都限制在a这个对象的范围内。

题外话说一下,在VS中还可以加入Tracepoint,此断点的作用是当执行到设置断点的位置时,输出用户预设的输出字符串,VS还提供了一些环境变量PID,PNAME等,最后会在VS的OutPut输出窗口展示出来(上图中的菱形断点)。有兴趣的同学自己操作下。

2. 启用输出窗口

在VS中Output窗口是一个非常方便的窗口,便于程序调试,您可以用Debug.WriteLine(XXXX)直接输出信息至Output窗口。您还可以定制输出类型,有些如Process Exit Message在一些时候就不需要输出,取消掉即可。

3. 将调试器附着在客户端和服务端

原文作者标示了这个功能是在VS2012下,其实这个功能在08的时候就已经有了。(05是否有这个功能还不知道,也许我们不必去纠结05)

这里不想多说了,大家操作一下就知道了:在项目工程上更改项目为多项目输出即可,同时设置输出项目。

4. 创建一个项目模板

当你负责编写API或者SKD的时候创建一个简单的应用程序,使用你的东西在一个小而独立的环境下。你可以通过FILE---》Export Template功能导出当前项目的模板。

网上有很多介绍,类模板或项目模板的文章,这里不详细解释。

我个人的类模板

5. 管理断点

当前有很多断点,其中一些想暂时取消,而另一些继续作用,这回就要用到断点管理界面了(Ctrl+Alt+B),其中可以勾选一些可用的,和取消勾选一些暂时不想用的。

6. 中断或者输出调用者信息

在方法中加入“可选参数”,这样在不破坏原有任何方法的基础上针对特定方法进行扩展,方便调试。

[CallerMemberName]在不同方法中显示的值是不同的,在调试中所能定义的内容并不多。

详情请参考:http://msdn.microsoft.com/zh-cn/library/hh551816.aspx

7. 设置可返回值的方法(VS2013)

在之前的VS调试器运行方法时,除监视方法(Watch对象或方法)时,默认是不保存变量结果的,这样我们在调试的时候很不方便,当然你可以用即时窗口,重新运行一次方法。现在有了一种更简便的方式来监视函数输出值:Autos Window(Ctrl+D,A),前提条件是,当前在调试运行环境下。

Step 1:在方法上设置断点。

Step 2:F10让该语句执行完毕

Step 3:查看Autos Window中的返回值。

这里要强调不是res的值能保存,而是内嵌的方法的返回值。

希望以上内容对您有帮助 :)

源码下载

参考

http://damieng.com/blog/2014/02/05/8-visual-studio-debugging-tips-debug-like-a-boss

http://www.hanselman.com/blog/DownloadVisualStudio2013WhileYourFeedbackStillMatters.aspx

http://msdn.microsoft.com/zh-cn/library/hh551816.aspx

http://msdn.microsoft.com/zh-cn/library/system.diagnostics.debuggerdisplayattribute.aspx

http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/27/seeing-function-return-values-in-the-debugger-in-visual-studio-2013.aspx

http://wenku.baidu.com/link?url=VSKzBppzQE8vKcrfvBen3J2IM0_qe87FCch_kOV8QirOLa6csHhov02Qw6271-ZN1KE5_iKu2waxxPqz1EgybLXz-S5so02R8WWKBuFV0sG

http://stackoverflow.com/questions/1100506/how-to-make-debuggerdisplay-respect-inherited-classes-or-at-least-work-with-co

工程狮必备属性:追新,执着,高内聚低耦合。 
版权声明:凡是没有标注[转载]的,在引用文章时,均要加上本博客地址,谢谢。 
http://www.cnblogs.com/cuiyansong/。

Visual Studio 使用调试技巧的更多相关文章

  1. Visual Studio的调试技巧

    Visual Studio的调试技巧 [原文地址] Debugging Tips with Visual Studio 2010 [原文发表日期] 2010/8/19 10:48 AM 这是我写的关于 ...

  2. Visual Studio高级调试技巧

    1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...

  3. 【.Net】Visual Studio的调试技巧

    这是我写的关于VS2010和.Net4发布的博客系列的第26篇. 今天的博文包含了一些有用的能用于VS的调试技巧. 我的朋友Scott Cate(他写了很多很好的关于VS使用技巧和窍门的博客)最近向我 ...

  4. 提高你开发效率的十五个Visual Studio 2010使用技巧

    提高你开发效率的十五个Visual Studio 2010使用技巧 相信做开发的没有不重视效率的.开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS.能够对一个IDE产生依赖,说明这个ID ...

  5. [No0000AE]在 Visual Studio 中调试 XAML 设计时异常

    在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...

  6. 在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题)

    在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题) 今天开始起在Chrome中调试,发现问题主要出在菜单栏(layout文件)中,google了 ...

  7. 总是弹出visual studio 实时调试器 三种解决办法

    最近服务器老是弹出visual studio 实时调试器很是郁闷呀.关还关不掉.怎么解决呢 ,现像如下图所示: 下面我们一起来分析一下这种情况的原因: 弹出应用程序: Visual Studio 实时 ...

  8. Visual Studio 在调试时启用编辑功能

    Visual Studio边调试边修改 如果你在调试一个web应用程序的时候,想进行编辑,可以有如下两种方法:    方法一:在web项目的属性页里的web标签页,选中"启用编辑并继续&qu ...

  9. Visual Studio远程调试

    Visual Studio支持调试远程机器上的程序,经过简单设置后,就像调试本地代码一样方便. 第一步:将vs工具里的Remote Debugger文件夹拷贝到目标机器.大致的目录应该是:D:\Pro ...

随机推荐

  1. Sizzle.selectors.relative [ 源代码分析 ]

    1 jQuery 对象Sizzle.selectors.relative中存放了块间关系符和相应的块间关系过滤函数,称为"块间关系过滤函数集" 块间关系符共同拥有4种,其含义和过滤 ...

  2. Oracle压缩总结2— 估计表压缩效应

    使用压缩前,我们可以估算压缩能有多大效果. 11gr2我已经能够使用dbms_comp_advisor,具体代码见附件.只需要运行两个文件dbmscomp.sql和prvtcomp.plb.然后使用D ...

  3. poj1083 思考题

    http://poj.org/problem?id=1083 Description The famous ACM (Advanced Computer Maker) Company has rent ...

  4. 使用sqlnet.ora限制IP访问

    他在最后一个超级遭遇了许多方法值,然后找到一个方法,在DB上限IP访问. http://blog.csdn.net/jacson_bai/article/details/18097805 ENV:   ...

  5. XSS学习笔记(五)-XSS防御

    如果只生产XSS的地方都与输入或输出相关联的.所以错过了主要矛盾.而且,我们将有一个解决问题的办法:您可以输入端砚格过滤,是可能的过滤输出时间,输出到用户的GET或POST中是否有敏感字符: 输入过滤 ...

  6. oracle_体系结构图_逻辑结构图

    1.oracle 的体系结构图  重要!!! 2.oracle的逻辑结构图

  7. Mac+PhpStorm+XAMPP+Xdebug

    Mac+PhpStorm+XAMPP+Xdebug 环境的配置   在上一篇 PHP 系列的文章<PHP 集成开发环境比较>中,我根据自己的亲身体验,非常简略的介绍和对比了几款常用的集成开 ...

  8. HDU 1080 Human Gene Functions--DP--(变形最长公共子)

    意甲冠军:该基因序列的两端相匹配,四种不同的核苷酸TCGA有不同的分值匹配.例如T-G比分是-2,它也可以被加入到空格,空洞格并且还具有一个相应的核苷酸匹配分值,求最大比分 分析: 在空气中的困难格的 ...

  9. NEFUOJ 500 二分法+最大流量

    http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=500 description 在这个信息化的时代.网购成为了最流行的购物方 ...

  10. Apache & WebDav 配置(二)

    (二)WebDav配置 & put脚本编辑! WebDav 配置 ---------------- # 1. 修改了两个配置文件 # 2. 创建web访问用户的用户名和口令 # 3. 创建了两 ...