這篇文章來源於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