Visual Studio 使用调试技巧 1. 断点中内嵌Lambda表达式 2. 启用输出窗口 3. 将调试器附着在客户端和服务端 4. 创建一个项目模板 5. 管理断点 6. 中断或者输出调用者信息 7. 设置可返回值的方法(VS2013) 参考

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

 

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

 Visual Studio 使用调试技巧
1. 断点中内嵌Lambda表达式
2. 启用输出窗口
3. 将调试器附着在客户端和服务端
4. 创建一个项目模板
5. 管理断点
6. 中断或者输出调用者信息
7. 设置可返回值的方法(VS2013)
参考

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

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

2. 启用输出窗口

 Visual Studio 使用调试技巧
1. 断点中内嵌Lambda表达式
2. 启用输出窗口
3. 将调试器附着在客户端和服务端
4. 创建一个项目模板
5. 管理断点
6. 中断或者输出调用者信息
7. 设置可返回值的方法(VS2013)
参考

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

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

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

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

 Visual Studio 使用调试技巧
1. 断点中内嵌Lambda表达式
2. 启用输出窗口
3. 将调试器附着在客户端和服务端
4. 创建一个项目模板
5. 管理断点
6. 中断或者输出调用者信息
7. 设置可返回值的方法(VS2013)
参考

4. 创建一个项目模板

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

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

 

我个人的类模板

 

5. 管理断点

 Visual Studio 使用调试技巧
1. 断点中内嵌Lambda表达式
2. 启用输出窗口
3. 将调试器附着在客户端和服务端
4. 创建一个项目模板
5. 管理断点
6. 中断或者输出调用者信息
7. 设置可返回值的方法(VS2013)
参考

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

 

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

 Visual Studio 使用调试技巧
1. 断点中内嵌Lambda表达式
2. 启用输出窗口
3. 将调试器附着在客户端和服务端
4. 创建一个项目模板
5. 管理断点
6. 中断或者输出调用者信息
7. 设置可返回值的方法(VS2013)
参考

 Visual Studio 使用调试技巧
1. 断点中内嵌Lambda表达式
2. 启用输出窗口
3. 将调试器附着在客户端和服务端
4. 创建一个项目模板
5. 管理断点
6. 中断或者输出调用者信息
7. 设置可返回值的方法(VS2013)
参考

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

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

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

 

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

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

 Visual Studio 使用调试技巧
1. 断点中内嵌Lambda表达式
2. 启用输出窗口
3. 将调试器附着在客户端和服务端
4. 创建一个项目模板
5. 管理断点
6. 中断或者输出调用者信息
7. 设置可返回值的方法(VS2013)
参考

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