




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.進(jìn)入debug模式(基礎(chǔ)知識(shí)列表)1、設(shè)置斷點(diǎn)2、啟動(dòng)servers端的debug模式3、運(yùn)行程序,在后臺(tái)遇到斷點(diǎn)時(shí),進(jìn)入debug調(diào)試狀態(tài)=作用域 功能 快捷鍵全局 單步返回 F7全局 單步跳過(guò) F6全局 單步跳入 F5全局 單步跳入選擇 Ctrl+F5全局 調(diào)試上次啟動(dòng) F11全局 繼續(xù) F8全局 使用過(guò)濾器單步執(zhí)行 Shift+F5全局 添加/去除斷點(diǎn) Ctrl+Shift+B全局 顯示 Ctrl+D全局 運(yùn)行上次啟動(dòng) Ctrl+F11全局 運(yùn)行至行 Ctrl+R全局 執(zhí)行 Ctrl+U=1.Step Into (also F5) 跳入2.Step Over (also F6) 跳過(guò)
2、3.Step Return (also F7) 執(zhí)行完當(dāng)前method,然后return跳出此method4.step Filter 逐步過(guò)濾 一直執(zhí)行直到遇到未經(jīng)過(guò)濾的位置或斷點(diǎn)(設(shè)置Filter:window-preferences-java-Debug-step Filtering)5.resume 重新開始執(zhí)行debug,一直運(yùn)行直到遇到breakpoint。 例如 :A和B兩個(gè)斷點(diǎn),debug過(guò)程中發(fā)現(xiàn)A斷點(diǎn)已經(jīng)無(wú)用,去除A斷點(diǎn),運(yùn)行resume就會(huì)跳過(guò)A直接到達(dá)B斷點(diǎn)。6.hit count 設(shè)置執(zhí)行次數(shù) 適合程序中的for循環(huán)(設(shè)置 breakpoint view-右鍵hit c
3、ount)7.inspect 檢查 運(yùn)算。執(zhí)行一個(gè)表達(dá)式顯示執(zhí)行值8.watch 實(shí)時(shí)地監(jiān)視對(duì)象、方法或變量的變化9.我們常說(shuō)的斷點(diǎn)(breakpoints)是指line breakpoints,除了line breakpoints,還有其他的斷點(diǎn)類型:field(watchpoint)breakpoint,method breakpoint ,exception breakpoint.10.field breakpoint 也叫watchpoint(監(jiān)視點(diǎn)) 當(dāng)成員變量被讀取或修改時(shí)暫掛11.添加method breakpoint 進(jìn)入/離開此方法時(shí)暫掛(Run-method breakpo
4、int)12.添加Exception breakpoint 捕抓到Execption時(shí)暫掛(待續(xù).)斷點(diǎn)屬性: 1.hit count 執(zhí)行多少次數(shù)后暫掛 用于循環(huán) 2.enable condition 遇到符合你輸入條件(為ture改變時(shí))就暫掛 3.suspend thread 多線程時(shí)暫掛此線程 4.suspend VM 暫掛虛擬機(jī)13.variables 視圖里的變量可以改變變量值,在variables 視圖選擇變量點(diǎn)擊右鍵-change value.一次來(lái)進(jìn)行快速調(diào)試。14.debug 過(guò)程中修改了某些code后-save&build-resume-重新暫掛于斷點(diǎn)15.resume
5、當(dāng)debug調(diào)試跑出異常時(shí),運(yùn)行resume,重新從斷點(diǎn)開始調(diào)試16.如果一行有很多方法,當(dāng)?shù)谝淮伟碏5鍵就跳入這一行第一個(gè)方法,F6一步一步調(diào)試,F7跳出這方法.當(dāng)?shù)诙伟碏5鍵就跳入這一行第二個(gè)方法,F6一步一步調(diào)試,F7跳出這方法.以此類推.想進(jìn)入這一行第幾個(gè)方法,就按幾次F5和F7.2.基礎(chǔ)知識(shí)篇(包含部分實(shí)踐)Eclipse 調(diào)試器本身是 Eclipse 內(nèi)的一個(gè)標(biāo)準(zhǔn)插件集。Eclipse 還有一個(gè)特殊的 Debug 視圖,用于在工作臺(tái)中管理程序的調(diào)試或運(yùn)行。它可以顯示每個(gè)調(diào)試目標(biāo)中掛起線程的堆棧框架。程序中的每個(gè)線程都顯示為樹中的一個(gè)節(jié)點(diǎn),Debug 視圖顯示了每個(gè)運(yùn)行目標(biāo)的進(jìn)程。
6、如果某個(gè)線程處于掛起狀態(tài),其堆??蚣茱@示為子元素。在使用 Eclipse 調(diào)試器之前,假定您已經(jīng)安裝了合適的 Java SDK/JRE(我推薦使用 Java VM V1.4)和 Eclipse Platform SDK V3.3,而且兩者的運(yùn)行都沒問(wèn)題。一般來(lái)說(shuō),先用 Eclipse 示例測(cè)試一下調(diào)試選項(xiàng)比較好。如果想開發(fā)和調(diào)試 C/C+ 項(xiàng)目,還需要獲得并安裝 C/C+ 開發(fā)工具(C/C+ Development Tools,CDT)。關(guān)于 Java SDK/JRE、Eclipse 平臺(tái)和示例以及 CDT,請(qǐng)參閱參考資源。 圖 1 顯示了 Debug 透視圖的一般視圖。圖 1. Eclips
7、e Debug 透視圖的一般視圖調(diào)試 Java 語(yǔ)言程序在可以調(diào)試項(xiàng)目前,需要干凈地編譯和運(yùn)行代碼。首先,需要為應(yīng)用程序創(chuàng)建一個(gè)運(yùn)行配置,確保應(yīng)用程序可以正確啟動(dòng)。然后,需要通過(guò)Run Debug菜單以類似的方式設(shè)置調(diào)試配置。還需要選擇一個(gè)類,將它作為調(diào)試的主 Java 類來(lái)使用(請(qǐng)參見圖 2)。您可以按照自己的意愿為單個(gè)項(xiàng)目設(shè)置多個(gè)調(diào)試配置。當(dāng)調(diào)試器啟動(dòng)時(shí)(從Run Debug),會(huì)在一個(gè)新的窗口中打開,這時(shí)就可以開始調(diào)試了。圖 2. 在調(diào)試配置中設(shè)置項(xiàng)目的主 Java 類接下來(lái),將討論 Eclipse 中的一些常用調(diào)試實(shí)踐。設(shè)置斷點(diǎn)在 啟動(dòng)應(yīng)用程序進(jìn)行調(diào)試時(shí),Eclipse 會(huì)自動(dòng)切換到
8、Debug 透視圖。毫無(wú)疑問(wèn),最常見的調(diào)試步驟是設(shè)置斷點(diǎn),這樣可以檢查條件語(yǔ)句或循環(huán)內(nèi)的變量和值。要在 Java 透視圖的 Package Explorer 視圖中設(shè)置斷點(diǎn),雙擊選擇的源代碼文件,在一個(gè)編輯器中打開它。遍歷代碼,將鼠標(biāo)放在可疑代碼一行的標(biāo)記欄(在編輯器區(qū)域的左側(cè))上,雙擊即可設(shè)置斷點(diǎn)。圖 3. 編輯器左側(cè)看到的兩個(gè)斷點(diǎn)現(xiàn)在,從Run Debug菜單啟動(dòng)調(diào)試會(huì)話。最好不要將多條語(yǔ)句放在一行上,因?yàn)闀?huì)無(wú)法單步執(zhí)行,也不能為同一行上的多條語(yǔ)句設(shè)置行斷點(diǎn)。圖 4. 視圖中左側(cè)空白處的箭頭指示當(dāng)前正在執(zhí)行的行還有一個(gè)方便的斷點(diǎn)視圖來(lái)管理所有的斷點(diǎn)。圖 5. 斷點(diǎn)視圖條件斷點(diǎn)一 旦了解到錯(cuò)
9、誤發(fā)生的位置,您可能想要知道在程序崩潰之前,程序在做什么。一種方法就是單步執(zhí)行程序的每行語(yǔ)句。一次執(zhí)行一行,直到運(yùn)行到可疑的那行代碼。 有時(shí),最好只運(yùn)行一段代碼,在可疑代碼處停止運(yùn)行,在這個(gè)位置檢查數(shù)據(jù)。還可以聲明條件斷點(diǎn),它在表達(dá)式值發(fā)生變化時(shí)觸發(fā)(請(qǐng)參見圖 6)。除此之外,在輸入條件表達(dá)式時(shí),也可以使用代碼幫助。圖 6. 設(shè)置條件斷點(diǎn)觸發(fā)器計(jì)算表達(dá)式的值為了在 Debug 透視圖的編輯器中計(jì)算表達(dá)式的值,選擇設(shè)置了斷點(diǎn)的那行代碼,在上下文菜單中,通過(guò)Ctrl+Shift+I或右鍵單擊您感興趣的變量(參見圖 7)選擇 Inspect 選項(xiàng)。在當(dāng)前堆??蚣艿纳舷挛闹袝?huì)計(jì)算表達(dá)式的值,在 Dis
10、play 窗口的 Expressions 視圖中會(huì)顯示結(jié)果。圖 7. 通過(guò) Inspect 選項(xiàng)計(jì)算表達(dá)式的值剪切活動(dòng)代碼Display 視圖允許您以剪切類型的方式處理活動(dòng)代碼(參見圖 8)。要處理一個(gè)變量,在 Display 視圖中輸入變量名即可,視圖會(huì)提示您一個(gè)熟悉的內(nèi)容助手。圖 8. Display 視圖當(dāng) 調(diào)試器停止在一個(gè)斷點(diǎn)處時(shí),您可以從 Debug 視圖工具欄(參見圖 9)中選擇 Step Over 選項(xiàng),繼續(xù)調(diào)試器會(huì)話。該操作會(huì)越過(guò)高亮顯示的那行代碼,繼續(xù)執(zhí)行同一方法中的下一行代碼(或者繼續(xù)執(zhí)行調(diào)用當(dāng)前方法的那個(gè)方法的下一行代碼)。執(zhí)行上一 步后發(fā)生改變的變量會(huì)用某種顏色高亮顯示
11、(默認(rèn)是黃色)。顏色可以在調(diào)試首選項(xiàng)頁(yè)面中改變。圖 9. 改變顏色的變量要在 Debug 視圖中掛起執(zhí)行線程,選擇一個(gè)運(yùn)行線程,單擊 Debug 視圖工具欄中的Suspend。 該線程的當(dāng)前調(diào)用堆棧就會(huì)顯示出來(lái),當(dāng)前執(zhí)行的代碼行就會(huì)在 Debug 透視圖中的編輯器中高亮顯示。掛起一個(gè)線程時(shí),將鼠標(biāo)放在 Java 編輯器中的變量上,該變量的值就會(huì)在一個(gè)小的懸停窗口中顯示出來(lái)。此時(shí),該線程的頂部堆棧框架也會(huì)自動(dòng)選中,其中的可視變量也會(huì)在 Variables 視圖中顯示出來(lái)。您可以通過(guò)單擊 Variables 視圖中合適的變量名來(lái)檢查變量。熱交換錯(cuò)誤修正:動(dòng)態(tài)代碼修正如 果運(yùn)行的是 Java 虛擬機(jī)
12、(Java Virtual Machine,JVM)V1.4 或更高的版本,Eclipse 支持一個(gè)叫做熱交換錯(cuò)誤修正(Hotswap Bug Fixing)的功能,JVM V1.3 或更低的版本不支持該功能。該功能允許在調(diào)試器會(huì)話中改變?cè)创a,這比退出應(yīng)用程序、更改代碼、重新編譯、然后啟動(dòng)另一個(gè)調(diào)試會(huì)話更好。要利用該功能,在 編輯器中更改代碼后重新調(diào)試即可。由于 JVM V1.4 與 Java 平臺(tái)調(diào)試器架構(gòu)(Java Platform Debugger Architecture,JPDA)兼容,所以才有可能具備該功能。JPDA 實(shí)現(xiàn)了在運(yùn)行的應(yīng)用程序中替換經(jīng)過(guò)修改的代碼的功能。如果應(yīng)用程序
13、啟動(dòng)時(shí)間較長(zhǎng)或執(zhí)行到程序失敗的地方時(shí)間很長(zhǎng),那么這一點(diǎn)特別有用。如果在完成調(diào)試時(shí),程序還沒有全部執(zhí)行一遍,在 Debug 視圖的上下文菜單中選擇 Terminate 選項(xiàng)。容易犯的一個(gè)錯(cuò)誤是在調(diào)試器會(huì)話中使用 Debug 或 Run,而不是 Resume。這樣做會(huì)啟動(dòng)另一個(gè)調(diào)試器會(huì)話,而不是繼續(xù)當(dāng)前會(huì)話。3.DEBUG調(diào)試方式(方法匯總篇)1、 條件斷點(diǎn)斷點(diǎn)處點(diǎn)擊鼠標(biāo)右鍵 - 選擇Breakpoint Properties勾選Enabled 啟動(dòng)斷點(diǎn)勾選Hit Count 輸入框?qū)戇\(yùn)行次數(shù)勾選Enable Condition 輸入框?qū)懲V箺l件2、 變量斷點(diǎn)變量也可以接受斷點(diǎn),在變量的值初始化,
14、或是變量值改變時(shí)可以停止可以加條件,和上面條件斷點(diǎn)的設(shè)置是一樣的3、 方法斷點(diǎn)方法斷點(diǎn)的特別之處在于它可以打在 JDK的源碼里由于 JDK 在編譯時(shí)去掉了調(diào)試信息,所以普通斷點(diǎn)是不能打到里面的但是方法斷點(diǎn)卻可以,可以通過(guò)這種方法查看方法的調(diào)用棧4、 改變變量值在Debug 視圖的 Variables 小窗口中,可以在變量上右鍵,選擇Change Value. 在彈出的對(duì)話框中修改變量的值或是在下面的值查看窗口中修改,Ctr+S 保存5、 重新調(diào)試這種調(diào)試的回退不是萬(wàn)能的,最多只能退回到當(dāng)前線程的調(diào)用的開始處回退時(shí),請(qǐng)?jiān)谛枰赝说木€程方法上點(diǎn)右鍵,選擇 Drop to Frame6、 遠(yuǎn)程調(diào)試用
15、于調(diào)試不在本機(jī)上的程序連接時(shí)遠(yuǎn)程服務(wù)器時(shí),需要在Eclipse中新建一個(gè)遠(yuǎn)程調(diào)試程序7、異常斷點(diǎn)要找到異常發(fā)生的地方比較困難,還好可以打一個(gè)異常斷點(diǎn)Breakpoints工具框頂右第四使用增加Exception異常斷點(diǎn)當(dāng)異常發(fā)生時(shí),代碼會(huì)停在異常發(fā)生處,定位問(wèn)題時(shí)應(yīng)該比較有幫助4.各種斷點(diǎn)設(shè)置方法(實(shí)踐篇)大家肯定都用過(guò)Eclipse的調(diào)試的功能,在調(diào)試的過(guò)程中自然也無(wú)法避免要使用斷點(diǎn)(breakpoint),但不知是否對(duì)Eclipse中各類斷點(diǎn)都有所了解。本篇圖文并茂地介紹了Eclipse中全部類型的斷點(diǎn),及其設(shè)置,希望對(duì)大家有所幫助。(2011.11.20)1. 示例程序Breakpoin
16、tDemo是一個(gè)臆造的應(yīng)用程序,只是為了便于講解Eclipse中各類斷點(diǎn)的使用罷了。其代碼如下圖所示,BreakpointDemo主要包含兩個(gè)方法:1setValue,該方法根據(jù)指定的次數(shù)(count),對(duì)成員變量value進(jìn)行賦值,值的范圍為0-9的隨機(jī)整數(shù)。2printValue,該方法會(huì)調(diào)用setValue()對(duì)value進(jìn)行賦值,并打印出value的值;但,如果value能被3整除,那么就會(huì)拋出IllegalArgumentException異常。2. Line BreakpointLine Breakpoin是最簡(jiǎn)單的Eclipse斷點(diǎn),只要雙擊某行代碼對(duì)應(yīng)的左側(cè)欄,就對(duì)該行設(shè)置上斷
17、點(diǎn)。此處,對(duì)第20行代碼設(shè)置上Line Breakpoint,如下圖所示,可以為L(zhǎng)ine Breakpoint設(shè)置一個(gè)條件,那么當(dāng)程序運(yùn)行到該斷點(diǎn)時(shí),只有滿足設(shè)定的條件,才會(huì)被中斷。右鍵點(diǎn)擊第20行的斷點(diǎn),選擇BreakpointProperties.在彈出的屬性對(duì)話框中,勾選上Conditional,然后在文本框中輸入count % 2 = 0。該條件表示,當(dāng)程序運(yùn)行到第20行時(shí),只有當(dāng)count為偶數(shù)時(shí),程序才會(huì)被中斷。細(xì)心地話,你會(huì)發(fā)現(xiàn)該斷點(diǎn)的圖標(biāo)發(fā)生了改變,多了一個(gè)問(wèn)號(hào)。3. WatchpointLine Breakpoint關(guān)注于程序運(yùn)行的過(guò)程,大家也常把使用這種斷點(diǎn)的調(diào)試稱為單步調(diào)
18、試。但有時(shí)候,我們對(duì)程序的運(yùn)行過(guò)程不太了解,可能也不太關(guān)心,不能確定在什么地方設(shè)置斷點(diǎn)比較合適,而可能比較關(guān)注某個(gè)關(guān)鍵變量的變化或使用。此時(shí),就可以為該變量設(shè)置一種特殊的斷點(diǎn)-Watchpoint。在此示例,我們最關(guān)心的就是成員變量value的值,那么就可以為它設(shè)置一個(gè)Watchpoint,雙擊第9行代碼對(duì)應(yīng)的左側(cè)欄就可以了。使用在2中所提及的方法,查看該斷點(diǎn)的屬性,默認(rèn)地,當(dāng)該變量被訪問(wèn)或它的值被修改時(shí),程序都會(huì)被中斷。但在本示例中,只希望當(dāng)對(duì)value的值進(jìn)行修改時(shí)程序才需要被中斷,所以取消對(duì)Access的勾選。這時(shí),我們會(huì)發(fā)現(xiàn)原來(lái)的Watchpoin圖標(biāo)也有變化了。4. Method B
19、reakpoint與關(guān)注對(duì)某個(gè)變量的訪問(wèn)與修改一樣,我們也可以關(guān)注程序?qū)δ硞€(gè)方法的調(diào)用情況,即,可以設(shè)置Method Breakpoint。在此處,設(shè)置針對(duì)方法setValue的Method Breakpoint。同理,雙擊第11行代碼對(duì)應(yīng)的左側(cè)欄即可。仍然要查看該斷點(diǎn)的屬性。默認(rèn)地,只勾選了Entry,而沒有勾選Exit。這表示,當(dāng)剛進(jìn)入該方法(調(diào)用開始)時(shí),程序會(huì)被中斷;而,離開該方法(調(diào)用結(jié)束)時(shí),程序并不會(huì)被中斷。在本示例中,需要同時(shí)勾選上Exit。點(diǎn)擊OK之后,可以看到該斷點(diǎn)的圖標(biāo)也有所改變。根據(jù)這里的設(shè)置,當(dāng)程序運(yùn)行到第20行后會(huì)在第12行被中斷,盡管這里沒有顯式的斷點(diǎn),但這就是setValue()方法的入口(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 娛樂行業(yè)演出事故與賠償處理協(xié)議
- 2024-2025學(xué)年高二數(shù)學(xué)湘教版選擇性必修第二冊(cè)教學(xué)課件 第1章-1.2 導(dǎo)數(shù)的運(yùn)算(第1課時(shí) 幾個(gè)基本函數(shù)的導(dǎo)數(shù))
- 《電工技術(shù)-王殿賓》部分習(xí)題參考答案
- 倉(cāng)儲(chǔ)物流服務(wù)外包合同協(xié)議
- 國(guó)際貿(mào)易獨(dú)家代理協(xié)議書
- 光的反射與折射原理:初中物理教案
- 商鋪?zhàn)赓U臨時(shí)協(xié)議
- 建設(shè)工程內(nèi)部承包合同書
- 安全合同和施工合同
- 手房轉(zhuǎn)讓協(xié)議合同
- 電梯日常維護(hù)保養(yǎng)流程與技巧培訓(xùn)
- JJF 2210-2025取水計(jì)量數(shù)據(jù)質(zhì)量控制技術(shù)規(guī)范
- 第22課《陳涉世家》課件(共71張)
- 蒙古族文化課件
- 簡(jiǎn)明燒傷健康量表
- 傳染病布氏菌病 課件
- 商業(yè)廣告設(shè)計(jì)課件
- 教會(huì)行政管理學(xué)課程教案
- SJG 44-2018 深圳市公共建筑節(jié)能設(shè)計(jì)規(guī)范-高清現(xiàn)行
- 2022年高考(全國(guó)甲卷)語(yǔ)文仿真模擬卷【含答案】
- _重大事故后果分析(精)
評(píng)論
0/150
提交評(píng)論