




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、掌握VS2010調試 - 入門指南debuggingvisual studio 2010VS2010調試目錄(?)-1. 導言2. 如何啟動調試3. 斷點Breakpoints1. 1 使用斷點進行調試1. 11 逐過程Step Over2. 12 逐語句Step Into3. 13 跳出Step Out4. 14 繼續Continue5. 15 設置下一語句Set Next Statement6. 16 顯示下一語句Show Next Statement Ctrl2. 2 斷點標簽Labeling in Break Point3. 3 條件斷點Conditional Breakpoint4.
2、 4 導入導出斷點Import Export Breakpoint5. 5 斷點命中計數Breakpoint Hit Count6. 6 Breakpoint When Hit7. 7 斷點篩選器Breakpoint Filter4. 數據便簽Data Tip1. 1 Pin Inspect Value During Debugging2. 2 Drag-Drop Pin Data Tip3. 3 Adding Comments4. 4 Last Session Debugging Value5. 5 Import Export Data Tips6. 6 Change Value Using
3、 Data Tips7. 7 Clear Data Tips5. 監視窗口Watch Windows1. 1 局部變量Locals2. 2 自動窗口Autos3. 3 監視Watch1. 有4個可同時使用的監視窗口 圖多個監視窗口2. 31 Creating Object ID4. 46. 即時窗口Immediate Window7. 調用堆棧Call Stack8. 調試多線程程序Debugging Multithreaded Program1. 1 Exploring Threads Window2. 2 Flag Just My Code3. 3 Break Point Filter -
4、 Multithread Debugging9. 調試并行程序Debugging Parallel Program1. 1 Parallel Task and Parallel Stacks10. Debugging with IntelliTrace1. 1 Overview2. 2 Mapping with IntelliTrace3. 3 Filter IntelliTrace Data11. 調試常用快捷鍵Useful Shortcut Keys For VS Debugging12. 深入學習Further Study13. 總結Summary1 導言在軟件開發周期中,測試和修正缺陷
5、(defect,defect與bug的區別:Bug是缺陷的一種表現形式,而一個缺陷是可以引起多種Bug的)的時間遠多于寫代碼的時間。通常,debug是指發現缺陷并改正的過程。修正缺陷緊隨debug之后,或者說二者是相關的。如果代碼中存在缺陷,我們首先要識別造成缺陷的根本原因(root cause),這個過程就稱作調試(debugging)。找到根本原因后,就可以修正缺陷。那么如何調試代碼呢?Visual Studio提供了很多用于調試的工具。有時調試需要花費大量時間去識別root cause。VS提供了許多輔助調試的便捷的工具。調試器(Debugger)包含錯誤列表、添加斷點、可視化的程序流程
6、、控制執行流程、Data Tips、監視窗口(watch windows)、多線程調試、線程窗口、并行調試概覽以及IntelliTrace調試概覽。我希望本文能夠對調試功能的使用者有所裨益。請注意,本文使用VS2010。某些功能在舊版本中也是一致的,但是VS2010新增了許多features(Labeling breakpoint, Pinned DataTip, Multithreaded Debugging, Parallel debugging and IntelliTrace)。2 如何啟動調試?可以通過VS的調試(Debug)菜單啟動調試。點擊調試菜單下的“啟動調試”或者按F5鍵啟動
7、。如果你已經在代碼中加入了斷點,那么執行會自動開始。圖 啟動調試(Start Debugging)“附加到進程(Attach to Process)”是另一種啟動調試的方法。Attach Process會為應用程序啟動一個調試會話。可能我們更熟悉ASP.NET Web應用的Attach Process調試。我發了另外兩篇相關的帖子。如下: Debug Your ASP.NET Application that Hosted on IIS Remote IIS Debugging: Debug your ASP.NET Application which is hosted on Remote
8、IIS Server通常我們通過在可能存在問題代碼處加斷點來啟動調試。因此,我們從斷點開始講起。3 斷點(Breakpoints)斷點用于通知調試器何時何處暫停程序的執行。通過點擊左邊欄或者按F9鍵在當前行添加斷點。在加斷點之前,你需要知道你的代碼將會出現什么錯誤,在什么地方停止執行。當調試器執行到斷點處時,你可以使用其他的調試工具核對代碼何處出現錯誤。圖 設置斷點(Set Breakpoint)3.1 使用斷點進行調試你已經在你想要暫停執行的地方設置了斷點。現在按F5鍵啟動調試,當程序執行到斷點處時,自動暫停執行。此時你有多種方式來檢查代碼。命中斷點(hit the breakpoint)后
9、,加斷點的行變為黃色,意指下一步將執行此行。在中斷模式下,你有多條可使用的命令,使用相應命令進行進一步的調試。圖 斷點工具條(Breakpoint Toolbar)3.1.1 逐過程(Step Over)調試器執行到斷點后,你可能需要一條一條的執行代碼。”Step Over“F10命令用于一條一條的執行代碼。這將執行當前高亮的行,然后暫停。如果在一條方法調用語句高亮時按F10,執行會停在調用語句的下一條語句上。Step Over會一次整個方法。圖: 逐過程(Step Over - F10)3.1.2 逐語句(Step Into)它與Step Over相似。唯一的不同是,如果當前高亮語句是方法調
10、用,調試器會進入方法內部。快捷鍵是”F11“。圖: 逐語句(Step Into - F11)3.1.3 跳出(Step Out)當你在一個方法內部調試時會用到它。如果你在當前方法內按Shift - F11,調試器會完成此方法的執行,之后在調用此方法的語句的下一條語句處暫停。3.1.4 繼續(Continue)它像是重新執行你的程序。它會繼續程序的執行直到遇到下一個斷點。快捷鍵是”F5“。3.1.5 設置下一語句(Set Next Statement)這是一個非常有趣的特性。設置下一語句允許你在調試的時候改變程序的執行路徑。如果你的程序在某一行處暫停而且你想改變執行路徑,跳到指定行,在這一行上右
11、擊,在右擊菜單中選擇”設置下一語句“。這樣程序就會轉到哪一行執行而不執行先前的代碼。這在如下情況中非常有用:當你發現代碼中某些行可能會導致程序的中斷(break)而你不想讓程序在那個時候中斷。快捷鍵是Ctrl + Shift + F10。圖: 設置下一語句(Set Next Statement)3.1.6 顯示下一語句(Show Next Statement Ctrl+*)這一行用黃色箭頭標記。這行是程序繼續執行時下一條將執行的語句。3.2 斷點標簽(Labeling in Break Point)這是VS2010提供的新特征(feature)。用于更好的管理斷點。它使得我們能夠更好的分組和過
12、濾斷點。這像是對斷點的歸類。如果我們添加了與某一功能相關的不同類型的斷點,我們可以根據需要使能(enable)、取消(disable)、過濾(filter)這些斷點。例如,假設我們要調試一下代碼塊。csharpview plaincopy1. classProgram2. 3. staticvoidMain(stringargs)4. 5. stringstrNames=Name1,Name2,Name3,Name4,Name5,Name6;6. 7. foreach(stringnameinstrNames)8. 9. Console.WriteLine(name);/BreakPoint1
13、0. 11. inttemp=4;12. for(inti=1;i6)15. temp=5;16. 17. 18. 19. publicstaticvoidMethod1()20. 21. Console.WriteLine(BreakPointinMethod1);/BreakPoint22. 23. 24. publicstaticvoidMethod2()25. 26. Console.WriteLine(BreakPointinMethod2);/BreakPoint27. Console.WriteLine(BreakPointinMethod2);/BreakPoint28. 29
14、. 30. publicstaticvoidMethod3()31. 32. Console.WriteLine(BreakPointinMethod3);/Breakpoint33. 34. 執行程序將停在第一個斷點處。下圖給出了斷點列表。圖: 斷點列表上圖中Labels列都為空。下面介紹如何給斷點設置標簽(label)以及如何使用標簽。只需在特定代碼行的斷點符號上右擊()或者在斷點窗口中設置()即可對任何斷點設置標簽。圖: 設置斷點標簽(Setting Breakpoint Label)右擊斷點,點擊編輯標簽(Edit Labels),即可對任意斷點添加標簽。對于示例代碼,我為所有斷點的標
15、簽起了易于理解的名字。圖: 添加斷點標簽(Adding Breakpoint Label)這些標簽如何輔助我們調試呢?現在,所有斷點都是使能的(enabled)。如果你不想調試method2,一般情況下你必須去對應的方法中一個一個的取消斷點,但這里你可以通過標簽名過濾或者搜索它們,然后選中它們以方便的取消它們。圖: 使用標簽過濾斷點(Filter Breakpoint Using Labels)斷點標簽到此介紹完畢。我舉的例子非常簡單,但是斷點標簽在你調試大量代碼,多個工程等情況下非常有用。3.3 條件斷點(Conditional Breakpoint)假設你在多次迭代(循環)處理數據而你只想
16、調試其中某幾次迭代。這意味著你想根據某些特定條件暫停你的程序。Visual Studio斷點允許你設置條件斷點。當且僅當條件滿足時,調試器才會停住。首先,你需要在你想暫停執行處設置斷點。然后右擊紅色的斷點圖標。右鍵菜單中點擊”條件“。圖: 設置斷點條件(Set Breakpoint Condition)點擊右鍵菜單中的”條件“后,會彈出下面的對話框設置斷點的條件。圖: 斷點條件設置假設你要調試下面的代碼塊:csharpview plaincopy1. classProgram2. 3. staticvoidMain(stringargs)4. 5. stringstrNames=Name1,N
17、ame2,Name3,Name4,Name5,Name6;6. 7. foreach(stringnameinstrNames)8. 9. Console.WriteLine(name);/Breakpointishere10. 11. 12. 你在Console.WriteLine()語句處設置了斷點。當執行程序時,每次for-each循環都會停住。如果你想讓代碼只在name=Name3時停住,該怎么辦呢?非常簡單,你只需使用條件name.Equals(Name3)。圖: 設置斷點條件查看斷點符號。它應該看上去像是一個加(+)號在斷點符號內部,這表示該斷點是條件斷點。圖: 條件斷點符號(Co
18、nditional Breakpoint Symbol)設置斷點的條件之后,在調試程序,調試器只會在滿足給定條件時才停住。圖: 條件斷點命中(Conditional Breakpoint hit)條件輸入框的自動補全(intellisense):上面給出的斷點條件非常簡單,可以非常容易的寫到條件文本框中。有時你可能需要定義很大很復雜的條件。不必擔心,VS為條件文本輸入框也提供了自動補全功能。因此,在條件框中輸入就像是在編輯器中一樣方便。如下圖。圖: 條件文本框的自動補全(intellisense in condition textbox)我幾乎講解了條件斷點的所有內容。除了下面這點。在條件窗口
19、中有兩個選項:1. Is True2. Has Changed我們已經看到”Is True“選項的用途了。”Has Changed“用在當你想在某些值變為某些特定值的時候停住。3.4 導入/導出斷點(Import / Export Breakpoint)3.5 斷點命中計數(Breakpoint Hit Count)3.6 Breakpoint When Hit3.7 斷點篩選器(Breakpoint Filter)你可以限制斷點只對特定進程或線程有效。這在進行多線程程序的調試時非常有用。右擊斷點選”篩選器“即可打開篩選器窗口。圖: 斷點篩選器(Breakpoint Filter)在篩選規則中
20、,你可以設置進程名,進程Id,機器名,線程ID等。我會在多線程調試小節中詳述其用法。4 數據便簽(Data Tip)數據便簽是應用程序調試期間用于查看對象和變量的一種高級便簽消息。當調試器執行到斷點時,將鼠標移到對象或者變量上方時,你會看到它們的當前值。你甚至可以看到一些復雜對象(如dataset,datatable等等)的細節。數據便簽左上角有一個“+”號用于展開它的子對象或者值。圖: 調試時的數據便簽(DataTips During Debugging)幾個月前,我發過一篇關于VS 2010 DataTip Debugging Tips的文章。下面是一些在調試時有用的特性。4.1 Pin
21、Inspect Value During Debugging4.2 Drag-Drop Pin Data Tip4.3 Adding Comments4.4 Last Session Debugging Value4.5 Import Export Data Tips4.6 Change Value Using Data Tips4.7 Clear Data Tips5 監視窗口(Watch Windows)5.1 局部變量(Locals)列出當前方法中的所有變量。當調試器停在某特定斷點并打開Autos窗口時,將展示當前范圍中與此值相關的變量。圖:Local Variables5.2 自動窗口
22、(Autos)這些變量由VS調試器在調試的時候自動檢測。VS檢測與當前語句相關的對象或變量,基于此列出Autos變量。Autos Variable的快捷鍵是Ctrl + D + A。圖:Autos - Ctrl + D, A5.3 監視(Watch)Watch窗口用于添加變量。你可以添加任意多個變量。添加方法是,右擊變量并選擇“Add to Watch”。圖:Watch - Ctrl + D, W也可以使用拖放(Drag and Drop)將變量添加到監視窗口中。從監視窗口中刪除變量的方法是,右擊變量并選擇“Delete Watch”。通過調試窗口,也可以在運行時編輯這些變量值。有4個可同時使
23、用的監視窗口。圖:多個監視窗口若果變量中含有對象實例,左邊會有一個“+”號用于查看對象的屬性和成員。圖:展開監視變量5.3.1 Creating Object IDVisual Studio調試器提供另外一個強大的功能,支持我們為對象的任何一個特定實例創建一個對象ID(object ID)。這可以用于在任何時間監控任意對象,甚至是該對象位于范圍(scope)之外。在監視窗口(watch window)右擊特定對象變量,再單擊“Make Object ID”即可創建Object ID。圖: 創建Object ID在對特定對象變量創建Object ID之后,Visual Studio會給這個對象添
24、加一個數碼和“#”號,用來表示。圖:添加Object ID后5.46 即時窗口(Immediate Window)即時窗口是開發人員常用的功能。它可以在不改變當前調試步驟的情況下修改變量值或者執行一些語句。我們可以通過菜單調試 窗口 即時(Debug Window Immediate Window)打開即時窗口。即時窗口支持一組命令,可在調試的任何時刻執行。它也支持Intellisense。在調試期間,我們可以在即時窗口中執行任何命令或者代碼語句。圖:基本即時窗口(Basic Immediate Window)這是對所有開發人員來說最為常用的特性,因此我就不一一介紹即時窗口的每一條命令了。7
25、調用堆棧(Call Stack)8 調試多線程程序(Debugging Multithreaded Program)8.1 Exploring Threads Window8.2 Flag Just My Code8.3 Break Point Filter - Multithread Debugging9 調試并行程序(Debugging Parallel Program)9.1 Parallel Task and Parallel Stacks10 Debugging with IntelliTrace10.1 Overview10.2 Mapping with IntelliTrace1
26、0.3 Filter IntelliTrace Data11 調試常用快捷鍵(Useful Shortcut Keys For VS Debugging)Shortcut KeysDescriptionsCtrl-Alt-V, ADisplays the Auto windowCtrl-Alt-BDisplays the Breakpoints dialogCtrl-Alt-CDisplays the Call StackCtrl-Shift-F9Clears all of the breakpoints in the projectCtrl-F9Enables or disables the
27、 breakpoint on the current line of codeCtrl-Alt-EDisplays the Exceptions dialogCtrl-Alt-IDisplays the Immediate windowCtrl-Alt-V, LDisplays the Locals windowCtrl-Alt-QDisplays the Quick Watch dialogCtrl-Shift-F5Terminates the current debugging session, rebuilds if necessary, and starts a new debuggi
28、ng session.Ctrl-F10Starts or resumes execution of your code and then halts execution when it reaches the selected statement.Ctrl-Shift-F10Sets the execution point to the line of code you chooseAlt-NUM *Highlights the next statementF5If not currently debugging, this runs the startup project or projects and attaches the debugger.Ctrl-F5Runs the code without invoking the debuggerF11Step IntoShift-F11Executes the remaining lines out from procedureF10Executes the next line of code but does not step into any function callsShift-F5Available in break and run modes, this terminates
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漢代婚禮活動策劃方案
- 沙龍造型活動方案
- 民間廣場舞活動方案
- 棋牌活動中秋節活動方案
- 梧林古村落元旦活動方案
- 每天計算活動方案
- 正月藥店活動方案
- 森馬店年后活動方案
- 水果試吃群活動方案
- 榆次漢堡店活動方案
- 工地施工特種設備管理制度
- 2025年數字內容創作師資格考試試卷及答案
- 胖東來投訴管理制度
- 2024-2025新入職員工安全培訓考試試題及完整答案【一套】
- 2025年內蒙古鄂爾多斯機場管理集團鄂爾多斯市空港實業有限公司招聘筆試參考題庫含答案解析
- 2025年鄭州市公安機關招聘警務輔助人員題庫帶答案分析
- CJ/T 340-2016綠化種植土壤
- 廬山市國有投資控股集團有限公司招聘筆試題庫2025
- 2025年貴州省公務員錄用考試《行測》真題及答案解析
- 第一單元:三視圖的判斷、確認與繪制專項練習-2023-2024學年五年級數學下冊典型例題系列(原卷版)人教版
- 楊梅承包合同協議書
評論
0/150
提交評論