C#如何調(diào)試代碼.doc_第1頁(yè)
C#如何調(diào)試代碼.doc_第2頁(yè)
C#如何調(diào)試代碼.doc_第3頁(yè)
C#如何調(diào)試代碼.doc_第4頁(yè)
C#如何調(diào)試代碼.doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余2頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

我們?cè)谧龀绦蜷_(kāi)發(fā)時(shí),難免會(huì)遇到錯(cuò)誤異常。如何快速地找到出錯(cuò)的地方、分析錯(cuò)誤的原因以及找到解決問(wèn)題的方案,是許多初級(jí)程序員困擾的問(wèn)題,這也正是經(jīng)驗(yàn)的寶貴之處。下面我將簡(jiǎn)單介紹在Visual Studio中調(diào)試以及一些高級(jí)的調(diào)試和常見(jiàn)的錯(cuò)誤。PS:如無(wú)特別說(shuō)明Visual Studio均指Dev10即Visual Studio 2010。入門(mén)篇假設(shè)你是有著.Net平臺(tái)的程序員,并且使用Visual Studio做為開(kāi)發(fā)工具。斷點(diǎn):最簡(jiǎn)單的一種,設(shè)置一個(gè)斷點(diǎn),程序執(zhí)行到那一句就自動(dòng)中斷進(jìn)入調(diào)試狀態(tài)。設(shè)置斷點(diǎn),在你覺(jué)得有問(wèn)題的代碼行,左側(cè)單擊,會(huì)出現(xiàn)紅色的紅點(diǎn)即斷點(diǎn)。啟動(dòng)調(diào)式:按F5,或者菜單欄-調(diào)式-開(kāi)始調(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í)行的語(yǔ)句(右擊設(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)心其它變量的值,可以添加對(duì)這些變量的監(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)用后,逐條語(yǔ)句執(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)行的地方。通常是用來(lái)驗(yàn)證這段代碼對(duì)程序的運(yùn)行結(jié)果有沒(méi)有影響的。因?yàn)槲覀兺蟿?dòng)代碼,則被過(guò)濾的代碼就不會(huì)執(zhí)行,將它跟原來(lái)的相比,可以看出去掉這段代碼有什么影響條件中斷假如你寫(xiě)了個(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的值,一開(kāi)i=0,即剛進(jìn)入for循環(huán)中,我們?cè)O(shè)置將i改為49并回車(chē),再調(diào)試一次,會(huì)發(fā)現(xiàn)i=50;如下圖當(dāng)然我們也可以直接在代碼里寫(xiě)代碼以達(dá)到這個(gè)目的,代碼如下private void ConditionDebug() for (int i = 0; i ”開(kāi)頭),會(huì)有智能提示,而且命名都是自解釋型。如,我們現(xiàn)在想要知道i的值,可以輸入命名Debug.Print i(也可以簡(jiǎn)單的使用? i),如下圖Immediatewindow還有更強(qiáng)大的用法,計(jì)算方法的返回值(如果有的話(huà))如果有這個(gè)的函數(shù)int MethodValue(int a)if (a=1) return 1;else return 0;我們可以使用Immediate命令? class.Method(args)去調(diào)用這個(gè)方法,如下圖其中p是當(dāng)前類(lèi)的實(shí)例(因?yàn)镸ethodValue是類(lèi)的方法,注意?和表達(dá)式之間要有空格)對(duì)于一些實(shí)時(shí)性很高的程序(如socket)使用 Debug.Write()把錯(cuò)誤寫(xiě)到日志文件中,.Net可以將Debug信息寫(xiě)到你指定的文件中,記住,寫(xiě)進(jìn)出的信息不一定是出錯(cuò)的信息,也可以是你的程序的運(yùn)行的一些重要信息,當(dāng)你調(diào)試過(guò)程中發(fā)現(xiàn)某個(gè)模塊出了問(wèn)題,但是不能決定位置,那你就可以使用這個(gè)方法,如果是一天才出一個(gè)錯(cuò)誤,那你就更要使用這個(gè)方法。實(shí)例篇涉及到WS(WebServices)的調(diào)試在基于WinForm的實(shí)際開(kāi)始開(kāi)發(fā)中,我們往往采用WS用做數(shù)據(jù)的傳遞,我們?cè)谇芭_(tái)獲取收集數(shù)據(jù),通過(guò)WS將數(shù)據(jù)傳遞給后臺(tái),后臺(tái)做相應(yīng)的業(yè)務(wù)邏輯處理后,會(huì)持久到數(shù)據(jù)庫(kù)中。而往往我們又會(huì)在WS中寫(xiě)一些相關(guān)的代碼,如身份驗(yàn)證、日志記錄、提示信息等,怎樣去調(diào)試這些代碼呢。涉及到JavaScript的調(diào)試許多程序員為調(diào)試JavaScript感到困惑不已,因?yàn)闆](méi)有一款很好的調(diào)試工具。一些人喜歡使用FireBug來(lái)調(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),不同的是我們?cè)诓榭丛刂档臅r(shí)候需要注意點(diǎn)。涉及到Ajax的調(diào)試現(xiàn)在ajax已經(jīng)十分的流行,但是隨之而來(lái)的即調(diào)試?yán)щy,大部分初級(jí)程序員不知道如何有效地從前臺(tái)調(diào)試到后臺(tái)代碼,以至出了很多不完善的ajax應(yīng)用。下面以一個(gè)簡(jiǎn)單的實(shí)例來(lái)介紹如何使用Visual Studio調(diào)試JavaScript。實(shí)例是使用Ajax驗(yàn)證用戶(hù)登錄,如果驗(yàn)證通過(guò),則提示“登錄成功”,否則提示“登錄失敗”。下面是主要的代碼,我們使用jQuery來(lái)實(shí)現(xiàn)ajax,并且在后臺(tái)文件中故意出錯(cuò)。正確的用戶(hù)名和密碼是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)我們輸入用戶(hù)名、密碼后,點(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)試是十分簡(jiǎn)單的。(PS:有時(shí)候無(wú)需在前臺(tái)設(shè)置斷點(diǎn)也可直接進(jìn)入后臺(tái)的調(diào)試,如何不行的話(huà),在前臺(tái)html文件或者aspx文件中認(rèn)為有可能出錯(cuò)的地方設(shè)置斷點(diǎn),一步步調(diào)試)一些調(diào)試中出現(xiàn)的常見(jiàn)錯(cuò)誤(會(huì)陸續(xù)更新):1我們調(diào)試到某一句代碼的時(shí)候,突然莫名奇妙的跳出來(lái)了,其實(shí)是剛剛執(zhí)行的這一句話(huà)有異常,我們可以使用trycatch進(jìn)行異常捕獲,看看異常原因是什么,然后做相應(yīng)的處理2在ADO.NET,我們會(huì)使用ds.Merge()

溫馨提示

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

評(píng)論

0/150

提交評(píng)論