摘要:表達(dá)式按或者來(lái)顯示選定變量或者表達(dá)式的值。這也是我最喜歡的一個(gè)功能。使用方式選擇調(diào)用棧中的一楨,點(diǎn)擊按鈕跳到楨要注意的是已經(jīng)被修改的變量不會(huì)被重置,它們會(huì)保留當(dāng)時(shí)的值。
說(shuō)明
本文參考了網(wǎng)上一些debug的教程,又在自己實(shí)踐的基礎(chǔ)上增加和改進(jìn)了很多技巧.以上所有教程都是在debug視圖中,請(qǐng)注意!
條件斷點(diǎn)如果你不知道如何添加斷點(diǎn),只需點(diǎn)擊左邊面板(行號(hào)前面)斷點(diǎn)即被創(chuàng)建。在調(diào)試界面中,“斷點(diǎn)”視圖會(huì)把所有被創(chuàng)建的斷點(diǎn)列出來(lái)。我們可以給它加一個(gè)布爾條件,然后按Ctrl+s保存斷點(diǎn),該斷點(diǎn)會(huì)被激活并且如果布爾條件為真,就會(huì)執(zhí)行該斷點(diǎn),否則將會(huì)跳過(guò)往下執(zhí)行。
異常斷點(diǎn)在斷點(diǎn)視圖中,有一個(gè)J!標(biāo)記按鈕!我們可以使用該按鈕來(lái)添加一個(gè)Java異常斷點(diǎn)。例如,我們想讓程序在遇到空指針異常(NullPointerException)時(shí)進(jìn)入斷點(diǎn),那么我們可以使用該按鈕來(lái)添加一個(gè)異常斷點(diǎn)!.
異常斷點(diǎn)特別適合調(diào)試程序的異常,迅速找到異常拋出的位置
監(jiān)視點(diǎn)這是一個(gè)非常好的功能,當(dāng)選定的屬性訪問(wèn)或修改程序時(shí),程序會(huì)停止執(zhí)行并允許進(jìn)行調(diào)試。在Outline視圖中選擇一個(gè) 類變量 右鍵選擇監(jiān)視點(diǎn),屬性監(jiān)視點(diǎn)將會(huì)被創(chuàng)建,在斷點(diǎn)(Breakpoints)視圖中會(huì)把所有監(jiān)視點(diǎn)用列表的形式顯示出來(lái)。
expressions/表達(dá)式按Ctrl+Shift+D或者Ctrl+Shift+I來(lái)顯示選定變量或者表達(dá)式的值。我們也可以給一個(gè)變量或表達(dá)式添加永久觀察點(diǎn),當(dāng)程序在調(diào)試時(shí),這些觀察點(diǎn)就會(huì)在表達(dá)式視圖(Expression view)中顯示出來(lái)。
修改變量值在調(diào)試過(guò)程中,我們可以修改變量值。先選好一個(gè)變量然后進(jìn)入變量視圖(Variables view),根據(jù)變量類型在其對(duì)應(yīng)的Value列里輸入值即可.
注意:這里只能修改基本類型和String,集合類的還不能直接輸入修改
在Main函數(shù)里面停止執(zhí)行在運(yùn)行/調(diào)試設(shè)置中,編輯配置對(duì)話框中有“Main”這個(gè)選項(xiàng)卡,我們可以勾選“Stop in main”這個(gè)復(fù)選框。如果選中,那么在調(diào)試一個(gè)基于main方法的Java程序時(shí),程序會(huì)在main方法第一行位置便停止執(zhí)行。
并不是在系統(tǒng)屬性中添加環(huán)境變量,我們可以在編輯配置對(duì)話框中很方便地進(jìn)行添加。
這也是我最喜歡的一個(gè)功能。調(diào)試期間,可以重新跳到調(diào)用堆??蚣艿拈_(kāi)始處執(zhí)行,并且變量值也會(huì)回到最初。根據(jù)回檔調(diào)整堆棧的深度,這個(gè)功能的主要用途是所有變量狀態(tài)可以快速回到方法開(kāi)始執(zhí)行時(shí)候的樣子,然后你可以重新進(jìn)行一遍一遍執(zhí)行,這樣就可以在你關(guān)注的地方進(jìn)行多次調(diào)試,但是在執(zhí)行過(guò)程中也會(huì)產(chǎn)生一些副作用,比如插入到數(shù)據(jù)庫(kù)里面的數(shù)據(jù)是無(wú)法刪除的!
單步過(guò)濾當(dāng)我們進(jìn)入(F5)方法的時(shí)候,經(jīng)常會(huì)進(jìn)入jdk自帶的源碼中,我們可能不需要這個(gè)庫(kù),就可以在Perference選項(xiàng)卡頁(yè)面添加一個(gè)過(guò)濾器來(lái)排除這個(gè)包。
進(jìn)入、跳出和返回我把這個(gè)放在最后一點(diǎn),在調(diào)試過(guò)程中,這些是必須要了解(最好掌握)的東西:
F5——進(jìn)入:移動(dòng)到下一個(gè)步驟,如果當(dāng)前行有一個(gè)方法調(diào)用,該控件將會(huì)跳轉(zhuǎn)到被調(diào)用方法的第一行執(zhí)行。
F6——跳出:移動(dòng)到下一行。如果在當(dāng)前行有方法調(diào)用,那么會(huì)直接移動(dòng)到下一行執(zhí)行。不會(huì)進(jìn)入被調(diào)用方法體里面。
F7——返回:從當(dāng)前方法中跳出,繼續(xù)往下執(zhí)行。
F8——移動(dòng)到下一個(gè)斷點(diǎn)處執(zhí)行。
debug時(shí)變量太長(zhǎng)顯示省略號(hào)在debug界面中,右擊variable下面的空白,選擇maxLength,把10000改成0,0代表沒(méi)有限制
遠(yuǎn)程debug遠(yuǎn)程debug可以用來(lái)調(diào)試遠(yuǎn)程服務(wù)器上的代碼,保證你本地代碼和遠(yuǎn)程部署的代碼是一致,就可以通過(guò)這種方式debug服務(wù)器代碼,這個(gè)是java web開(kāi)發(fā)的一大利器,否則定位服務(wù)器問(wèn)題簡(jiǎn)直是災(zāi)難。遠(yuǎn)程debug需要服務(wù)器端啟動(dòng)jvm的時(shí)候做一些開(kāi)啟和端口的配置,具體的配置網(wǎng)上很多,搜一下即可。然后在本地的debug configuration中雙擊添加一個(gè)remote java application,填寫遠(yuǎn)程主機(jī)的host和配置的debug端口,就可以開(kāi)始debug了,如下圖
跳到幀跳到幀是一種重入技巧,在debug時(shí),eclipse可以直接跳到調(diào)用棧中指定的任意楨,并且使JVM在此處重新運(yùn)行。這使你可以重新運(yùn)行你的部分代碼,而不需要為了調(diào)試之前的代碼而重新來(lái)一次。使用方式:選擇調(diào)用棧中的一楨,點(diǎn)擊按鈕“跳到楨”
要注意的是:已經(jīng)被修改的變量不會(huì)被重置,它們會(huì)保留當(dāng)時(shí)的值。
Inspectinspect用來(lái)查看某個(gè)表達(dá)式的之,對(duì)于變量值debug很容查看,但是對(duì)于一個(gè)表達(dá)式的值就不容易查看,還是這句:this.getTradeDetail(uid, itemStr.subString(0,5))
想看getTradeDetail的值,就沒(méi)法想看變量值一樣(雖然這個(gè)很有可能是賦值給一個(gè)變量...),要看這種表達(dá)式值,就需要inspect,具體做法是選中這行表達(dá)式,然后右擊->inspect,或者更方便的快捷鍵組合:ctrl+shift+i,會(huì)彈出如下的展示表達(dá)式結(jié)果的框:
display也是用來(lái)觀察和修改變量or表達(dá)式的,這個(gè)應(yīng)該用的人比較多,在windows->show viewz中打開(kāi)display窗口,可以在display窗口里寫表達(dá)式,然后右擊選擇display運(yùn)行查看結(jié)果或者ctrl+shift+D快捷鍵組合,表達(dá)式可以是程序中一行代碼或者你自己寫的一個(gè)賦值語(yǔ)句來(lái)改變變量值之類的。
邏輯結(jié)構(gòu)主要用來(lái)展示map之類的collection數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)的值的,它只展示存儲(chǔ)值的邏輯部分,而屏蔽了數(shù)據(jù)結(jié)構(gòu)詳細(xì)的內(nèi)部結(jié)構(gòu),更方便我們查看map之類collection結(jié)構(gòu)里存儲(chǔ)的值
在variables上找到修改的變量,有兩種方式進(jìn)行修改值
1.修改list中"aaaa"的值.如圖
第一個(gè)方法,在aaaa的地方修改必須使用return,比如 return "aabbcc" 按ctrl+s進(jìn)行保存
第二個(gè)方法,右擊[2]的位置,選擇change value,在彈出框中輸入return "aabbcc"按ctrl+s進(jìn)行保存,操作如圖:
2.debug時(shí)修改map的值如圖:
第一個(gè)方法和list的類似.如果要修改"111"的值的話,不能用return了,必須使用map的方法進(jìn)行賦值.map.put("aaa","ccccc")按ctrl+s進(jìn)行保存
第二個(gè)方法右擊選擇change value,在彈出框中輸入map.put("aaa","ccccc")按ctrl+s進(jìn)行保存
3.對(duì)象的修改,可以直接修改的直接在下面修改,保存即可.不能修改的就用java表達(dá)式進(jìn)行修改
debug源碼,如果項(xiàng)目工程直接有依賴,可以直接debug到工程源碼,而不用在class文件上調(diào)試,如下圖,NCWEbpub依賴web_webapnew,在debug里配置source把web_webapnew工程加進(jìn)來(lái)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/65251.html
摘要:而程序員和醫(yī)生律師的不同點(diǎn)在于持續(xù)學(xué)習(xí)上。兩個(gè)小問(wèn)題是需要收費(fèi),一年大概刀圖書(shū)都是英文的。的視頻基本都有英文字幕,配合作者的,英語(yǔ)不好的同學(xué)學(xué)習(xí)也沒(méi)有問(wèn)題。英文好的有技術(shù)功底的同學(xué)多發(fā)表一些觀點(diǎn),其他的同學(xué)都 摘要: 行業(yè)發(fā)展得太快,你必須學(xué)習(xí),純靠經(jīng)驗(yàn)積累行不通,技術(shù)淘汰的速度遠(yuǎn)大于你經(jīng)驗(yàn)積累的速度。 非雞湯:不要和程序員談自己的編程歷史,很多的經(jīng)驗(yàn)在今天已經(jīng)不適用了。只要2-3年...
摘要:中國(guó)的行業(yè)的蓬勃發(fā)展,蛋糕之大,讓所有行業(yè)從業(yè)者的收入總體處于行業(yè)前列,可比擬的只有金融行業(yè)一個(gè)不創(chuàng)造財(cái)富,只分配財(cái)富的行業(yè)。每天收到十幾份簡(jiǎn)歷,卻招聘不到合適的人。很多小伙伴冷門專業(yè),普通學(xué)校,畢業(yè)了工作幾年了月薪還是幾千塊,這就是現(xiàn)狀。 ? ? ?? ? ? ?中國(guó)的IT行業(yè)因?yàn)橛腥丝诟?..
摘要:程序員的入門規(guī)劃我該學(xué)習(xí)什么語(yǔ)言這個(gè)問(wèn)題困擾了幾乎所有的程序員,比如應(yīng)用廣好就業(yè),比如入門簡(jiǎn)單,和安卓待遇高,和開(kāi)發(fā)效率高,是萬(wàn)能語(yǔ)言,和前端缺人才等等個(gè)人見(jiàn)解先學(xué)習(xí)難度小,大眾化的編程語(yǔ)言,比如,,,這幾個(gè)學(xué)哪一種其實(shí)差不多,入門以后看自 程序員的入門規(guī)劃 1.我該學(xué)習(xí)什么語(yǔ)言? 這個(gè)問(wèn)題困擾了幾乎所有的程序員,比如java應(yīng)用廣好就業(yè),比如php入門簡(jiǎn)單,ios和安卓待遇高,rub...
摘要:程序員的入門規(guī)劃我該學(xué)習(xí)什么語(yǔ)言這個(gè)問(wèn)題困擾了幾乎所有的程序員,比如應(yīng)用廣好就業(yè),比如入門簡(jiǎn)單,和安卓待遇高,和開(kāi)發(fā)效率高,是萬(wàn)能語(yǔ)言,和前端缺人才等等個(gè)人見(jiàn)解先學(xué)習(xí)難度小,大眾化的編程語(yǔ)言,比如,,,這幾個(gè)學(xué)哪一種其實(shí)差不多,入門以后看自 程序員的入門規(guī)劃 1.我該學(xué)習(xí)什么語(yǔ)言? 這個(gè)問(wèn)題困擾了幾乎所有的程序員,比如java應(yīng)用廣好就業(yè),比如php入門簡(jiǎn)單,ios和安卓待遇高,rub...
摘要:大快搜索數(shù)據(jù)爬蟲(chóng)技術(shù)實(shí)例安裝教學(xué)篇爬蟲(chóng)安裝前準(zhǔn)備工作大快大數(shù)據(jù)平臺(tái)安裝完成等組件安裝啟動(dòng)成功。 大快搜索數(shù)據(jù)爬蟲(chóng)技術(shù)實(shí)例安裝教學(xué)篇 爬蟲(chóng)安裝前準(zhǔn)備工作:大快大數(shù)據(jù)平臺(tái)安裝完成、zookeeper、redis、elasticsearch、mysql等組件安裝啟動(dòng)成功。 1、修改爬蟲(chóng)安裝配置文件(最好在線下修改好后再上傳平臺(tái)) showImg(https://segmentfault.co...
閱讀 3383·2021-11-23 09:51
閱讀 2533·2021-11-09 09:46
閱讀 1544·2019-08-30 15:54
閱讀 3224·2019-08-30 14:22
閱讀 2970·2019-08-29 12:40
閱讀 1685·2019-08-26 10:33
閱讀 1863·2019-08-23 17:09
閱讀 1622·2019-08-23 16:11