使用Eclipse远程调试Tomcat

时间:2010-09-30 23:49:38

标签: eclipse tomcat

我似乎无法通过Eclipse调试tomcat应用程序。我已经设置了

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

然后我运行bin/catalina.sh,在那里我看到输出说它在dt_socket上正在监听port 8000。但每当我尝试连接到Eclipse中的端口8000时(通过在远程java应用程序菜单中添加一个条目),它就会抱怨拒绝连接。有什么想法吗?

16 个答案:

答案 0 :(得分:117)

你能检查一下是否有效吗?

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

catalina.sh jpda start

答案 1 :(得分:48)

我花了一些时间来获取正确的信息。

所以这是一步一步的详细信息。

环境:Windows 7

TomCat版本:7.0

IDE:Eclipse

要在tomcat中启用远程调试而添加的配置是

-Xdebug
-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n

我不推荐非Windows环境的上述配置。 要添加上述配置,请双击tomcat服务器,该服务器将在服务器视图中可用。找到下面的屏幕截图。 enter image description here

现在将上述运行时环境配置添加到tomcat。对于此检查下方的屏幕截图。

enter image description here

现在进入编辑启动配置属性中的Arugments选项卡,如下面的屏幕截图所示。

enter image description here

GoTo VM参数部分添加这些行。

  

-Xdebug

     

-agentlib:JDWP =运输= dt_socket,地址= 8000,服务器= Y,暂停= N

enter image description here

现在可以在eclipse工具栏上找到调试按钮。

enter image description here

在Debug配置中找到"远程Java应用程序"然后双击它。enter image description here

在名称字段中输入您喜欢的任何名称。

使用浏览按钮从项目字段中选择要执行远程调试的项目。

主机名只是主机地址。我在这里工作,所以它是" localhost"。

最后一个Port列的值应该是8000.除Name和Project文本字段外,其他两列Host和port将由eclipse本身填充,如果没有让你有与上面提到的相同的值。检查屏幕截图以获取信息。enter image description here

现在右键单击服务器控制台中的TomcatServer,从上下文菜单中选择Add and Remove。在此对话框中,您可以将项目添加到服务器。

现在运行Tomcat服务器。

enter image description here

现在从调试工具运行TomCatDebugConfiguration。

上次打开内部或外部浏览器并运行您的项目。如果执行控制到达断点,那么eclipse将提示调试透视。

答案 2 :(得分:45)

在找到catalina.bat.sh的tomcat bin目录(又名{CATALINA_BASE} / bin)中,编辑(如果不存在则创建):

setenv.bat/.sh

添加以下行:

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

您只需要编辑catalina.bat(或.sh)文件即可。

查看catalina.batcatalina.sh中的评论。

您可能需要调整特定环境/情况的语法。例如,如果您已经定义了CATALINA_OPTS,则可能会执行以下操作(在Windows环境中):

set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n

从Eclipse调试:

run->调试配置...->远程Java应用程序 - >新

并指定名称,正在调试的项目以及上面指定的tomcat主机和调试端口。

答案 3 :(得分:29)

catalina.bat文件中,请修改以下内容。

  • 第1步:CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

  • 第2步:JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

  • 步骤3:从命令提示符运行Tomcat,如下所示:catalina.sh jpda start

  • 步骤4:然后在eclipse中创建一个调试配置

    1. 为配置提供任何名称。
    2. 提供project name
    3. 将连接类型指定为Standard(Socket Attach)
    4. 主持人为localhost
    5. 端口为8000(或任何端口号,但在其他地方也应该相同)。

答案 4 :(得分:5)

让我分享一下使用eclipse(Windows)在tomcat7中启用远程调试模式的简单方法。

步骤1:打开bin / startup.bat文件
第2步:添加以下行以使用JDPA选项进行调试(它应该是文件的起始行)

    set JPDA_ADDRESS=8000  
    set JPDA_TRANSPORT=dt_socket  

步骤3:在同一个文件中..转到文件末尾修改此行 -

    call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%  
    instead of line  
    call "%EXECUTABLE%" start %CMD_LINE_ARGS%  

第4步:然后运行bin> startup.bat  (现在你的tomcat服务器以远程模式运行,端口为8000)。

步骤5:之后,让我们通过eclipse IDE与远程客户端连接您的源项目。

步骤6:在Eclipse IDE中转到“debug Configuration”

步骤7:点击“远程java应用程序”,然后点击“新建”

步骤8。在“连接”选项卡中设置参数值

   project= your source project  
   connection Type: standard (socket attached)   
   host: localhost  
   port:8000  

步骤9:单击“应用并调试”。

所以最后你的eclipse远程客户端与正在运行的tomcat服务器连接(调试模式)。

希望这种方法可以帮到你。

此致..

答案 5 :(得分:4)

修改catalina.bat以添加

set JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n" 

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

可选:在运行startup.bat

时,默认情况下添加以下行以运行调试模式
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

Eclipse或STS选择调试配置右键单击 - >新

connection type -> Standard socket Attach
Port -> 8000 (as given in the CATALINA_OPTS)
Host -> localhost or IP address

答案 6 :(得分:4)

只需运行./catalina.sh jpda run(分叉)或{{1}}(不分叉,帮助中未提及)。此处提到的所有选项都默认为合理的值。

答案 7 :(得分:2)

如果上述所有内容仍无效,您可以随时添加到脚本

    set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

答案 8 :(得分:1)

在tomcat 7中,catalina.sh有以下代码:

if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="8000"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
  shift
fi

Ii暗示您可以使用以下方式设置JPDA:

export JPDA_TRANSPORT=dt_socket
export JPDA_ADDRESS=8000
export JPDA_SUSPEND=n

或者用:

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

最后使用:

catalina.sh jpda start

此致

答案 9 :(得分:1)

我在Docker容器中运行Tomcat时遇到了这个问题。要解决此问题,请确保在docker run命令中添加“-p 8000:8000”参数,以将此端口公开给本地计算机。您当然也需要容器内$ {CATALINA_HOME} / bin /中的setenv.sh文件。

答案 10 :(得分:1)

上面的许多答案都是正确的,但请记住,默认情况下,调试器仅在localhost上侦听。如果要调试远程服务器,则需要指定要监听的IP地址,例如

  

JPDA_OPTS =“-agentlib:jdwp = transport = dt_socket,address = 10.1.1.33 :8000,server = y,suspend = n”

     

catalina.sh jpda开始

请注意,该地址现在为 10.1.1.33 :8000

当然,您还可以通过运行

来检查实际使用的IP
  

netstat -an

在Windows和Linux上

,并使用find(Win)或grep(Linux)过滤端口。

答案 11 :(得分:0)

使用CATALINA_OPTS和JPDA_OPTS修改startup.bat对我不起作用,但将它们添加到catalina.bat

  1. 修改catalina.bat
  2. CATALINA_OPTS =“ - Xdebug -Xrunjdwp:transport = dt_socket,address = 8000,server = y,suspend = n”

    JPDA_OPTS = “ - agentlib:JDWP =运输= dt_socket,地址= 8000,服务器= Y,暂停= n” 的

    1. 修改startup.bat以包含jpda
    2. 更改调用“%EXECUTABLE%”将%CMD_LINE_ARGS%更改为

      调用“%EXECUTABLE%”jpda start%CMD_LINE_ARGS%

      然后在Eclipse中的调试配置中配置远程Java应用程序。

答案 12 :(得分:0)

首先,如果您使用文本编辑器打开catalina.bat,您会看到: “不要在这个脚本中设置变量......”所以永远不要在该脚本中更改它,而是可以执行以下步骤:

  1. 它建议您创建一个名为“setenv.bat”的新bat文件。
  2. 然后在该bat文件中设置2个变量,例如:

    设置CATALINA_OPTS =“ - Xdebug -Xrunjdwp:transport = dt_socket,address = 8000,server = y,suspend = n”

    设置JPDA_OPTS =“ - agentlib:jdwp = transport = dt_socket,address = 8000,server = y,suspend = n”

  3. 最后在cmd运行:“catalina.bat jpda start”

  4. 在IDE中,创建远程调试配置并将主机设置为相关服务器ip和端口为8000。

答案 13 :(得分:0)

对于apache-tomcat-8.5.28版本,只需执行此操作,

catalina.bat jpda start

已将catalina.bat中为我们配置的默认设置为

  

如果不是“%JPDA_OPTS%”==“”goto gotJpdaOpts设置   JPDA_OPTS = -agentlib:JDWP =运输=%JPDA_TRANSPORT%,地址=%JPDA_ADDRESS%,服务器= Y,暂停=%JPDA_SUSPEND%

所以不需要任何其他配置。当你执行命令catalina.bat jpda start时,你会看到打开调试端口8000。

答案 14 :(得分:0)

有关我在Java 8和Tomcat 9中遇到的问题,请参见以下答案:Java remote debugging (JPDA) not working for me in Tomcat 9

这类似于@DAB的警告,他的解决方案可能更安全。

答案 15 :(得分:-2)

对于apache-tomcat-8.5.28

修改JDPA_OPTS,如下所示,然后像catalina.bat jpda start

一样运行
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=8000,server=y,suspend=$JPDA_SUSPEND"
相关问题