jjzjj

java - JDI:如何像在调试器中那样暂停 Java 应用程序 (JVM)

我正在寻找潜在的JDIAPI,以便在JVM执行期间的任意点暂停JVM。看着BreakPointRequestcreateBreakpointRequest方法需要一个特定的位置。是否有任何其他API不需要位置或以某种方式获取可以传递以创建断点的当前位置。我基本上是在寻找一种方法来附加和暂停应用程序,然后使用JVMTI代理接收BreakPoint事件的回调以执行进一步处理。谢谢 最佳答案 断点只对源代码中的某个位置有意义。任意暂停您的应用程序可能最好通过暂停当前在JVM中运行的所有线程来完成。看看SuspendThreadList()

java - 行断点在某些类中不起作用

我正在使用intellijIdea调试在tomcat上运行的应用程序。但我有一个问题,在某些类中,行断点不起作用(方法断点工作正常......但速度很慢)。通过从方法断点或另一个类进入类,我可以到达特定的代码行或检查变量,但调试器不会在任何行上停止。(IntelliJ显示空的红色圆圈(没有十字))更新:此问题不限于Tomcat。我在不同项目的Weblogic上有同样的问题。所以要么是Idea的问题,要么是Java的问题。可能的原因是什么?没有特殊的编译器选项,当我反编译类时,LineNumberTables和LocalVariableTables就在那里。这两个类(一个行断点很好,一个

java - 以编程方式进行线程转储/JDI(Java 调试器接口(interface))

我喜欢以编程方式生成线程转储。我了解到基本上有两种方法可以做到这一点:使用“Java虚拟机工具接口(interface)”JVM-TI使用更高抽象的“Java调试器接口(interface)”JDI对于JVM-TI,我能够找到一些有用的信息,但我必须编写一个JNI-DLL,至少目前我想避免这样做。通过JDI,我可以使用Java,而且我似乎可以在应用程序中使用它。但是我找不到它的某种教程或HOWTO。我能找到的唯一文档是Java文档http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdi/这不是很有帮助,因为它没有告诉我如何使用这些类。那么,有

java - Java 的 DebuggerStepThrough 等价物

.NET有几个方便的注释,指示调试器单步执行/越过某些方法。我想知道是否有适用于Java平台的等效项。例如:@DebuggerStepThroughpublicvoidfoo(){..}会导致调试器在单步执行时不在foo中停止。我尝试了什么在类文件中使用SYNTHETIcflags。这会导致javac禁止用户代码调用此类方法。自定义属性。没有JDIAPI检索注释。在thisforum上也提到了.附言。我正在实现一个调试器并控制发出的字节码 最佳答案 据我所知,不是股票特征,不是。否则,我还可以推荐您查看Eclipse调试器的“步进过

Java 调试接口(interface)、Lambda 和行号

我在更新调试器以使用Java8时遇到一些问题。例如考虑以下程序:publicclassLam{publicstaticvoidmain(String[]args){java.util.function.Functionsquare=x->{intresult=0;for(inti=0;i正如预期的那样,Java8将lambda编译为如下所示:>javap-c-p-v-s-constantsLamClassfileLam.class...privatestaticjava.lang.Integerlambda$main$0(java.lang.Integer);...Code:stack

java - 使用 Eclipse 远程调试器抛出 com.sun.jdi.InternalException

抛出以下错误:com.sun.jdi.InternalException:Goterrorcodeinreply:35occurredwhileretrievingvalue.forallexpressions我在所有表达式中都收到此错误,但在其上找不到任何内容。我的猜测是调试器没有正确连接到远程版本,但我不确定。 最佳答案 问题似乎与新的调试功能“在单步操作后显示方法结果”有关:见线程EclipseOxygen-DebuggingIssue在Eclipse论坛上:解决方法是转到首选项->Java->调试并禁用该选项"在单步操作后显

java - 使用 Eclipse 远程调试器抛出 com.sun.jdi.InternalException

抛出以下错误:com.sun.jdi.InternalException:Goterrorcodeinreply:35occurredwhileretrievingvalue.forallexpressions我在所有表达式中都收到此错误,但在其上找不到任何内容。我的猜测是调试器没有正确连接到远程版本,但我不确定。 最佳答案 问题似乎与新的调试功能“在单步操作后显示方法结果”有关:见线程EclipseOxygen-DebuggingIssue在Eclipse论坛上:解决方法是转到首选项->Java->调试并禁用该选项"在单步操作后显

java - com.sun.jdi.InvocationException 发生调用方法

我只想创建一个类的对象,但在调试时出现此错误。谁能告诉我问题是什么?此代码的位置在某个Spring(2.5)服务类中。有一个类似的问题:OJBReferenceDescriptor1:0relationship?ShouldIsetauto-retrievetofalse?非常感谢~ 最佳答案 根本原因是java调试接口(interface)在调试的时候会调用你类的toString()在弹出框中显示类信息,所以如果toString方法定义不正确,就有可能出现这种情况。 关于java-co

java - com.sun.jdi.InvocationException 发生调用方法

我只想创建一个类的对象,但在调试时出现此错误。谁能告诉我问题是什么?此代码的位置在某个Spring(2.5)服务类中。有一个类似的问题:OJBReferenceDescriptor1:0relationship?ShouldIsetauto-retrievetofalse?非常感谢~ 最佳答案 根本原因是java调试接口(interface)在调试的时候会调用你类的toString()在弹出框中显示类信息,所以如果toString方法定义不正确,就有可能出现这种情况。 关于java-co

java - 如何导入和使用com.sun.jdi.VirtualMachine

我在包com.sun.jdi中找到了一些专为调试而设计的类,例如VirtualMachine,但我不能使用它,因为SunJDK7中似乎不存在包。如何使用这个包?顺便说一句。lib/sa-jdi.jar和我想要的不一样 最佳答案 根据thispage,您链接到的VirtualMachine类是tools.jar文件的一部分,该文件仅在JDK(而非JRE)中分发。它说..."UpdateNote2:TheAttachAPIisintools.jar,soyouwillneedtoadd/lib/tools.jarinyourCLASSP
12