您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Visual Studio Debug之斷點操作的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
前言
調試技巧是衡量程序員水平的一個重要指標.掌握好的調試技巧與工具的使用方法,也是非常重要的.
Visual Studio 調試程序有助于你觀察程序的運行時行為并發現問題。 該調試器可用于所有 Visual Studio 編程語言及其關聯的庫。 使用調試程序時,可以中斷程序的執行以檢查代碼、檢查和編輯變量、查看寄存器、查看從源代碼創建的指令,以及查看應用程序占用的內存空間。
斷點,可以說是 Debug 過程中最常用的功能。
但是大家最熟悉最經常使用的可能就是普通的斷點。其實,關于斷點,Visual Studio 有很多的高級功能,有些簡直就是調試利器啊。
1. 普通斷點
為了保證內容完整性,還是要說下普通斷點。
設置普通斷點的方法很簡單,就是在代碼行的左邊欄灰色區域點擊或者把光標放在某代碼行,按下 F9。
如上圖所示,此時左邊欄出現的紅色圓點就代表了一個斷點。
按下 F5, Debugger 就會在此處停下來。
2. 條件斷點
不像是普通的斷點,程序每次執行都會停下來。條件斷點的意義是,只有在條件被滿足時,Debugger 才會在此處停下來。
設置條件斷點一般的方法是在紅點處右鍵選擇條件或者把光標放在紅點處,等待齒輪圖標出現并點擊。
條件斷點設置窗口如下。
總共有三種類型的條件斷點:
條件表達式 (Conditional Expression)
命中次數 (Hit Count)
篩選器 (Filter)
條件表達式
條件表達式也有兩種類型:
為 ture (Is ture)
如下圖示,此處設置的條件為: 當 testInt == 4 is ture 時命中斷點。
更改時 (When changed)
如下圖示,此處設置的條件為: 當 testInt 被更改的時候命中斷點。
命中次數
命中次數在 Debug 循環語句時非常有用。
比如你懷疑程序出錯點發生在 N 次循環之后或者某些次循環,那么可以設置循環語句內的命中次數,讓它在某些次或者某次循環停下來,而不是每次都停下來。
如下圖,設置的條件為:讓它每隔一次循環斷下來。
篩選器
篩選器是用來限制斷點命中時所在的設備、進程和線程。
比如,在一個多線程的程序中,你不必手動 GetThreadId,可以通過篩選器,設置讓它只在某線程中執行到此處時停下來。
篩選器表達式用法為:
MachineName = "name"
ProcessId = value
ProcessName = "name"
ThreadId = value
ThreadName = "name"
多個表達式之間可以使用運算符 & (AND), || (OR), ! (NOT) 連接 。
3. 追蹤斷點
在斷點設置窗口,除了條件,我們還可以看到操作 (Action)選項框。
操作 (Action) 的意義是設置追蹤點 (Tracepoint)。
Tracepoint 相當于是一種臨時的有 Trace 功能的斷點,它會把消息打印到 Output 窗口。
勾選后面的繼續執行 (Continue Execution),代表 Tracepoint 命中時,Debugger 不會停下來,否則將會在此處停下來。兩種情況下,消息都會打印出來。
可以使用下面的關鍵字作為消息。
4. 函數斷點
在 Debug 菜單下,點擊新建斷點,可以新建兩種類型的斷點:函數斷點 (Function Breakpoint)和數據斷點(Data Breakpoint)。
函數斷點是通過函數名設置斷點,當程序執行到該函數的時候斷點斷下來。
5. 數據斷點
緊接上面,這里講下數據斷點。
數據斷點的意義是,讓程序在當某處地址指定字節發生改變的時候中斷下來。它只有在 Break Mode 下才可以設置。
地址欄可以用具體的內存地址,也可以用表達式來代表內存地址。例如,可以使用 &avar,讓程序在當變量 avar 內容發生改變的時候中斷下來。
6. 在 Call Stack Window 設置斷點
也許你不知道,是可以在 Call Stack 窗口設置斷點的。
當你在查看函數的調用關系的時候,想在這一些列的函數中快速設置斷點,那么其實很簡單:在 Call Stack 窗口,點擊想要設置斷點的函數所在的行,按下 F9 即可。
7. 在 Disassembly Window 設置斷點
還可以在 Disassembly 窗口設置斷點。但前提必須是 Break Mode 下。
反匯編窗口設置斷點的方式跟在源代碼中設置斷點的方式相同,只要在代碼左邊欄邊緣處點擊一下,紅色圓點就出現了。
8. 斷點管理
我們前面所設置的所有斷點都會出現在斷點窗口 (Breakpoints Windows)。
在這里,可以對所有的斷點進行管理,比如批量啟用、禁用、刪除等,還可以在程序運行過程中,查看斷點的命中狀態。
當你的工程非常大,Debug 時設置了很多的斷點的時候,它會非常有用。
關于“Visual Studio Debug之斷點操作的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。