问题标签 [jdwp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
333 浏览

java - 在 JUnit 测试中使用 JDWP 进行远程调试错误

我正在使用带有 Maven 的 Eclipse Juno 并且有一个 JUnit 测试,它使用 Jemmy 启动另一个 Java 应用程序并通过事件队列对其运行自动化测试。由于被测试应用程序的限制,并且我们想要运行应用程序的多个实例,它必须在自己的进程中运行。

因此,我运行 JUnit 测试的主类设置环境,然后通过 ProcessBuilder 创建一个进程,并执行该进程以在同一个进程/jvm 中生成一个 Jemmy 工作者和目标应用程序。

我的问题是我想调试生成的进程,但我似乎无法按照所有其他 Eclipse 远程调试指南这样做。我的流程构建器看起来像这样

无论我指定哪个端口,我都会收到相同的错误

我已经尝试了几十个端口,我知道这些端口没有被使用,并且 processbuilder 只是拒绝从打开的 JDWP 端口开始。所以我认为我在尝试如何做到这一点上有一个系统性的问题,但我在这方面的经验不是很丰富。我几乎完全按照远程调试指南进行操作,例如:

远程调试 Java 应用程序 http://javarevisited.blogspot.nl/2011/02/how-to-setup-remote-debugging-in.html

然而,地址已在使用中的错误仍然存​​在。有任何想法吗?

0 投票
1 回答
5846 浏览

eclipse - 如何在eclipse中关闭项目的调试?

我的情况要求我有同一个项目的两个副本。一种用于开发,另一种用于调试、测试和单步了解现有工作流程。

因此,我有同一个项目的两个副本。我希望两个副本的行为方式完全相同,只是第一个项目不应该参与调试。所有JDWP [Java Debug Wire Protocol] 尝试连接和调试远程 Java 进程都应该与最近签出的项目的未触及专用副本有关。

有没有办法做到这一点?

0 投票
1 回答
500 浏览

java - 带有 Eclipse 的 Java:启用调试模式?

我开始使用 Eclipse 用 Ja​​va 开发游戏。众所周知,在编码时必须进行大量调试。但我有以下问题:

我的游戏是全屏的。如果我遇到breakpoint它会停止(就像它应该的那样)并且由于某种原因我不能再切换窗口(我使用的是 Windows 7)。我必须按Ctrl++并Alt启动Delete“任务管理器”才能切换到 Eclipse 窗口并继续调试。

所以我尝试使用窗口模式而不是全屏模式。现在,如果我遇到breakpointEclipse 窗口(自动)获得焦点,我可以轻松调试。

所以我认为在窗口模式下会很棒,当且仅当我处于调试模式时,否则它应该是全屏的。

为此,我需要知道我是否处于调试模式。在阅读了这个这个之后,您似乎无法轻松检查,因为它取决于您使用的虚拟机。此外,最好的解决方案似乎是使用 EclipseDebug/Run-Configuration并设置 VM 或程序参数。

但是我怎么知道Eclipse这个配置用于调试模式呢?还是有更好的方法来确定调试是打开还是关闭?

0 投票
1 回答
344 浏览

java - Maven jgit JDWP 传输错误

我最近开始使用 jgitflow for maven 并遇到以下问题。

当我运行 mvn jgitflow:release-start 一切正常,发布分支被创建,pom 文件被更新,等等。

当我尝试运行 mvn jgitflow:release-end 时,出现以下错误:

我的 MAVEN_OPTS 设置如下:

我已经验证没有使用 8213 端口,并且已经多次更改它,每次都得到相同的结果。

任何帮助表示赞赏;谢谢。

0 投票
1 回答
688 浏览

java - Java 8 中嵌入式 JRE 中的 JDWP

我一直试图弄清楚如何使用完整的 jre 或 compact3 配置文件让 jdwp 与嵌入式 Java 一起工作。在这两种情况下,它都找不到 libjdwp.so。

根据这个文档,它应该被支持,除了 JRE 的最小 VM 选项。我正在使用 ARMv5 Linux (linux-arm-sflt) 版本,我怀疑它可能不再包含这个?不过它在 EJRE7 中,所以我很惊讶它现在不见了。有人知道吗?

0 投票
2 回答
300 浏览

java - 生活在远程 JVM 中的对象的 JDI 镜像的生命周期

我一直在编写一个 Java 客户端,它使用JDI在远程 JVM 中创建和修改对象(通过连接到在远程 JVM 中运行的基于JDWP代理的服务器)。我的项目的要求之一是我不能暂停远程 JVM 中的所有线程,这意味着我创建的对象在我可以在 JVM 中访问它们之前可能会受到垃圾收集的影响。

在某些情况下,我在远程 JVM 中创建对象,但它们是随机被垃圾收集的。例如,如果我通过 在远程 JVM 中创建一个数组ArrayType.newInstance(int),有时该数组将被垃圾收集,然后我才能使其从远程 JVM 中的另一个可访问对象“可访问”。

例如,如果我试图将新数组存储到现有可访问对象的字段中,则调用ObjectReference.setValue(Field, Value)可能会随机抛出一个. ObjectCollectedException):

从理论上讲,aObjectReference的镜像甚至可以在我能够调用之前被垃圾收集ObjectReference.disableCollection()(无论如何,由于其他原因,我不想采取这个步骤)。

所以我的问题是,JDI 上是否有任何记录在案Value的寿命保证?

  • 远程 JVM 中原始值的镜像是否免于 GC?(有人认为会是,但方法文档中没有任何说明。)VirtualMachine. mirror*()
  • 字符串的镜像是否免于 GC?(有人会认为不是,但 JavaDoc 似乎保持沉默。)
  • 我假设任何其他人ObjectReference都可以随时进行 GC,除非您之前设法在其上禁用 GC?

在此先感谢您的帮助!

0 投票
0 回答
299 浏览

java - 在没有确定端口的情况下在 Yarn 上远程调试 Java 应用程序

我已经用谷歌搜索并知道使用以下选项来启用调试远程 Java 应用程序。

但是,我的应用程序会在 Yarn 中运行,一台机器上可能会有多个进程。因此,由于端口冲突,我无法在 java 选项中设置确定性端口。Yarn 的痛点是 Yarn 不管理端口资源,所以不知道未使用的端口。

我们对 JMX 有类似的要求。幸运的是,我们可以自己在我们的应用程序中启动 JMX 服务器,比如

在该start方法中,我们将尝试端口,直到找到可用的端口,然后返回此端口。

所以我在 JDWP 中寻找类似的 API。提前感谢您的帮助。

0 投票
1 回答
490 浏览

android - 如何监视/捕获从 JDWP 到 Android VM 的数据包?

我正在开发一个使用 JDWP 的 Java 调试器,与 Android VM 对话。

我最感兴趣的是从桌面转到模拟器,而不是在设备上。我知道在设备上,这是完全不同的事情,所以这就是为什么我想集中精力从桌面到模拟器。

我发现一些常见的 JDWP 数据包命令会出现“ERROR_NOT_IMPLEMENTED”错误,因此如果我可以监视或能够捕获来自已知工作调试器的 JDWP 数据包,以更好地了解什么组合会容易得多他们正在发送的命令。能够得到回复也很好。

我查看了 Wireshark 和 WinDump,但它们似乎都是基于接口的,无论我尝试使用什么设置,我都没有得到任何数据包方面的信息。

我的问题是,有什么工具可以用来做这个吗?

谢谢!

0 投票
0 回答
122 浏览

android - JDWP 是否需要使用 TCP ACK?

我在为 Android 开发 JDWP 调试器方面已经走了很长一段路,但我遇到了一些问题,但我想知道是否发送 TCP ACK,如果需要的话..

当我查看使用 jdb 针对 Android 模拟器的会话时,我看到很多 TCP ACK 数据包从 jdb 发送到 VM。

现在我没有尝试发送任何额外的 TCP 信息包,除了 JDWP 命令并获得回复,我需要做任何额外的事情吗?

谢谢!

0 投票
0 回答
409 浏览

java - 在调试模式下运行 SBT。“libjdwp:transport.so: 无法打开共享对象文件:没有这样的文件或目录”

我有系统:

debian-sid(8.0)

sbt(0.13.7)

java(测试了不同的版本

1)openjdk 7u75-2.5.4-1

2)openjdk 1.8.0_40-internal-b09

3) oracle jdk 1.8.0_31-b13)。

当我尝试在调试模式下运行应用程序时

我总是得到一个错误:

任何建议如何使调试工作?

更新: sbt 0.13.6 工作正常。它是一个错误还是现在它是在 sbt 中使用调试器的另一种方式?