Eclipse設(shè)置斷點調(diào)試的方法
作為開發(fā)人員,掌握開發(fā)環(huán)境下的調(diào)試技巧十分有必要。去年就想把關(guān)于Eclipse斷點調(diào)試總結(jié)下了,由于對時間的掌控程度仍需極大提高,結(jié)果拖到今年才寫了此篇博文難過。關(guān)于java調(diào)試技術(shù)還有很多,如Java Debug Interface等,依據(jù)具體項目的需要,還有很多值得去研究和學(xué)習(xí)的。該博文僅就Eclipse斷點調(diào)試技巧做下總結(jié),不足夠的地方還請大牛們指點。
1 Debug視圖
1.1 線程堆棧視圖
線程堆棧視圖表示當(dāng)前線程的堆棧,從中可以看出在運行哪些代碼,并且整個調(diào)用過程,以及代碼行號。分別介紹一下這幾個按鈕的含義。從左至右分別為:
1.表示當(dāng)前實現(xiàn)繼續(xù)運行直到下一個斷點,快捷鍵為F8。
2.表示打斷整個進程
3.表示進入當(dāng)前方法,快捷鍵為F5。
4.表示運行下一行代碼,快捷鍵為F6。
5.表示退出當(dāng)前方法,返回到調(diào)用層,快捷鍵為F7。
6、表示返回當(dāng)前線程堆棧的起始處開始執(zhí)行。
1.2 變量視圖
1.為變量名視圖,顯示當(dāng)前代碼行中所有可以訪問的實例變量和局部變量
2.顯示所有的變量值
3.可以通過該窗口來改變變量值
1.3 斷點視圖
1.顯示所有斷點
2. 將當(dāng)前窗口1中選中的端口失效,再次點擊啟用。
3.異常斷點
經(jīng)常遇見一些異常,然后程序就退出來了,要找到異常發(fā)生的地方就比較難了,還好可以打一個異常斷點。到了異常的地方,當(dāng)前線程就掛起。
1.4 表達式視圖
表達式視圖是Debug過程中較為常用的一個視圖,可以對自己的感興趣的一些變量進行觀察,也可以增加一些自己的表達式,也可以查看一行代碼的運行結(jié)果。1.表達式2. 點擊此可以新增一個表達式。
2 斷點種類
2.1 方法斷點
斷點大家都比較熟悉,在Eclipse Java 編輯區(qū)的行頭雙擊就會得到一個斷點,代碼會運行到此處時停止。方法斷點是打在方法的入口處。
方法斷點的特別之處在于它可以打在 JDK的源碼里,由于 JDK 在編譯時去掉了調(diào)試信息,所以普通斷點是不能打到里面的,但是方法斷點卻可以,可以通過這種方法查看方法的調(diào)用棧。
2.2 條件斷點
條件斷點,顧名思義就是一個有一定條件的斷點,只有滿足了用戶設(shè)置的條件,代碼才會在運行到斷點處時停止。
在斷點處點擊鼠標右鍵,選擇最后一個"Breakpoint Properties"
斷點屬性中有三個選擇,啟用“Enable”,Hit Count和Conditional中依據(jù)我們的需要來選擇。
1)Hit Count 是指定斷點處的代碼段運行多少次,最典型的就是循環(huán),如果要讓一個循環(huán)執(zhí)行10次就線程掛起,則指定Hit Count值為10,那么當(dāng)前的循環(huán)執(zhí)行到第九次的時候就會掛掉。
2)Conditional,顧名思義,就是條件判斷,例如我們需要循環(huán)變量i==10時,線程掛起,則條件設(shè)定為i==10,選擇Suspend when "true"。
那如果上面的Hit Count和Conditional都選擇的話,如果表達式和值設(shè)置不合理則會實效。如果選擇Suspend when value changes,那么可能在Conditional在變量值發(fā)生改變的時候就掛起。
2.3 變量斷點
斷點不僅能打在語句上,變量也可以接受斷點,
上圖就是一個變量的打的斷點,在變量的值初始化,或是變量值改變時可以停止,當(dāng)然變量斷點上也是可以加條件的,和上面的介紹的條件斷點的設(shè)置是一樣的。呵呵,這部分我沒去實踐,找不到在哪里設(shè)置~
2.4 修改變量值
修改變量值的情況適用于代碼停在斷點處,但是傳過來的值不正確,那么可以通過修改這個變量值,保證代碼走正確的流程;或者是說有一個異常分支老是進不去,能不能調(diào)試時改一下條件,看一下異常分支代碼是否正確。
在Debug 視圖的 Variables 小窗口中,我們可以在變量上右鍵,選擇"Change Value..." 在彈出的對話框中修改變量的值。
或是在下面的值查看窗口中修改,保用Ctr+S 保存后,變量值就會變成修改后的新值了。
2.5 重新調(diào)試
這種調(diào)試的回退不是萬能的,只能在當(dāng)前線程的棧幀中回退,也就說最多只能退回到當(dāng)前線程的調(diào)用的開始處?;赝藭r,請在需要回退的線程方法上點右鍵,選擇 "Drop to Frame"
關(guān)于斷點調(diào)試,還有異常斷點等,已在Dubug視圖中提過,還有遠程調(diào)試的。因為自己沒試過,所以期待下次的博文。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于springboot i18n國際化后臺多種語言設(shè)置的方式
這篇文章主要介紹了基于springboot i18n國際化后臺多種語言設(shè)置的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06數(shù)據(jù)結(jié)構(gòu)與算法之并查集(不相交集合)
并查集是一種挺高效的數(shù)據(jù)結(jié)構(gòu)。實現(xiàn)簡單,只是所有元素統(tǒng)一遵從一個規(guī)律所以讓辦事情的效率高效起來。這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)與算法——并查集(不相交集合),需要的朋友可以參考下2019-11-11spring batch使用reader讀數(shù)據(jù)的內(nèi)存容量問題詳解
這篇文章主要介紹了spring batch使用reader讀數(shù)據(jù)的內(nèi)存容量問題詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07spring定時任務(wù)執(zhí)行兩次及tomcat部署緩慢問題的解決方法
這篇文章主要給大家介紹了關(guān)于spring定時任務(wù)執(zhí)行兩次及tomcat部署緩慢問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Java中的static關(guān)鍵字用法總結(jié)
這篇文章主要介紹了Java中的static關(guān)鍵字用法總結(jié),static是Java50個關(guān)鍵字之一,static關(guān)鍵字可以用來修飾代碼塊表示靜態(tài)代碼塊,修飾成員變量表示全局靜態(tài)成員變量,修飾方法表示靜態(tài)方法,需要的朋友可以參考下2023-11-11