天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Eclipse調(diào)試Bug的七種常用技巧

  本文寫給那些像幾年前的我一樣剛剛走出校門,及一些未使用過這些高級些的調(diào)試技巧的人。

  記得剛剛畢業(yè)的時候,自己連斷點也不會打,當(dāng)時還在用JCreate ,就連畢業(yè)設(shè)計也是用 System.out 找 Bug 的,想想真的很笨。開始工作后,一個星期過去了,在一個 1 、 2 百萬行的系統(tǒng)中找 Bug ,我依然在用 System.out ,當(dāng)時最痛苦的就是修改代碼,每次找到疑似 Bug ,就輸出一下,然后重啟(那時也不知道代碼熱替換),直到有一天帶我的導(dǎo)師發(fā)現(xiàn)了這樣笨笨的調(diào)試 Bug ,才讓我第一次認(rèn)識了斷點,也知道了代碼修改完了可以進(jìn)行熱替換,我這個中國教育的半犧牲品才算向美好生活邁進(jìn)了一小步。

  1、 條件斷點

  斷點大家都比較熟悉,在EclipseJava 編輯區(qū)的行頭雙擊就會得到一個斷點,代碼會運行到此處時停止。

條件斷點,顧名思義就是一個有一定條件的斷點,只有滿足了用戶設(shè)置的條件,代碼才會在運行到斷點處時停止。

  在斷點處點擊鼠標(biāo)右鍵,選擇最后一個"BreakpointProperties"

  斷點的屬性界面及各個選項的意思如下圖,

  2、 變量斷點

  斷點不僅能打在語句上,變量也可以接受斷點,

  上圖就是一個變量的打的斷點,在變量的值初始化,或是變量值改變時可以停止,當(dāng)然變量斷點上也是可以加條件的,和上面的介紹的條件斷點的設(shè)置是一樣的。

  3、 方法斷點

  方法斷點就是將斷點打在方法的入口處,

  方法斷點的特別之處在于它可以打在 JDK的源碼里,由于 JDK 在編譯時去掉了調(diào)試信息,所以普通斷點是不能打到里面的,但是方法斷點卻可以,可以通過這種方法查看方法的調(diào)用棧。

  4、 改變變量值

  代碼停在了斷點處,但是傳過來的值不正確,如何修改一下變量值保證代碼繼續(xù)走正確的流程,或是說有一個異常分支老是進(jìn)不去,能不能調(diào)試時改一下條件,看一下異常分支代碼是否正確?

  在Debug 視圖的 Variables 小窗口中,我們可以看到 mDestJarName 變量的值為 " F:/Study/eclipsepro/JarDir/jarHelp.jar "

  我們可以在變量上右鍵,選擇"ChangeValue..." 在彈出的對話框中修改變量的值,

  或是在下面的值查看窗口中修改,保用Ctr+S 保存后,變量值就會變成修改后的新值了。

  5、 重新調(diào)試

  這種調(diào)試的回退不是萬能的,只能在當(dāng)前線程的棧幀中回退,也就說最多只能退回到當(dāng)前線程的調(diào)用的開始處。

  回退時,請在需要回退的線程方法上點右鍵,選擇 "DroptoFrame"

  6、 遠(yuǎn)程調(diào)試

  用于調(diào)試不在本機(jī)上的程序,有兩種方式,

  1、本機(jī)作為客戶端

  2、本機(jī)作為服務(wù)端

  使用遠(yuǎn)程調(diào)試的前提是服務(wù)器端和客戶端的代碼是一致的。

  本機(jī)作為客戶端

  本機(jī)作客戶端比較常用,需要在遠(yuǎn)端的服務(wù)器上的Java程序在啟動時打開遠(yuǎn)程調(diào)試開關(guān),

  服務(wù)器端需要加上虛擬機(jī)參數(shù)

  1.5以前版本(1.5以后也可用):【-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 】

  1.5及以上版本:【 -agentlib:jdwp=transport=dt_socket,server=y,address=8000】

  F:/Study/eclipsepro/screensnapJava -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar screensnap3.jar

  連接時遠(yuǎn)程服務(wù)器時,需要在Eclipse中新建一個遠(yuǎn)程調(diào)試程序

  這里有一個小地方需注意,連接上的時候貌似不能自動切換到Debug視圖,不要以為本機(jī)的調(diào)試程序沒有連接到服務(wù)器端。

  本機(jī)作為服務(wù)端

  同本機(jī)作為客戶端相比,只需要修改一下Connection Type

  這時Eclipse會進(jìn)入到等待連接的狀態(tài)

  連接程序使用如下參數(shù)即可連接本機(jī)服務(wù)器,IP地址請用實現(xiàn)IP替換~~

  【-agentlib:jdwp=transport=dt_socket,suspend=y,address=127.0.0.1:8000】

  F:/Study/eclipsepro/screensnapJava -agentlib:jdwp=transport=dt_socket,suspend=y,address=127.0.0.1:8000 -jar screensnap3.jar

  遠(yuǎn)程調(diào)試時本地的代碼修改可同步到遠(yuǎn)程,但不會寫到遠(yuǎn)程的文件里,也就是說本地修改會在下次啟動遠(yuǎn)程程序時就沒有了,不會影響到下次使用時的遠(yuǎn)程代碼。

  7、異常斷點

  經(jīng)常遇見一些異常,然后程序就退出來了,要找到異常發(fā)生的地方就比較難了,還好可以打一個異常斷點,

  上圖中我們增加了一個NullPointException的異常斷點,當(dāng)異常發(fā)生時,代碼會停在異常發(fā)生處,定位問題時應(yīng)該比較有幫助。

it知識庫Eclipse調(diào)試Bug的七種常用技巧,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 哺乳期妇女挤奶水36d | 国精产品一区二区三区 | 在线观看国产亚洲 | 欧美做真爱欧免费看 | 纯肉无码AV在线看免费看 | 抽插喷S骚爽去了H | 羞羞漫画视频 | 亚洲阿v天堂在线2017 | 久久国产精品人妻中文 | 免费国产久久拍久久爱 | 扒开粉嫩的小缝末成年小美女 | 忘忧草研究院一二三 | 国产精自产拍久久久久久蜜 | 日本高清片免费观看 | 99久久精品久久久 | 甜性涩爱在线看 | 久久精品国产96精品亚洲 | 亚洲.欧美.中文字幕在线观看 | 国产剧果冻传媒星空在线观看 | 伊人网中文字幕 | 亚洲免费在线观看视频 | 成年人视频在线免费看 | 国产啪视频在线播放观看 | 大学生第一次破女在线观看 | 日本乱子人伦在线视频 | 在线亚洲专区中文字幕 | 欧美牲交A欧美牲交 | 美妇教师双飞后菊 | 精品国产mmd在线观看 | 国产午夜精品理论片在线 | 国产成人免费在线 | 精品国产乱码久久久久久免费流畅 | 国产精品久久久久久久A片冻果 | 亚州综人网 | 国产精品 日韩精品 欧美 | 亚洲国产在线综合018 | 高H辣肉办公室 | 国产精品卡1卡2卡三卡四 | 99久久国产综合精品国 | 调教女M屁股撅虐调教 | 美女脱内衣裸身尿口露出来 |