Visual Studio 使用調試技巧

這篇文章來源於http://damieng.com/blog/2014/02/05/8-visual-studio-debugging-tips-debug-like-a-boss,本文在原文翻譯的基礎上增長一些我我的的經驗,但願對讀者有幫助。html

 

1. 斷點中內嵌Lambda表達式

VS中插入斷點有多種類型,例如Hit CountConditionLocation或者僅僅是一個斷點,這裏先給你們演示一個插入Lambda表達式的例子。函數

 

在 var a = items 這條語句上插入一個條件斷點,而後輸入一個針對aLambda表達式:來判斷a的集合中是否含有i==30的項,若是存在則中斷程序。在實際調試程序的時候咱們須要在特定值時中斷程序或者判斷列表(或IEnumerable中是否含有特定項。這裏,Condition中不只能夠輸入Lambda表達式,更能夠輸入任何類型或字符串,不過這都限制在a這個對象的範圍內。visual-studio

題外話說一下,在VS中還能夠加入Tracepoint,此斷點的做用是當執行到設置斷點的位置時,輸出用戶預設的輸出字符串,VS還提供了一些環境變量$PID,$PNAME,最後會在VSOutPut輸出窗口展現出來(上圖中的菱形斷點)。有興趣的同窗本身操做下。ui

2. 啓用輸出窗口

 

在VSOutput窗口是一個很是方便的窗口,便於程序調試,您能夠用Debug.WriteLineXXXX)直接輸出信息至Output窗口。您還能夠定製輸出類型,有些如Process Exit Message在一些時候就不需要輸出,取消掉便可。url

3. 將調試器附着在客戶端和服務端

原文做者標示了這個功能是在VS2012下,其實這個功能在08時候就已經有了。(05是否有這個功能還不知道,也許咱們沒必要去糾結05)spa

這裏不想多說了,你們操做一下就知道了:在項目工程上更改項目爲多項目輸出便可,同時設置輸出項目。翻譯

 

4. 建立一個項目模板

當你負責編寫API或者SKD的時候建立一個簡單的應用程序,使用你的東西在一個小而獨立的環境下。你能夠經過FILE---Export Template功能導出當前項目的模板。debug

網上有不少介紹,類模板或項目模板的文章,這裏不詳細解釋。調試

 

我我的的類模板htm

 

5. 管理斷點

 

當前有不少斷點,其中一些想暫時取消,而另外一些繼續做用,這回就要用到斷點管理界面了(Ctrl+Alt+B),其中能夠勾選一些可用的,和取消勾選一些暫時不想用的。

 

6. 中斷或者輸出調用者信息

 

 

在方法中加入可選參數」,這樣在不破壞原有任何方法的基礎上針對特定方法進行擴展,方便調試。

[CallerMemberName]不一樣方法中顯示的值是不一樣的,在調試中所能定義的內容並很少。

詳情請參考:http://msdn.microsoft.com/zh-cn/library/hh551816.aspx

 

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

在以前的VS調試器運行方法時,除監視方法(Watch對象或方法)時,默認是不保存變量結果的,這樣咱們在調試的時候很不方便,固然你能夠用即時窗口,從新運行一次方法。如今有了一種更簡便的方式來監視函數輸出值:Autos WindowCtrl+DA,前提條件是,當前在調試運行環境下。

 

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

相關文章
相關標籤/搜索