日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Eclipse调试Bug的七种常用技巧(转)

發(fā)布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eclipse调试Bug的七种常用技巧(转) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
注意事項及小結(jié): (1)Line Breakpoint:
如果設(shè)置Conditional,監(jiān)控的變量需要比當(dāng)前行高一級block,譬如for(int i=0;i<20;i++)中的i,for循環(huán)內(nèi)部可以對i設(shè)置條件 (2)Java Exception Breakpoint的監(jiān)控范圍是Class,不需要指定行,在Breakpoints面板右側(cè)上的圖標(biāo)為J! (3)Watchpoint:針對字段
(3)Method Breakpoint:與將Line Breakpoint設(shè)在方法中的第一行相同 大家肯定都用過Eclipse的調(diào)試的功能,在調(diào)試的過程中自然也無法避免要使用斷點(breakpoint),但不知是否對Eclipse中各類斷點都有所了解。本篇圖文并茂地介紹了Eclipse中全部類型的斷點,及其設(shè)置,希望對大家有所幫助。(2011.11.20)

1. 示例程序
BreakpointDemo是一個臆造的應(yīng)用程序,只是為了便于講解Eclipse中各類斷點的使用罷了。其代碼如下圖所示,

BreakpointDemo主要包含兩個方法:
[1]setValue,該方法根據(jù)指定的次數(shù)(count),對成員變量value進(jìn)行賦值,值的范圍為0-9的隨機(jī)整數(shù)。
[2]printValue,該方法會調(diào)用setValue()對value進(jìn)行賦值,并打印出value的值;但,如果value能被3整除,那么就會拋出IllegalArgumentException異常。

2. Line Breakpoint
Line Breakpoin是最簡單的Eclipse斷點,只要雙擊某行代碼對應(yīng)的左側(cè)欄,就對該行設(shè)置上斷點。此處,對第20行代碼設(shè)置上Line Breakpoint,如下圖所示,

可以為Line Breakpoint設(shè)置一個條件,那么當(dāng)程序運(yùn)行到該斷點時,只有滿足設(shè)定的條件,才會被中斷。右鍵點擊第20行的斷點,選擇"Breakpoint Properties..."

在彈出的屬性對話框中,勾選上"Conditional",然后在文本框中輸入"count % 2 == 0"。

該條件表示,當(dāng)程序運(yùn)行到第20行時,只有當(dāng)count為偶數(shù)時,程序才會被中斷。細(xì)心地話,你會發(fā)現(xiàn)該斷點的圖標(biāo)發(fā)生了改變,多了一個問號。


3. Watchpoint
Line Breakpoint關(guān)注于程序運(yùn)行的"過程",大家也常把使用這種斷點的調(diào)試稱為單步調(diào)試。但有時候,我們對程序的運(yùn)行過程不太了解,可能也不太關(guān)心,不能確定在什么地方設(shè)置斷點比較合適,而可能比較關(guān)注某個關(guān)鍵變量的變化或使用。此時,就可以為該變量設(shè)置一種特殊的斷點--Watchpoint。在此示例,我們最關(guān)心的就是成員變量value的值,那么就可以為它設(shè)置一個Watchpoint,雙擊第9行代碼對應(yīng)的左側(cè)欄就可以了。

使用在2中所提及的方法,查看該斷點的屬性,

默認(rèn)地,當(dāng)該變量被訪問或它的值被修改時,程序都會被中斷。但在本示例中,只希望當(dāng)對value的值進(jìn)行修改時程序才需要被中斷,所以取消對"Access"的勾選。

這時,我們會發(fā)現(xiàn)原來的Watchpoin圖標(biāo)也有變化了。


4. Method Breakpoint
與關(guān)注對某個變量的訪問與修改一樣,我們也可以關(guān)注程序?qū)δ硞€方法的調(diào)用情況,即,可以設(shè)置Method Breakpoint。在此處,設(shè)置針對方法setValue的Method Breakpoint。同理,雙擊第11行代碼對應(yīng)的左側(cè)欄即可。

仍然要查看該斷點的屬性。默認(rèn)地,只勾選了"Entry",而沒有勾選"Exit"。

這表示,當(dāng)剛進(jìn)入該方法(調(diào)用開始)時,程序會被中斷;而離開該方法(調(diào)用結(jié)束)時,程序并不會被中斷。在本示例中,需要同時勾選上"Exit"。

點擊OK之后,可以看到該斷點的圖標(biāo)也有所改變。

根據(jù)這里的設(shè)置,當(dāng)程序運(yùn)行到第20行后會在第12行被中斷,盡管這里沒有顯式的斷點,但這就是setValue()方法的入口(Entry)。必須注意地是,程序在運(yùn)行到第16行時不會被中斷,盡管它看起來像是setValue()方法的出口(Exit)。實際上,程序會在第17行被中斷,這里才是setValue()調(diào)用結(jié)束的地方。

5. Exception Breakpoint
如果,我們期望某個特定異常發(fā)生時程序能夠被中斷,以方便查看當(dāng)時程序所處的狀態(tài)。通過設(shè)置Exception Breakpoint就能達(dá)到這一目標(biāo)。本示例故意在第23行拋出了IllegalArgumentException異常,我們期望程序運(yùn)行到此處時會被中斷。但我們不直接為此行代碼設(shè)置Line Breakpoint,而是為IllegalArgumentException設(shè)置Exception Breakpoint。設(shè)置Exception Breakpoint的方法與其它類型斷點都不同,它不能通過雙擊左側(cè)欄的方式在代碼編輯器上直接進(jìn)行設(shè)置。點擊Breakpoints視圖右上角形如Ji的圖標(biāo),

會彈出如下所示的對話框,

在其中選中IllegalArgumentException,并點擊OK,這時一個Exception Breakpoint就設(shè)置好了。
當(dāng)value為3的倍數(shù)時,程序會在第23行被中斷,這時我們就能使用調(diào)試器來看看value具體是等于0,3或6。
6. Class Load Breakpoint
還有一種大家平時可能不太用的斷點--Class Load Breakpoint,即當(dāng)某個類被加載時,通過該斷點可以中斷程序。


小結(jié)
上述的Eclipse斷點,我們在現(xiàn)實工作中肯定都有意或無意地使用過其中的幾種,只是不一定十分了解內(nèi)情罷了。使用好Eclipse的各種斷點,可以把很好地幫助我們分析程序,定位問題。
http://www.blogjava.net/jiangshachina/archive/2011/11/20/364367.html? 摘要:本篇文章主要介紹了Eclipse在調(diào)試代碼時用到的幾種調(diào)試方法,并附于截圖方便理解。

  本文寫給那些像幾年前的我一樣剛剛走出校門,及一些未使用過這些高級些的調(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ū)的行頭雙擊就會得到一個斷點,代碼會運(yùn)行到此處時停止。

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

  在斷點處點擊鼠標(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)該比較有幫助。

?

http://kb.cnblogs.com/page/91820/

?

?

總結(jié)

以上是生活随笔為你收集整理的Eclipse调试Bug的七种常用技巧(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: jizz亚洲女人高潮大叫 | 91午夜交换视频 | 国内一区二区三区 | 欧美粗暴jizz性欧美20 | 亚洲美女网站 | 日韩精品v | 成人图片小说 | 日本泡妞xxxx免费视频软件 | 少妇精品无码一区二区免费视频 | 天天摸日日摸狠狠添 | 欧美老熟妇一区二区 | 人人干人人草 | 中文字幕第一页在线 | 日韩成人精品 | 日韩欧美在线视频 | 嫩模啪啪 | 91大神在线观看视频 | 让男按摩师摸好爽视频 | 美国少妇在线观看免费 | 强开小嫩苞一区二区三区网站 | 深夜视频在线观看免费 | 青青草综合视频 | 天堂资源中文 | 欧美日本道 | 午夜精品久久久久久久爽 | 国产精自产拍久久久久久蜜 | 少妇一级视频 | 不卡视频一区二区 | 丁香免费视频 | 国产一区二区不卡视频 | 免费在线观看小视频 | 欧美极品视频在线观看 | 曰韩毛片 | 久久6| 国产激情在线 | 人人草人人干 | 国产在线成人精品午夜 | 欧美中文在线观看 | 色葡萄影院 | 日本h片在线观看 | 男人天堂1024| 日日夜夜国产 | 国产伦精品一区二区三区免.费 | 女女互慰揉小黄文 | 国产又粗又深又猛又爽又在线观看 | 美女又爽又黄免费 | 亚洲视频小说 | 国产性猛交╳xxx乱大交一区 | 99久久久成人国产精品 | 久久久久麻豆v国产精华液好用吗 | 日日爽夜夜爽 | 亚洲黄色免费视频 | 欧美巨乳在线观看 | 欧美日韩亚洲一区二区 | 91综合精品| 日韩激情一区二区 | 国产一级免费在线观看 | 高级毛片| 青青草国产在线 | 粉嫩av一区二区三区免费观看 | 欧洲亚洲一区 | 国产精品永久久久久久久久久 | 九色免费视频 | 国产黄色高清视频 | 免费高清视频在线观看 | 影音先锋人妻啪啪av资源网站 | 日韩中文在线一区 | 男人日女人在线观看 | 天天色天天综合 | 日韩欧美一级大片 | 国产精品剧情av | 加勒比一区二区三区 | 青娱乐在线视频免费观看 | 黄色顶级片 | 在线精品一区 | 大又大又粗又硬又爽少妇毛片 | 男生女生插插插 | 日韩xxxxxxxxx | av一区二区免费 | av在线资源网站 | 91视频这里只有精品 | 黄网站色视频免费观看 | 日韩欧美国产片 | 美女精品久久久 | 成人毛片18女人毛片免费 | 日本黄色免费网站 | 国产女同视频 | 欧美在线免费观看视频 | 午夜日韩电影 | 先锋av资源网站 | 熟女俱乐部五十路六十路av | 中文在线最新版天堂8 | 国产白丝袜美女久久久久 | 欧美性潮喷xxxxx免费视频看 | 女女同性被吸乳羞羞 | 香蕉视频2020 | av自拍一区 | 国产一区二区 | 久久久久久综合 |