java远程调试(介绍两种发布方式)

2023-10-29

1.jar包启动时

java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -jar demo.jar--jdk1.7之后

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -jar demo.jar--jdk1.7之前

2.tomcat启动时

服务器端:

Jdk1.7之前,需要在web容器中添加如下命令:

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

 

以tomcat为例,也就是需要在Catalina.sh文件中修改CATALINA_OPTS参数,加入上述内容:

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

 

Jdk1.7之后,需要在web容器中添加如下命令:

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

 

还是以tomcat为例,修改Catalina.sh文件:

Set CATALINA_OPTS=$CATALINA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

 

不过,根据观察,在tomcat原本的catalina.sh配置文件应该就已经对远程调试的参数进行了默认配置:

全局搜索CATALINA_OPTS,就能看到如下配置(tomcat7和8.5都有):

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

从上述配置中就可以看出,tomcat已经默认提供远程调试的设置了,所以不需要我们再去单独配置了,我们只需要本地使用相应端口进行远程调试即可。

 

本地操作:

 

首先本地对debug方式进行设置,改为以Remote Java Application的方式进行启动,如下图所示:

 

 

设置port为远程调试的端口,按照上述介绍,就应该设置为8000,然后修改host为服务器访问ip或域名,点击右下角apply

配置好启动方式后,去需要调试的类打上断点,然后以dubug模式启动即可。

然后通过各种工具访问需要调试的后台,即可触发调试:

值得注意的是,如果服务器上项目没有启动,那么你本地的服务启动会连接错误,所以需要先保证服务器上的服务是成功启动了的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java远程调试(介绍两种发布方式) 的相关文章

  • 从txt文件中读取数据而不下载它?

    我想从提供的文本文件中解析信息 有没有一种方法可以在应用程序中执行此操作 而无需先下载文件 以某种方式传输文本内容 打开到 URL 的 Http 连接 使用内置 HttpURLConnection 或使用 commons httpclien
  • Java - 将无符号十六进制字符串解析为有符号长整型

    我有一堆十六进制字符串 其中之一是 d1bc4f7154ac9edb 这是 3333702275990511909 的十六进制值 如果执行 Long toHexString d1bc4f7154ac9edb 这与您得到的十六进制相同 现在
  • 在java代码中创建postgresql表

    我有一个与 postgreSQL 数据库连接的 java 代码 现在 我希望当它连接到数据库时 我还将创建数据库表 但我的问题是 它不会创建数据库 我不知道问题是什么 这是我的代码 Statement st null ResultSet r
  • Selector.close() 是否关闭所有客户端套接字?

    我是 nio 套接字的新手 我已经使用 nio 套接字编写了一个服务器 现在我正在尝试编写关闭钩子以确保通过清理资源正常退出 我的问题是Selector close 方法关闭所有客户端套接字 如果没有 请告诉我如何访问所有客户端套接字 而无
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • java中高效的输入流到字符串方法

    因此 我在 Java 中的 诚然非常简单 应用程序上运行探查器 令我惊讶的是 仅次于需要在时间上发出 HTTP 请求的方法的是我的方法 inputStreamToString方法 目前它的定义如下 public static String
  • Android Studio 与 Google Play 服务的编译问题

    我正在运行 Android Studio 0 8 4 并在 Android Studio 0 8 2 上尝试过此操作 我正在运行 Java JDK 1 8 0 11 并尝试使用 JDK 1 8 0 05 每当我尝试构建我的 android
  • Spring Data Jpa OneToMany 同时保存子实体和父实体?

    这是我的父实体 注意 为了简洁起见 删除了 getter setter lombok 注释 Entity public class Board Id GeneratedValue strategy GenerationType IDENTI
  • 如何杀死 Java Future?

    我正在开发的服务使用 Future 来并行运行多个任务 每个任务最多可能需要一分钟才能完成 然而 外部库似乎有问题 因为在某些情况下 2 的时间 它不会返回 在这些情况下 我想给出 2 分钟的等待时间 如果还没有返回 我想杀死 future
  • 当前平台不支持桌面 API

    我遇到过这个错误 java lang UnsupportedOperationException 当前平台不支持桌面 API 我将从我的 java 应用程序中打开一个文件 我用这个方法 Desktop getDesktop open new
  • Google 表格使用 API 密钥而不是 client_secret.json

    In the QuickStart java示例Java 快速入门 https developers google com sheets api quickstart java他们使用OAuth client ID识别该应用程序 这会弹出一
  • 如何在正则表达式中编写可选单词?

    我想编写一个识别以下模式的 java 正则表达式 abc def the ghi and abc def ghi 我试过这个 abc def the ghi 但是 它没有识别第二种模式 我哪里出错了 abc def the ghi 删除多余
  • 如何使用 aether 从 Java 找到最新版本的 Maven 工件?

    他们的文档非常薄弱 我无法弄清楚 我找到了部分答案here https stackoverflow com questions 27428068 how to retrieve the latest also snapshot versio
  • 在 doxygen 中使用 @see 或 @link

    我之前用 Javadoc 记录并使用了标签 see link or see foo and link foo 在我的描述中链接到其他课程 现在我尝试了doxygen 似乎这些标签不兼容 如果我运行 doxygen 完整的标签将被简单地解释为
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • 在 Eclipse RCP 应用程序中禁用插件贡献

    我经常遇到这个问题 但尚未找到解决方案 每当我编写一个新的基于 Eclipse RCP 的应用程序并包含来自 Eclipse 平台的插件时 我都会 继承 其中一些插件的 UI 贡献 大多数贡献 菜单项 键盘快捷键 属性页 都很有用 但有时我
  • Java 8:如何创建毫秒、微秒或纳秒的 DateTimeFormatter?

    我需要创建格式化程序来解析具有可选的毫秒 微米或纳秒分数的时间戳 例如 对于我的需求 我看到以下机会 DateTimeFormatter formatter new DateTimeFormatterBuilder append DateT
  • Hybris:如何在impex中导入zip文件中的媒体?

    我知道我们可以导入未像这样压缩的图像 siteResource jar com project initialdata constants ProjectInitialDataConstants projectinitialdata imp
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • Spring 如何在运行时获取有关“强类型集合”的泛型类型信息?

    我在 Spring 3 0 文档中阅读了以下内容 强类型集合 仅限 Java 5 在 Java 5 及更高版本中 您可以使用强类型集合 使用泛型类型 也就是说 可以声明一个 Collection 类型 使其只能包含 String 元素 例如

随机推荐

  • DVI-A、DVI-D、DVI-I接口定义、DVI接口图和DVI接口标准介绍

    dvi接口义 DVI接口图片 DVI接口标准介绍 dvi hdmi接口定义 DVI 的定义 DVI A 就是与 VGA 规范一样的 包括 RGBHV 信号线的模拟接口 RGB 是什么不用赘述了吧 HV 分别是水平 和 垂直 扫描的 行同步
  • springboot集成log4j日志

    一 新建log4j properties配置文件 配置内容如下 log4j rootLogger CONSOLE info error DEBUGlog4j rootLogger info error CONSOLE DEBUGlog4j
  • 端口扫描

    常见的扫描类型有以下几种 秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术 它通常用于在通过普通的防火墙或路由器的筛选 filtering 时隐藏自己 秘密扫描能躲避IDS 防火墙 包过滤器和日志审计 从而获取目标端口的开放或关闭的信息
  • 终结 Java 空指针异常!优雅方案解析与案例演示

    目录 引言 产生原因 优雅解析 代码示例 优雅解决方案一 条件判断 优雅解决方案二 断言与异常处理 优雅解决方案三 使用 Objects 类的 requireNonNull 方法 优雅解决方案三 Optional 类的妙用 总结 引言 Nu
  • 【uniapp】结构

    目录 uniapp 结构 1 1 pages json 1 2 uni modules 文件夹 1 3 store 文件夹 1 4 manifest json 1 5 App vue 1 6 main js 1 7 pages 文件夹 1
  • Eureka是干什么的?

    Eureka是干什么的 Eureka是干什么的 注册中心 透明化路由 Eureka 基础架构 Eureka 交互流程及原理 简单实用摘要说明 Eureka的元数据 Eureka客户端详解 我保护机制 源码 自动装配实现 Eureka是干什么
  • 雷赛智能24校招-算法/嵌入式/fpga/机械/电子/自动化

    题解 相逆叶子 function TreeNode x this val x this left null this rig 题解 售价的中位数 import java util public class Solution 代码中的类名 方
  • H5清理微信缓存的方案

    背景 H5移动端开发 尤其是基于微信的公号开发 往往伴随着很严重的缓存问题 影响测试和开发人员的感情 为了解决这个问题 找到以下清除缓存的方式 希望对增进开发和测试人员的感情有所作用 方案 安卓端清除缓存的方法如下 http debugx5
  • SpringBoot ——kafka消费多个不同服务器地址消息解决方案

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 背景 在springboot实际项目开发中 kafka可能需要消费多个不同服务器地址的数据 这时懂得如何进行配置就显得非常必要了 二 配置 1 KafkaConfig
  • C++性能优化系列——百倍加速比的矩阵转置性能调优

    打算写一个矩阵转置分别在CPU和GPU平台的性能优化的系列 在最开始把测试环境等一些基本情况交代清楚 并在这里持续更新优化的结果 机器配置 为了方便各位对比性能 介绍一下我的测试机器配置 CPU Intel 9900k 程序主要与主频和缓存
  • !!震惊 安装这26个插件竟让开发者再也离不开Visual Studio Code

    找一个优秀的编辑器 是每个程序员上路前的必考题 而在众多编辑器中 VSCode无疑是一个人人皆知 备受推崇的神器 但是 你所熟知的VSCode是否也意味着你使用了比其他工具更好用的插件呢 在这篇文章中 我将为大家介绍一些不可或缺的插件 让你
  • c语言分苹果程序,小朋友学C语言(14):分苹果(小学奥数题)

    题目 有两堆一样多的苹果 老师将第一堆苹果分给男生 每人4个 最后剩下6个 老师又将第二堆苹果分给女生 每个5个 最后剩下5个 已知男生比女生多1人 求 女生有多少人 男生有多少人 苹果有多少个 解法 一 女生每人分5个苹果 最后剩下5个
  • SpringBoot:yml配置文件的读取

    yml配置文件的读取 YAML j m l 尾音类似camel骆驼 是 YAML Ain t a Markup Language YAML不是一种标记语言 的递归缩写 是一个可读性高 用来表达数据序列化的格式 一 yml基本语法 大小写敏感
  • 呆萌的图模型学习——图基本信息 & Networkx基本操作(二)

    Networkx是python常用的处理图模型的工具包 可以方便的处理图模型 Github项目主页 https github com networkx networkx 官网基本教程 https networkx org documenta
  • [Office] 公务员WPS Excel常用的一些技巧方法

    这篇文章主要是我最近工作使用WPS Excel的一些常用技巧和方法 仅仅是一篇在线笔记 当然实际操作中 你遇到问题百度经验或相关网站会提供对应的解决方法 而且它们写得更好 这篇文章更多的是结合自己使用学到的技巧 作为程序员 写了这么多年的代
  • Linux终端的几个常用快捷方式,记下

    一 初识linux的终端种类 本地 远程 查看本终端命令 tty 命令 看到当前所处的终端 w who 命令 看到系统中所有登录的用户 其中 tty 终端为表示在本地命令行模式下打开的终端 pts 0 1 2 3 终端为虚拟终端 多为图形界
  • SQL注入类型介绍,判断有没有SQL注入漏洞及原理?

    SQL注入 SQL注入介绍与分类 1 什么是sql注入 通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命令 2 sql注入类型 按照注入点类型来分类 1 数字型注入点 许多网页链接有
  • 游戏开发unity编辑器扩展知识系列:常用操作指引贴

    暂时做记录用 后面可能会整理 使用的标签或api OnDrawGizmos OnInspectorGUI OnSceneGUI OnDrawGizmos 与 OnSceneGUI 的区别 MenuItem 与 EditorWindow Sc
  • 论文笔记:Forecasting at Scale(Prophet)

    1 时间序列数据的特征 图 2 在 Facebook 上创建的事件数量 每天都有一个点 点按星期几用颜色编码以显示每周周期 这个时间序列的特征代表了很多业务时间序列 多重强季节性 趋势变化 异常值 假期效应 很多时间序列数据都有共同的特征
  • java远程调试(介绍两种发布方式)

    1 jar包启动时 java agentlib jdwp transport dt socket address 8000 server y suspend n jar demo jar jdk1 7之后 java Xdebug Xrunj