C#如何調(diào)試代碼.doc_第1頁
C#如何調(diào)試代碼.doc_第2頁
C#如何調(diào)試代碼.doc_第3頁
C#如何調(diào)試代碼.doc_第4頁
C#如何調(diào)試代碼.doc_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

我們在做程序開發(fā)時(shí),難免會(huì)遇到錯(cuò)誤異常。如何快速地找到出錯(cuò)的地方、分析錯(cuò)誤的原因以及找到解決問題的方案,是許多初級(jí)程序員困擾的問題,這也正是經(jīng)驗(yàn)的寶貴之處。下面我將簡單介紹在Visual Studio中調(diào)試以及一些高級(jí)的調(diào)試和常見的錯(cuò)誤。PS:如無特別說明Visual Studio均指Dev10即Visual Studio 2010。入門篇假設(shè)你是有著.Net平臺(tái)的程序員,并且使用Visual Studio做為開發(fā)工具。斷點(diǎn):最簡單的一種,設(shè)置一個(gè)斷點(diǎn),程序執(zhí)行到那一句就自動(dòng)中斷進(jìn)入調(diào)試狀態(tài)。設(shè)置斷點(diǎn),在你覺得有問題的代碼行,左側(cè)單擊,會(huì)出現(xiàn)紅色的紅點(diǎn)即斷點(diǎn)。啟動(dòng)調(diào)式:按F5,或者菜單欄-調(diào)式-開始調(diào)試,或者工具欄的圖標(biāo)快速監(jiān)視:快速查看變量或者表達(dá)式的值,也可以自定義表達(dá)式進(jìn)行計(jì)算單步執(zhí)行有三種,一種是每次執(zhí)行一行(F10);一種是每次執(zhí)行一行,但遇到函數(shù)調(diào)用就會(huì)跳到被調(diào)用的函數(shù)里(F11);一種是直接執(zhí)行當(dāng)前函數(shù)里剩下的指令,返回上一級(jí)函數(shù)(Shift+F11)。還有一種后悔藥,設(shè)為下一句(Set Next Statement),即下一句會(huì)被執(zhí)行的語句(右擊設(shè)置或者快捷鍵:Ctrl+Shift+F10),但要注意在調(diào)試與數(shù)據(jù)有關(guān)的時(shí)候,設(shè)置下一句有可能會(huì)報(bào)異常。如在調(diào)試向DataTable中添加行的時(shí)候,已經(jīng)存在的行不能重復(fù)被添加到DataTable中監(jiān)視調(diào)試器可能會(huì)自動(dòng)列出一些相關(guān)變量的值,但是你可能還關(guān)心其它變量的值,可以添加對這些變量的監(jiān)視。還可以監(jiān)視一個(gè)表達(dá)式的值,比如a+b。但是,這個(gè)表達(dá)式最好不要修改變量的值,比如監(jiān)視a+都會(huì)導(dǎo)致監(jiān)視時(shí)修改了a的值,影響了程序的運(yùn)行結(jié)果。調(diào)試技巧篇使用快捷鍵會(huì)大大提升我們的調(diào)試效率,常用的調(diào)試快捷鍵:F5啟動(dòng)調(diào)試F10執(zhí)行下一行代碼,但不執(zhí)行任何函數(shù)調(diào)用。F11在執(zhí)行進(jìn)入函數(shù)調(diào)用后,逐條語句執(zhí)行代碼。Shift + F11執(zhí)行當(dāng)前執(zhí)行點(diǎn)所處函數(shù)的剩余行。Shift + F5停止運(yùn)行程序中的當(dāng)前應(yīng)用程序??捎糜凇爸袛唷蹦J胶汀斑\(yùn)行”模式。拖動(dòng)斷點(diǎn)(感謝圣殿騎士的提醒)在調(diào)試中,我們可以拖動(dòng)斷點(diǎn),使得程序運(yùn)行到我們想要運(yùn)行的地方。通常是用來驗(yàn)證這段代碼對程序的運(yùn)行結(jié)果有沒有影響的。因?yàn)槲覀兺蟿?dòng)代碼,則被過濾的代碼就不會(huì)執(zhí)行,將它跟原來的相比,可以看出去掉這段代碼有什么影響條件中斷假如你寫了個(gè)for循環(huán),而且循環(huán)的次數(shù)比較多,如下代碼,現(xiàn)在我們知道在i=50的時(shí)候會(huì)有異常,那我們不可能按50次F5去調(diào)試這代碼,不然這效率.privatevoidConditionDebug()for(inti=0;i100;i+) if(i=50) /someerrorcodehereConsole.WriteLine(i=50here); 我們可以直接利用vs提供的功能修改變量i的值,一開i=0,即剛進(jìn)入for循環(huán)中,我們設(shè)置將i改為49并回車,再調(diào)試一次,會(huì)發(fā)現(xiàn)i=50;如下圖當(dāng)然我們也可以直接在代碼里寫代碼以達(dá)到這個(gè)目的,代碼如下private void ConditionDebug() for (int i = 0; i ”開頭),會(huì)有智能提示,而且命名都是自解釋型。如,我們現(xiàn)在想要知道i的值,可以輸入命名Debug.Print i(也可以簡單的使用? i),如下圖Immediatewindow還有更強(qiáng)大的用法,計(jì)算方法的返回值(如果有的話)如果有這個(gè)的函數(shù)int MethodValue(int a)if (a=1) return 1;else return 0;我們可以使用Immediate命令? class.Method(args)去調(diào)用這個(gè)方法,如下圖其中p是當(dāng)前類的實(shí)例(因?yàn)镸ethodValue是類的方法,注意?和表達(dá)式之間要有空格)對于一些實(shí)時(shí)性很高的程序(如socket)使用 Debug.Write()把錯(cuò)誤寫到日志文件中,.Net可以將Debug信息寫到你指定的文件中,記住,寫進(jìn)出的信息不一定是出錯(cuò)的信息,也可以是你的程序的運(yùn)行的一些重要信息,當(dāng)你調(diào)試過程中發(fā)現(xiàn)某個(gè)模塊出了問題,但是不能決定位置,那你就可以使用這個(gè)方法,如果是一天才出一個(gè)錯(cuò)誤,那你就更要使用這個(gè)方法。實(shí)例篇涉及到WS(WebServices)的調(diào)試在基于WinForm的實(shí)際開始開發(fā)中,我們往往采用WS用做數(shù)據(jù)的傳遞,我們在前臺(tái)獲取收集數(shù)據(jù),通過WS將數(shù)據(jù)傳遞給后臺(tái),后臺(tái)做相應(yīng)的業(yè)務(wù)邏輯處理后,會(huì)持久到數(shù)據(jù)庫中。而往往我們又會(huì)在WS中寫一些相關(guān)的代碼,如身份驗(yàn)證、日志記錄、提示信息等,怎樣去調(diào)試這些代碼呢。涉及到JavaScript的調(diào)試許多程序員為調(diào)試JavaScript感到困惑不已,因?yàn)闆]有一款很好的調(diào)試工具。一些人喜歡使用FireBug來調(diào)試JavaScript,確實(shí)是一個(gè)不錯(cuò)的選擇,F(xiàn)irebug提供了許多的JavaScript信息,是一款不錯(cuò)的調(diào)試JavaScript的工具。下面我將會(huì)介紹如何使用Visual Studio調(diào)試JavaScript,Visual Studio中調(diào)試JS跟調(diào)試C#差不多,都是設(shè)置斷點(diǎn),不同的是我們在查看元素值的時(shí)候需要注意點(diǎn)。涉及到Ajax的調(diào)試現(xiàn)在ajax已經(jīng)十分的流行,但是隨之而來的即調(diào)試?yán)щy,大部分初級(jí)程序員不知道如何有效地從前臺(tái)調(diào)試到后臺(tái)代碼,以至出了很多不完善的ajax應(yīng)用。下面以一個(gè)簡單的實(shí)例來介紹如何使用Visual Studio調(diào)試JavaScript。實(shí)例是使用Ajax驗(yàn)證用戶登錄,如果驗(yàn)證通過,則提示“登錄成功”,否則提示“登錄失敗”。下面是主要的代碼,我們使用jQuery來實(shí)現(xiàn)ajax,并且在后臺(tái)文件中故意出錯(cuò)。正確的用戶名和密碼是admin和1調(diào)試方法如下,在后臺(tái)入口處設(shè)置斷點(diǎn),然后在前臺(tái)js中調(diào)用后臺(tái)的方法處設(shè)置斷點(diǎn),然后按F5啟動(dòng)調(diào)試,當(dāng)我們輸入用戶名、密碼后,點(diǎn)擊登錄后會(huì)發(fā)現(xiàn),前臺(tái)斷點(diǎn)被觸發(fā)了。按F5繼續(xù)調(diào)試,有時(shí)候會(huì)跳到j(luò)Query的源碼中,不管他,繼續(xù)F5,會(huì)發(fā)現(xiàn)執(zhí)行到后臺(tái)中的斷點(diǎn)中,如下圖而后臺(tái)代碼的調(diào)試是十分簡單的。(PS:有時(shí)候無需在前臺(tái)設(shè)置斷點(diǎn)也可直接進(jìn)入后臺(tái)的調(diào)試,如何不行的話,在前臺(tái)html文件或者aspx文件中認(rèn)為有可能出錯(cuò)的地方設(shè)置斷點(diǎn),一步步調(diào)試)一些調(diào)試中出現(xiàn)的常見錯(cuò)誤(會(huì)陸續(xù)更新):1我們調(diào)試到某一句代碼的時(shí)候,突然莫名奇妙的跳出來了,其實(shí)是剛剛執(zhí)行的這一句話有異常,我們可以使用trycatch進(jìn)行異常捕獲,看看異常原因是什么,然后做相應(yīng)的處理2在ADO.NET,我們會(huì)使用ds.Merge()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論