簡體   English   中英

Eclipse 在遠程調試期間不在 java 斷點處停止

[英]Eclipse not stopping at java breakpoints during remote debug

嘗試調試部署到碼頭(9.4)服務器的應用程序時,我遇到了一個非常奇怪的錯誤。 我按照此處的說明進行操作: https://www.eclipse.org/jetty/documentation/jetty-9/index.html#advanced-debugging使用 Z6B7B655DD22FAA2493F106077CA518A 設置遠程調試我將調試 arguments 添加到我的啟動腳本中,如果我在碼頭上進行狀態調用,我可以看到它們列出:

RUN_CMD = /opt/java/8/bin/java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9999 -Djetty.home=/opt/jetty/9.4 -Djetty.base=/opt /web/jetty -Djava.io.tmpdir=/opt/jetty/temp -jar /opt/jetty/9.4/start.jar jetty.http.host= my ip adr jetty.http.port= my port jetty.spdyPort=我的 spd 端口jetty.state=/opt/web/jetty/jetty.state jetty-started.xml

如果我運行我的啟動腳本,它將暫停並等待我啟動 eclipse 調試器,然后再繼續。 如果我在瀏覽器中導航到我的應用程序,我可以從日志 output 中看到我的方法正在運行。 但是,這些方法中的斷點永遠不會被命中,並且執行永遠不會暫停。

我已經嘗試了我能想到的一切,我只是看不出我在這里做錯了什么。 我以前做過這個並且它有效,所以我只能假設這是關於我的應用程序部署到碼頭的方式。 任何建議,將不勝感激。

更新:我已經縮小了我認為是問題的根源,但我仍然不知道如何解決它。 我最近將碼頭的日志記錄模塊從 log4j 切換到 logback。 一旦我禁用了 logback 模塊,調試就會再次起作用。 不幸的是,簡單地禁用日志記錄並不是一個長期的解決方案。 我仍然需要一些能夠調試和啟用日志記錄的方法。

感謝碼頭社區,我終於能夠找到答案。 有關更多詳細信息,請參閱此線程: https://github.com/eclipse/jetty.project/issues/7299 ,但簡短的回答是這是一個 jvm 分叉問題,類似於 murtiko 建議的問題。

使用除基本 slf4j-impl 之外的任何日志框架都會導致 jvm 分叉,並且需要不同的方法來進行調試。 與其在 staup 腳本中指定調試 arguments (-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9999 ),不如在 start.ini 中設置它們以及 --exec 標志. 就像是:

# --------------------------------------- 
# Module: logging-logback
# Configure jetty logging to use Logback Logging.
# SLF4J is used as the core logging mechanism.
# --------------------------------------- 
--module=logging-logback

--exec
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9999 

如果您不想每次打開或關閉調試時都必須編輯 start.ini,您可以創建一個自定義的 jetty 模塊。 我在 $JETTY_HOME/modules 中創建了一個名為 remote-debug.mod 的文件,其內容

[exec]
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9999

要啟用調試,我只需將參數 --module=remote-debug 添加到啟動命令中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM