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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Eclipse调试常用技巧

發布時間:2024/4/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eclipse调试常用技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://daimojingdeyu.iteye.com/blog/633824

1、 條件斷點

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

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

在斷點處點擊鼠標右鍵,選擇最后一個"Breakpoint?Properties"

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

2、 變量斷點

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

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

3、 方法斷點

?

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

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

4、 改變變量值

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

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

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

?

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

5、 重新調試

?

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

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

6、 遠程調試

用于調試不在本機上的程序,有兩種方式,

1、本機作為客戶端

2、本機作為服務端

使用遠程調試的前提是服務器端和客戶端的代碼是一致的。

?

本機作為客戶端

本機作客戶端比較常用,需要在遠端的服務器上的java程序在啟動時打開遠程調試開關,

服務器端需要加上虛擬機參數

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\screensnap>java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar screensnap3.jar

連接時遠程服務器時,需要在Eclipse中新建一個遠程調試程序

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

?

本機作為服務端

同本機作為客戶端相比,只需要修改一下“Connection Type”

?

這時Eclipse會進入到等待連接的狀態

連接程序使用如下參數即可連接本機服務器,IP地址請用實現IP替換~~

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

F:\Study\eclipsepro\screensnap>java -agentlib:jdwp=transport=dt_socket,suspend=y,address=127.0.0.1:8000 -jar screensnap3.jar

?

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

?

有關遠程調試更詳細點的介紹請參考【使用 Eclipse 遠程調試 Java 應用程序】

?

?

好像漏了一個斷點,異常斷點,補一下。

7、異常斷點

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

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

?

?

===========================

http://fenghanlu.blog.163.com/blog/static/94999052010629115111155/

進入debug模式:
1、設置斷點
2、啟動servers端的debug模式
3、運行程序,在后臺遇到斷點時,進入debug調試狀態
=============================
作用域 功能 快捷鍵
全局 單步返回 F7
全局 單步跳過 F6
全局 單步跳入 F5
全局 單步跳入選擇 Ctrl+F5
全局 調試上次啟動 F11
全局 繼續 F8
全局 使用過濾器單步執行 Shift+F5
全局 添加/去除斷點 Ctrl+Shift+B
全局 顯示 Ctrl+D
全局 運行上次啟動 Ctrl+F11
全局 運行至行 Ctrl+R
全局 執行 Ctrl+U
=============================
1.Step Into (also F5) 跳入
2.Step Over (also F6) 跳過
3.Step Return (also F7) 執行完當前method,然后return跳出此method
4.step Filter 逐步過濾 一直執行直到遇到未經過濾的位置或斷點(設置Filter:window-preferences-java-Debug-step Filtering)
5.resume 重新開始執行debug,一直運行直到遇到breakpoint。 例如 :A和B兩個斷點,debug過程中發現A斷點已經無用,去除A斷點,運行resume就會跳過A直接到達B斷點。
6.hit count 設置執行次數 適合程序中的for循環(設置 breakpoint view-右鍵hit count)
7.inspect 檢查 運算。執行一個表達式顯示執行值 \
8.watch 實時地監視對象、方法或變量的變化
9.我們常說的斷點(breakpoints)是指line breakpoints,除了line breakpoints,還有其他的斷點類型:field(watchpoint)breakpoint,method breakpoint ,exception breakpoint.
10.field breakpoint 也叫watchpoint(監視點) 當成員變量被讀取或修改時暫掛
11.添加method breakpoint 進入/離開此方法時暫掛(Run-method breakpoint)
12.添加Exception breakpoint 捕抓到Execption時暫掛(待續...)
斷點屬性:
1.hit count 執行多少次數后暫掛 用于循環
2.enable condition 遇到符合你輸入條件(為ture\改變時)就暫掛
3.suspend thread 多線程時暫掛此線程
4.suspend VM 暫掛虛擬機

13.variables 視圖里的變量可以改變變量值,在variables 視圖選擇變量點擊右鍵--change value.一次來進行快速調試。
14.debug 過程中修改了某些code后--〉save&build-->resume-->重新暫掛于斷點
15.resume 當debug調試跑出異常時,運行resume,重新從斷點開始調試
16.如果一行有很多方法, 當第一次按F5鍵就跳入這一行第一個方法,F6一步一步調試,F7跳出這方法. 當第二次按F5鍵就跳入這一行第二個方法,F6一步一步調試,F7跳出這方法. 以此類推.想進入這一行第幾個方法,就按幾次F5和F7.??

?

?

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。