C#中利用斷點操作調(diào)試程序的步驟詳解
Visual Studio調(diào)試器調(diào)試
我們大家都知道,當(dāng)代碼不能正常運行時,可以通過調(diào)試定位錯誤。常用的程序調(diào)試操作包括設(shè)置斷點、開始、中斷和停止程序的執(zhí)行、單步執(zhí)行程序以及使程序運行到指定的位置。下面將對這幾種常用的程序調(diào)試操作進行詳細地介紹。話不多說了,來一起看看詳細的介紹吧。
1.?dāng)帱c操作
斷點通知調(diào)試器,使應(yīng)用程序在某點上(暫停執(zhí)行)或某情況發(fā)生時中斷。發(fā)生中斷時,稱程序和調(diào)試器處于中斷模式。進入中斷模式并不會終止或結(jié)束程序的執(zhí)行,所有元素(如函數(shù)、變量和對象)都保留在內(nèi)存中。執(zhí)行可以在任何時候繼續(xù)。
插入斷點有3種方式:在要設(shè)置斷點的代碼行旁邊的灰色空白中單擊;右鍵單擊要設(shè)置斷點的代碼行,在彈出的快捷菜單中選擇“斷點”→“插入斷點”命令,如圖11.4所示;單擊要設(shè)置斷點的代碼行,選擇菜單中的“調(diào)試”→“切換斷點(G)”命令,如圖11.5所示。
圖11.4 右鍵快捷菜單插入斷點
圖11.5 菜單欄插入斷點
插入斷點后,就會在設(shè)置斷點的行旁邊的灰色空白處出現(xiàn)一個紅色圓點,并且該行代碼也呈高亮顯示,如圖11.6所示。
圖11.6 插入斷點后效果圖
刪除斷點主要有3種方式,分別如下:
(1)可以單擊設(shè)置了斷點的代碼行左側(cè)的紅色圓點。
(2)在設(shè)置了斷點的代碼行左側(cè)的紅色圓點上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“刪除斷點”命令,如圖11.7所示。
圖11.7 右鍵快捷菜單刪除斷點
(3)在設(shè)置了斷點的代碼行上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“斷點”/“刪除斷點”命令
2.開始執(zhí)行
開始執(zhí)行是最基本的調(diào)試功能之一,從“調(diào)試”菜單(如圖11.8所示)中選擇“開始調(diào)試”菜單,或在源代碼窗口中右鍵單擊可執(zhí)行代碼中的某行,從彈出的快捷菜單中選擇“運行到光標(biāo)處”菜單,如圖11.9所示。
圖11.8 選擇“啟動調(diào)試”菜單
圖11.9 選擇“運行到光標(biāo)處”菜單
除了使用上述的方法開始執(zhí)行外,還可以直接單擊工具欄中的按鈕,啟動調(diào)試,如圖11.10所示。
圖11.10 工具欄中的啟動調(diào)試按鈕
如果選擇“啟動調(diào)試”菜單,則應(yīng)用程序啟動并一直運行到斷點,此時斷點處的代碼以黃色底色顯示,如圖11.11所示??梢栽谌魏螘r刻中斷執(zhí)行,以查看值(將鼠標(biāo)移動到相應(yīng)的變量或者對象上,即可查看其具體值,如圖11.12所示)、修改變量或觀察程序狀態(tài)。
圖11.11 運行到斷點
圖11.12 查看變量的值
如果選擇“運行到光標(biāo)處”命令,則應(yīng)用程序啟動并一直運行到斷點或光標(biāo)位置,具體要看是斷點在前還是光標(biāo)在前,可以在源代碼窗口中設(shè)置光標(biāo)位置。如果光標(biāo)在斷點的前面,則代碼首先運行到光標(biāo)處,如圖11.13所示。
圖11.13 運行到光標(biāo)處
3.中斷執(zhí)行
當(dāng)執(zhí)行到達一個斷點或發(fā)生異常時,調(diào)試器將中斷程序的執(zhí)行。選擇“調(diào)試”→“全部中斷”菜單后,調(diào)試器將停止所有在調(diào)試器下運行的程序的執(zhí)行。程序并沒有退出,可以隨時恢復(fù)執(zhí)行,此時應(yīng)用程序處于中斷模式。“調(diào)試”菜單中“全部中斷”菜單如圖11.14所示。
圖11.14 “調(diào)試”→“全部中斷”菜單
除了通過選擇“調(diào)試”→“全部中斷”命令中斷執(zhí)行外,也可以單擊工具欄中的按鈕中斷執(zhí)行,如圖11.15所示。
圖11.15 工具欄中的中斷執(zhí)行按鈕
4.停止執(zhí)行
停止執(zhí)行意味著終止正在調(diào)試的進程并結(jié)束調(diào)試會話,可以通過選擇菜單中的“調(diào)試”→“停止調(diào)試”命令來結(jié)束運行和調(diào)試。也可以選擇工具欄中的按鈕停止執(zhí)行。
5.單步執(zhí)行和逐過程執(zhí)行
通過單步執(zhí)行,調(diào)試器每次只執(zhí)行一行代碼,單步執(zhí)行主要是通過逐語句、逐過程和跳出這3種命令實現(xiàn)的?!爸鹫Z句”和“逐過程”的主要區(qū)別是當(dāng)某一行包含函數(shù)調(diào)用時,“逐語句”僅執(zhí)行調(diào)用本身,然后在函數(shù)內(nèi)的第一個代碼行處停止。而“逐過程”執(zhí)行整個函數(shù),之后在函數(shù)外的第一行代碼處停止。如果位于函數(shù)調(diào)用的內(nèi)部并想返回到調(diào)用函數(shù)時,應(yīng)使用“跳出”,“跳出”將一直執(zhí)行代碼,直到函數(shù)返回,然后在調(diào)用函數(shù)中的返回點處中斷。
當(dāng)啟動調(diào)試后,可以單擊工具欄中的按鈕執(zhí)行“逐語句”操作,單擊按鈕執(zhí)行“逐過程”操作,單擊按鈕執(zhí)行“跳出”操作,如圖11.16所示。
圖11.16 單步執(zhí)行的3種命令
說明:除了在工具欄中單擊這3個按鈕外,還可以通過快捷鍵執(zhí)行這3種操作,啟動調(diào)試后,按下<F11>鍵執(zhí)行“逐語句”操作、<F10>鍵執(zhí)行“逐過程”操作、<Shift+F10>鍵執(zhí)行“跳出”操作。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對我們的支持。
上一篇:ajaxFileUpload插件,C#返回Json數(shù)據(jù)報錯問題的解決方案
欄 目:C#教程
下一篇:C# 通過反射初探ORM框架的實現(xiàn)原理(詳解)
本文標(biāo)題:C#中利用斷點操作調(diào)試程序的步驟詳解
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5317.html
您可能感興趣的文章
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
- 01-10C#實現(xiàn)Winform中打開網(wǎng)頁頁面的方法
- 01-10C#文件斷點續(xù)傳實現(xiàn)方法
- 01-10C#實現(xiàn)由四周向中心縮小的窗體退出特效
- 01-10Extjs4如何處理后臺json數(shù)據(jù)中日期和時間
- 01-10C#中DataGridView常用操作實例小結(jié)
- 01-10C#編程獲取資源文件中圖片的方法
- 01-10asp.net中XML如何做增刪改查操作
- 01-10C#利用反射技術(shù)實現(xiàn)去掉按鈕選中時的邊框效果
- 01-10C#中查找Dictionary中的重復(fù)值的方法


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機閱讀
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實例總結(jié)