2012-02-09 72 views
1

我們不能在rt.jar的類中放置斷點嗎?java運行時庫中的斷點(rt.jar)

我調試的東西,我需要把java.lang.DriverManager中的斷點,但只要我把一個斷點,在一些地方,Eclipse提示我的消息

Unable to install breakpoint in java.sql.DriverManager due to missing line number attributes. Modify compiler options to generate line number attributes 

這是否意味着java運行時類沒有被編譯進行調試?如果是,那麼爲什麼會這樣做呢。請幫忙!

編輯1:我在做遠程調試,實際的web應用程序運行在Linux機器上的tomcat上,我在一臺Windows機器上運行。哪個rt.jar是這裏的罪魁禍首,我的機器上還是遠程機器上的? rt.jar有可能不是用行號和其他有用的信息編譯的嗎?

編輯2:此問題的答案有詳細信息Locally declared variables can not be inspected 任何人都知道爲什麼編譯時沒有調試符號?它如何影響性能,以保持一些元數據或是其他東西?

+0

的NetBeans 7.1,JDK 30年6月1日,win7的,沒有問題的設置斷點的DriverManager類 – Dapeng 2012-02-09 09:49:05

+1

在過去RT帶調試符號的.jar可從java.net下載。但現在我找不到它的任何跟蹤。 – Mersenne 2012-02-09 10:50:56

回答

3

如果某個類未使用調試開關(-g)進行編譯,則無法在特定行上設置斷點。

但是,即使沒有爲調試編譯類,仍然可以在方法上設置斷點(在eclipse中:在定義方法的第一行設置斷點)。

這很可能是您無法訪問本地變量,並且您沒有看到在哪一行中單步執行代碼。這會使調試變得更加困難,但您仍然可以看到發生了什麼(例如,檢查方法參數值),特別是如果您知道底層的源代碼。

但我想知道你的rt.jar沒有編譯調試信息。

0

這是一個日食設置。正如錯誤信息太清楚第二 中的選項Classfiel代

去檢查偏好 2nd Option checked in Classfiel Generation

+0

是的,但我的問題是...不是用這些設置編譯的rt.jar? – Ashish 2012-02-09 10:43:58

+1

哦,我錯過了你的最後一行...並加上我的JDK 1.6.0我總是能夠在rt.jar中進行調試。對不起,不太重視。它歸結爲只編譯特定的類。 – 2012-02-09 11:02:48

+0

是否可以在DriverManager內進行調試?是因爲遠程調試,我有這個問題嗎? – Ashish 2012-02-09 14:58:45