JB的調試方法(歡迎補充)

來源:互聯網
上載者:User

在JBuilder9中,在編輯器中可以用紅點顯示當前行的代碼錯誤,但是並不能顯示在邏輯上的錯誤,以及啟動並執行錯誤,所以還需要進一步瞭解如何進行錯誤檢查和調試,來排除邏輯以及運行時的錯誤。  首先,要進行斷點設定。方法非常簡單,在編輯器中的任意一行語句的前面單擊滑鼠,將會自動將該行設定為斷點。上面的斷點只是最簡單的行斷點,其實斷點還有其他類型。斷點共有5種類型:

Line  在程式特定行的代碼被執行前被引發。

exception   在代碼拋出一個特定異常時被引發

class 

method   在到達被設定成斷點的方法時被引發。

cross-process

不同的調試器支援不同的斷點。一些通用的類型是:行斷點 在程式特定行的代碼被執行前被引發。 方法斷點 在到達被設定成斷點的方法時被引發。 計數斷點 在某個計數器達到或超過某個特定值時被引發 異常斷點 在代碼拋出一個特定異常時被引發 儲存變化斷點 在儲存在特定位址範圍的內容被修改時引發 地址斷點 在被設定成斷點的地址達到時被引發注意: 一些調試器只在編譯版本的Java代碼 (使用just-in-time 編譯器產生的程式碼) 上支援某些斷點類型而不支援解釋代碼(使用javac 工具產生的程式碼)。一個例子就是地址斷點。每個工具在你能設定斷點的方式上可能有些不同。檢查你的工具的文檔。

  使用者還可以通過選擇Run菜單中的Debug ,用藍色顯示的是出錯的檔案Project功能表項目進入程式的調試介面。在調試和運行程式時,系統會將錯誤顯示出來(紅色部分的文字),其中名和程式行,單擊該部分,在編輯器中將會切入該檔案,並以高亮顯示出錯的程式行。當使用者需要觀測對象的情況時,首先要添加觀測對象,方法是單擊Run菜單中的Add Watch功能表項目,然後找到該對象的斷點,再運行Debug Project進入調試狀態。

你可能會問,我如何知道在哪兒放置斷點? 如果你對這個問題完全沒有感覺,你可以在main() 方法的開始設定斷點 如果你的代碼產生堆棧複寫(stack trace), 在程式產生它的地方設定斷點。你將在堆棧複寫裡面看到原始碼中出問題的行號。 如果你的輸出或者圖形顯示的特定部分沒有正確的顯示預定資訊(例如文本域顯示錯誤的文本),你可以在該組件被建立的地方設定斷點。然後你可以逐步執行你的程式顯示和GUI對象相關的值。經驗將在最合適的地方設定斷點。你在一個類或者程式裡面可以設定多個斷點。

在偵錯工具的時候經常遇到的術語有:進入       執行當前行。如果當前行包含一個方法調用,執行被呼叫者法的第一行。如果類中的方法是用不帶調試資訊的選項編譯的 (也就是沒有使用 -g 選項), 你將看到No Source Available 訊息。 越過        執行當前行而不會因為該行調用了一個方法或常式而停止。 返回        從當前執行點執行並立即返回到調用當前方法的行。

堆棧複寫(Stack traces)當Java 程式進行核心轉儲(core dumps)時它在控制台產生我們稱之為堆棧複寫(stack trace) 的東西。堆棧複寫告訴開發人員程式發生問題的精確路徑。它將說明類和方法名以及原始碼中的行數 (如果你使用調試選項編譯)。如果你在發生堆棧複寫的開始處開始調試並停下,你可以向後查看你的代碼看看實際上是什麼申明被執行了。這是一個快速發現程式問題的辦法。你也可以使用下面的一個方法手動強制產生堆棧複寫。Throwable().printStackTrace() 在調用該方法的那個點產生堆棧複寫。複寫將顯示方法調用所涉及到的線程。 Thread.currentThread.dumpStack() 只產生當前線程的一個快照。當你需要理解在什麼條件下你的程式會產生堆棧複寫時使用強制複寫。下面的程式是一個強制堆棧複寫的例子。這個程式片斷進行檔案拷貝。我們通過比較兩個檔案的長度是否相等來判斷拷貝是否成功。如果不相等,我們向檔案寫入複寫然後強制列印堆棧複寫(參看黑體的申明)。Throwable() 是java.lang 中的一個類, printStackTrace() 是Throwable() 的一個方法,它列印程式執行路徑的複寫。

診斷方法Java 語言在Runtime() 類中提供方法跟蹤你對JVM的方法調用。這些跟蹤將產生你對JVM位元組碼的每一個方法調用的列表。注意這個列表可以產生大量的輸出,所以在你的代碼的小部分裡面使用。開啟跟蹤可以在代碼中加入下面的行:traceMethodCalls(true)關閉使用:traceMethodCalls(false)開啟JVM 並觀察它向標準輸出的輸出。


相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。