2010-03-10 63 views
7

我正在使用JDK 1.6.0_18(32位)在Windows Vista Home Premium 64位上使用eclipse europa(3.5)。無法在eclipse中放置斷點

通常情況下,我可以把斷點放好;但是,對於不屬於該項目的特定類(該類位於.JAR文件內(.JAR文件是該項目的一部分)),儘管我已將源目錄附加到此.JAR文件,但我無法在這個類中放置一個斷點。

如果我雙擊斷點窗格(左邊界),我注意到放置了一個類斷點。我想知道是否有調試信息;但是,發現使用debug =「true」和debuglevel =「lines,vars,source」使用ant/javac任務編譯了此特定類。我甚至在這門課上跑jad,以確認它確實包含了調試信息。

那麼,爲什麼日食阻止我放置斷點?

編輯:大家都理解上下文,這是一個在tomcat 6.0下運行的webapp。在遠程啓動tomcat之後,我正在遠程調試eclipse的應用程序。該應用程序工作得很好。我試圖理解上述類的行爲,因爲eclipse不讓我設置BP,所以我無法做到這一點。 P:我在這裏看到一些線程,談到BP沒有被擊中,但在我的情況下,我無法放置BP!

P.P.S:在嘗試1.6.0_18之前我嘗試了JDK 1.6.0_16。

感謝您的指點。

+0

您是否嘗試從調用類中加入類?它顯示了附帶的源代碼嗎?不是一種解決方案,但可能有所幫 – josefx 2010-03-19 09:59:42

+0

josefx:這個類是使用Reflection調用的,在實際方法被擊中之前需要很多HOP,我沒有進入方法。 – anjanb 2010-03-19 13:41:25

回答

2

聽起來Eclipse似乎無法在類路徑中找到jar文件,儘管您確實說過該jar文件是該項目的一部分。如果您正常運行應用程序會發生什麼?你會得到一個ClassDefNotFoundException或類似的東西嗎?

如果您檢查運行/調試配置中的選項卡,您應該能夠在運行時查看類路徑中的路徑和jar文件。您還可以添加構建應用程序所不需要的jar文件,但需要運行它。

+0

hi richj, 感謝您的留言。當我嘗試使用CTRL + SHIFT + T(打開類型)查找類時,我可以打開該特定類,並且Eclipse會顯示我附加到.JAR的源。 儘管我可以將BP放在作爲項目一部分的類上,但我無法將BP放在上面的類上。 – anjanb 2010-03-10 09:48:08

+0

這意味着該jar文件位於構建類路徑上。運行時類路徑不一定與構建類路徑相同,但我承認這是一個漫長的過程,因爲您通常需要主動將其更改爲強制兩個類路徑不同。如果應用程序在不使用調試器時通過代碼運行,那麼問題必定有所不同。 – richj 2010-03-10 11:47:37

+0

在這種情況下,我會試圖建立一個小型測試項目來嘗試解決正在發生的事情。它只需要包含問題jar文件和一個包含一個或多個測試方法的小類。 – richj 2010-03-10 11:50:39

4

嘗試看看你的配置基於Java>調試 - >步驟過濾 的某個時候啓用,你不能停止過濾包

+0

未啓用步驟過濾。 – anjanb 2010-03-19 08:18:40

1

裏面雖然我已經連接源目錄到這個.jar文件,我無法在這堂課中設置一個斷點。

你說「源目錄」。你確定,這是用於編譯jar的版本嗎?如果您附加了不同的源代碼版本,則行號可能不匹配,並且您的中斷點不會命中。

+0

嗨克里斯, 是的,我從源頭編譯了自己的jar。所以,我知道源目錄和.JAR是同步的。 否則,這個.JAR是從多個項目準備的。它源目錄具有下列結構 sourceDir 甲 有機 fcitmuk 分貝 乙 有機 fcitmuk epihandy Ç 有機 fcitmuk epihandy 的XForm d 有機 fcitmuk epihandy 任何線索? – anjanb 2010-03-19 08:14:32

1

我爲了解在Eclipse中的錯誤,其中破發點,在不here

+1

謝謝。這是JDK 1.6.0_14中的一個問題,但在1.6.0_16中得到修復。我目前正在使用1.6.0_18,我有這個問題。有些東西告訴我,我已經忘記了一些東西,但不能放置它! :-( – anjanb 2010-03-19 13:46:54

1

使用一個名爲Jadclipse插件與JDK 1.6.x的 特定版本的更多信息看工作,以反編譯運行系統中的罐子,地點在調用JAR方法的地方的斷點,然後按F6,你應該能夠進入你的JAR方法。

+0

我有.JAR的源代碼,所以在運行時不需要做JAD – anjanb 2010-03-19 08:21:43

+0

JAR是否從你已經連接的同一個源代碼編譯?這很關鍵,因爲否則行號不匹配, – 2010-03-19 09:02:16

+1

當source和.JAR不同步時,eclipse的斷點會變得很瘋狂,而且我已經看到了這樣的事情發生的更早,但是這次我不能在類中的任何地方設置一個BP,甚至沒有一個BP。 – anjanb 2010-03-19 13:43:04

-1

第1步:切換/啓用斷點 在您要開始調試代碼的位置的代碼行或方法條目處設置斷點。右鍵單擊編輯器的左邊距旁邊的代碼行和上下文菜單彈出。在上下文菜單中選擇切換斷點

步驟2:配置斷點以停止執行 要開始調試,應該在指定的斷點處停止執行。對於此點擊斷點屬性,並執行以下操作:

1. Check Hit count 
2. Specify value as 1 
3. Select 「Suspend thread」 option 

這將停止執行時程序命中斷點。

第三步:切換到調試透視

在Eclipse中,選擇窗口 - >打開透視圖 - >調試

第四步:在調試模式下運行

現在在調試運行程序模式。選擇運行 - >調試

現在程序開始在調試模式下運行,你會看到線程的狀態爲「正在運行」

當程序到達斷點的線程的狀態發生變化,從「運行」爲「暫停」

第五步:調試使用表達式\觀察變量的代碼\檢查

現在代碼在斷點處停止。您可以使用監視變量/表達式來監視調試變量的當前值。 假設你在一個名爲「反」的變量設置斷點,程序停在計數器變量 添加表達與變量名「計數器」,它允許您監視變量的值,當你執行程序 你也可以右鍵單擊計數器變量,然後從上下文菜單中 「檢查」如果這是一個方法,然後,選擇方法的名稱,然後點擊「進入選擇」。這將允許您逐行監視或調試方法執行。

第六步:使用F6鍵步入方法

要「一步成」的代碼在當前方法中的下一個可執行行,按「F6鍵」。這會將程序控制從當前行傳遞給下一個可執行的代碼行。

+0

這個評論並沒有回答OP問的一個問題。 – snowe 2014-07-09 21:42:33

2

當試圖爲.jsp頁面添加斷點時,事實證明該頁面未使用JSP編輯器打開,從而導致無法設置斷點。

0

只是.jar文件的一個簡單的刷新奏效了我。

我能夠把斷點在所有同一個包的其他類文件只有一個除外。我觀察到的是,當我在編輯器中打開這個類文件並選擇「Link with Editor」時,eclipse並沒有把我帶到這個類文件本身,而僅僅是這個類文件的包。

刷新後,「帶編輯器的鏈接」工作,我能夠放置斷點。

如果有人能解釋這種行爲,這將有所幫助。