VS条件断点学习总结
生活随笔
收集整理的這篇文章主要介紹了
VS条件断点学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
HOW TO:在 Visual Studio .NET 中設置條件斷點
本任務的內容
摘要
創建示例代碼
創建無條件斷點
創建條件函數斷點
創建附加斷點
更改斷點屬性
在調試模式下逐步調試代碼
更改斷點窗口輸出
禁用并清除斷點
疑難解答
參考
概要
Visual Studio .NET 提供了多種方法來幫助您調試 .NET Framework 應用程序。本文分步講解了如何使用斷點來調試用 Microsoft Visual Basic .NET 編寫的代碼段。
本文假定您熟悉 Visual Basic .NET 語法。
返回頁首
創建示例代碼
啟動 Visual Studio .NET,新建一個名為“Debug”的 Visual Basic 控制臺應用程序項目。
在 Module1.vb 中修改代碼,如下所示:
Module Module1
? ? Sub Main()
? ? ? ? Dim MyTime As String = TimeString
? ? ? ? Dim MyGreeting As String
? ? ? ? ' Create a greeting.
? ? ? ? If CInt(TimeString.Substring(0, 2)) < 12 Then
? ? ? ? ? ? MyGreeting = Reverse("Good Morning")
? ? ? ? Else
? ? ? ? ? ? MyGreeting = Reverse("Good Afternoon")
? ? ? ? End If
? ? ? ? ' Display reversed greeting.
? ? ? ? Console.WriteLine(MyGreeting)
? ? End Sub
? ??
? ? Function Reverse(ByVal inStr As String) As String
? ? ? ? ' Reverses the characters contained in a string.
? ? ? ? Dim MyInt As Integer
? ? ? ? Dim MyStr As String
? ? ? ? For MyInt = (inStr.Length - 1) To 0 Step -1
? ? ? ? ? ? MyStr = MyStr & inStr.Substring(MyInt, 1)
? ? ? ? Next
? ? ? ? Return MyStr
? ? End Function
End Module
保存該項目。
返回頁首
創建無條件斷點
在調試菜單上,單擊窗口,然后單擊斷點。
在“代碼”視圖中,單擊以下代碼行旁邊的左邊距。這樣可以在該語句處設置斷點:
If CInt(TimeString.Substring(0, 2)) < 12 Then
在調試菜單上,單擊開始。這時,程序在調試模式下啟動。程序在到達斷點時停止。
在調試菜單上,單擊窗口,然后單擊局部變量。這時,顯示局部變量 MyGreeting 和 MyTime 的值。
在調試菜單上,單擊繼續(或按 F5 鍵)。程序會在斷點后繼續執行。
返回頁首
創建條件函數斷點
在“斷點”窗口中,單擊新建,新建一個斷點。
在函數選項卡上,為函數鍵入 Reverse。為行鍵入 1,為字符鍵入 1,然后將語言設置為 Basic。
單擊條件,并確保選中了條件復選框。為條件鍵入 instr.length > 0,并確保選中了為真選項,然后單擊確定。
在新斷點對話框中,單擊確定。
在調試菜單上,單擊開始。
程序會在 Main 方法中的 IF 語句處停止。要繼續執行程序,請在調試菜單上單擊繼續。
程序會在 Reverse 函數處再次停止。繼續運行該程序。
返回頁首
創建附加斷點
要創建附加斷點,請單擊以下代碼行旁邊 Reverse 函數的左邊距:
MyStr = MyStr & inStr.Substring(MyInt, 1)
返回頁首
更改斷點屬性
要更改新斷點的屬性,請用鼠標右鍵單擊上一步中的代碼行,然后單擊斷點屬性。
單擊點擊次數。
要以 2 的倍數的形式設置“點擊斷點時”,請在文本字段中鍵入 2,然后單擊確定。
在斷點屬性對話框中,單擊確定。
在調試菜單上,單擊開始(或按 F5 鍵)。程序在第一個斷點處停止。
繼續運行程序,直到調試過程結束。
返回頁首
在調試模式下逐步調試代碼
在調試模式下啟動程序。當程序到達第一個斷點時,在調試菜單上,單擊單步執行(跳過過程)。這時,程序跳過該斷點并轉至下一條語句。
如果您在上午運行此程序,會看到下面的語句:
MyGreeting = Reverse("Good Morning")
如果您在下午運行此程序,會看到 Else 語句。再次按 F10 鍵可轉至下面的語句:
MyGreeting = Reverse("Good Afternoon")
在調試菜單上,單擊單步執行(進入過程)。這時,單步執行 Reverse 函數。
繼續單擊調試菜單上的單步執行(跳過過程),直到再次到達下面的語句:
MyStr = MyStr & inStr.Substring(MyInt, 1)
通過單擊左邊距來刪除當前斷點。
在調試菜單上,單擊跳出。這時,程序離開 Reverse 函數。
請繼續,直到調試過程結束。
返回頁首
更改斷點窗口輸出
在“斷點”窗口中,單擊列菜單,顯示可用列。
單擊函數,向“斷點”窗口顯示添加“函數”列。
返回頁首
禁用并清除斷點
在“斷點”窗口中,雙擊下面的斷點:
Module1.vb,行 9 字符 1
這時,程序轉至“代碼”窗口中的斷點位置:
If CInt(TimeString.Substring(0, 2)) < 12 Then
?
在“斷點”窗口中,取消選中此斷點的復選框。這樣將禁用此斷點。
在“斷點”窗口中,單擊禁用所有斷點,再單擊啟用所有斷點,然后單擊清除所有斷點。
返回頁首
疑難解答
您只能在可執行的代碼行中創建斷點。例如,注釋或沒有默認值的變量聲明不接受斷點。
您只能在函數聲明的第一行中指定函數斷點。
Microsoft 不支持在 Visual Basic .NET 中使用數據斷點。
返回頁首
參考
有關調試斷點的詳細信息,請參閱 Visual Studio .NET 聯機幫助文檔中的以下主題:
Debugging Basics:Breakpoints
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/vxconDebugging101Breakpoints.asp
========
VS2005強大的條件斷點功能
http://blog.csdn.net/magictong/article/details/5429721? ? ? 今天在調一個漏洞修復的crash的時候,進入了一個很大的循環,循環不停地檢測是否有當前漏洞,斷點打在循環體里面,已知出問題的漏洞的KB號,但是如果要在剛好掃描到這個KB號的時候斷下來,還有點小麻煩,我又不想改代碼用if斷下來,其實VS2005做到這個非常簡單,設置條件斷點就行了,在斷點的右邊單擊右鍵會彈出斷點條件設置菜單:
? ? ? 然后再點擊 Condition... 輸入條件 KBID == 977150,確定即可:
? ? ? 這個里面還有一個Has changed選項,可以跟蹤某個變量變化的情況下斷下來,牛叉。
? ? ? ?菜單上還有其他的一些功能:
? ? ? 1、HitCount...可以設置命中幾次后,或命中次數是某數的倍數,或者命中次數大于某數時斷下來(命中就是只執行到斷點處)
? ? ? 2、Filter...顧名思義,就是過濾,可以設置只有某些外部條件滿足時才觸發斷點
? ? ? 3、When Hit...根據英文意思是當斷下來的時候,干嘛干嘛,可以打印一串字符串啊,×××的,還可以運行宏,太牛B了,不過我還沒有深究怎么弄。要運行宏的話,是用vbs寫的,并事先導入到vs2005里面。
========
條件斷點的設置和應用
http://blog.csdn.net/bichenggui/article/details/4510529什么是條件斷點?
條件斷點就是帶有一個條件表達式的斷點,在調試中,只有這個條件表達式為真時,程序到達斷點時,才會暫停。
而對于普通的斷點,只要程序到達該斷點是,就會暫停。這個條件表達式必須能被調試器識別和求值,,比如說在watch窗口里
可以識別和求值的變量同樣也可以在條件表達式里被識別和求值。這大大方便了我們調試某些問題,比如說,你在循環體內設置了
一個斷點(1000次循環),而這個bug在循環到999次時才發生,你可以通過條件斷點來設置循環到999次然后暫停。利用普通的
斷點你不能實現這一點。
如何設置條件斷點?
1. VC 6.0:?
? ?如圖,先在你要設定斷點的位置設置好斷點,然后按alt + F9,彈出breakpoints對話框,如下圖所示。
? ? 選中需要設置條件的斷點,然后點擊condition,然后就會出現break condition這個對話框,這個對話框就是設置條件斷點的地方。
? ? 從上到下有三個輸入框:
? ? 1. ?輸入一個表達式,當表達式的值發生變化時,斷點會暫停,否則不暫停
? ? 2、設定查看的數組或是結構的需要watch的個數
? ? 3. 設置循環過多少次 才暫停。
?
這個例子中,設置循環999次后暫停,輸入的值為999.注意,這個次數必須在合理范圍內。否則就是失去了意義。
?
2. 對于VS2008:
? ?先設置斷點,按alt + F9,或者是從菜單(Debug->Window->breakoints),選中需要設置條件的斷點,按右鍵,選中condition,然后出現以下對話框:?
輸入條件表達式,選中is true時,該條件表達式為true的時候,程序會break。
當選中has changed時,該表達式的值發生改變時,程序會break。
表達式可以是一個變量,也可以是一個常規表達式。(前提是可以被debugger識別和求值),可參照watch窗口。
========
總結
以上是生活随笔為你收集整理的VS条件断点学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate debug学习总结
- 下一篇: js调试学习总结