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