问题标签 [jdi]

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 投票
1 回答
361 浏览

java - JDI ThreadReference.frame() 导致 IncompatibleThreadStateException

目前我正在尝试通过 JDI 提取一些执行数据。因此,我首先使用命令手动启动 java vm

我的 DebugDummy.java:

然后与JDI连接,等待main-method入口和每行通过代码执行的step。

不幸的是,如果我删除 Thread.sleep(),我会在一行中收到 IncompatibleThreadStateException

例外:

怎么了?我是否必须等待某个事件才能更进一步?

0 投票
0 回答
82 浏览

jvm - Instrumentation.redefineClasses 可以触发 VirtualMachine.redefineClasses 吗?

如果一个类已被 Instrumentation.redefineClasses 重新定义,有没有办法触发由 VirtualMachine.redefineClasses 重新定义的 referenceType?

0 投票
1 回答
1628 浏览

java - IntelliJ 2017.1-C 中缺少 Java 调试接口 (com.sun.jdi) 包

我目前正在使用 IntelliJ IDEA Community Edition 2017.1 来处理一个项目,该项目涉及使用经过优化以使用 Groovy的 Greenfoot 端口 ( GitHub )。代码非常好,但 IntelliJ 告诉我 com.sun.jdi 不存在。我不确定如何解决这个问题。有任何想法吗?

旁注:我不太了解 JDI 与 VM 的关系,我怀疑这可能与它有关。

0 投票
0 回答
188 浏览

debugging - java调试接口:获取ObjectReference的值

我跟踪如下代码:

我的班级是:

我知道不是静态的,但是我想获取版本的值,但是值的类型是 com.sun.jdi.ObjectReference,那么我怎样才能获取版本的值呢?

0 投票
1 回答
90 浏览

java - Java JDI 转换为实际的真实类型

我刚刚开始了解 JDI 以创建自定义调试器。我一直在尝试将引用对象转换为真实对象,这样我就可以在不使用调用的情况下访问它们的字段或方法。我将 jar 从目标 vm 包含到项目中,因此我可以访问所有真实对象。然后我尝试强制转换,但得到像com.sun.tools.jdi.ObjectReference cannot be cast to myobject. 有什么办法可以做这样的事情还是你必须使用调用?

0 投票
1 回答
621 浏览

java - 如何调试由 JDI 中的自定义类加载器加载的类

使用参数 -Xdebug, -agentlib:jdwp=transport=dt_socket, server=y, suspend=n, address=4404 启动目标程序。

使用 com.sun.jdi 相关类调试目标程序。VirtualMachine 类的 classesByName 方法。自定义类加载器加载的类不可用。

在目标中,我可以通过

在 VirtualMachine 类中,只有方法:

我应该怎么做?

0 投票
1 回答
165 浏览

java - JDI 为多个类应用类过滤器

我正在创建一个MethodEntryRequest,并且我想将此请求仅应用于 ex:-"java.*"和的两个类模式的方法"sun.*"。为此,我编写了以下代码。

上面代码的问题是它禁用了所有方法事件。但是,如果我只应用一种类模式方法,它就可以正常工作。我尝试逃脱"|""\\\\|"但没有奏效。所以我想知道如何为多个类模式应用类过滤器?

0 投票
1 回答
679 浏览

java - What are the alternatives to Java Debug Interface

I was working with JDI api in JPDA. But due to its some limitation I am stuck at some point. What are the alternatives to JDI so that I can write custom debuggers for Java programs ? Preferably Java alternatives.

0 投票
2 回答
444 浏览

java - Java 调试器接口 (JDI) - 如何设置断点

我问是因为我无法使用谷歌找到任何东西。

我要调试org.Example。我想设置一个断点,然后恢复 VM 执行直到断点。org.Example只是一个虚拟的主要功能。

所以我确实有我的虚拟机,但我没有找到获取Location对象的方法。我将问题减少为无法获取ReferenceType对象。

我的问题:我有一个带有启动连接器的简单命令行调试器

我将类路径设置"<Project_DIR>\out\artifacts\javaDebugger_jar\*"为 VM,调试程序应该在其中运行。该javaDebugger_jar文件夹中有多个 JAR 文件,其中一个包含该org/Example.class文件。

如果我调用“vm.resume()”,程序将执行。我猜在“恢复”之前没有加载主类。

那么这里的程序是什么?如何确保类已加载,或者我是否需要在特定类的方法条目上设置断点(我知道如何),然后在“示例”类的方法条目上设置断点,可以设置断点。

我问是因为这似乎很愚蠢。有没有更好的办法?

0 投票
2 回答
1996 浏览

java - 使用 jdi 构建一个简单的调试器来设置断点并检索变量的值

我正在寻找使用java debug interface构建调试器。
我的目标是设置断点并获取变量的值。
我发现这个答案与我正在寻找的答案很接近,我知道我必须使用以下界面:- VirtualMachineManager、、、、。但我不知道如何在特定行设置断点并获取变量的值或接口的使用顺序。LaunchingConnectorClassPrepareEventClassPrepareRequest

例如在下面的代码中,我如何继续运行它以jdi获取变量的值S

我正在考虑在线上 a = 12或方法结束时设置调试点,main以便我获得S