- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我做的事情与 this question 的原始海报基本相同.就我而言,我尝试在 OS X 10.8.5 上的 Eclipse Kepler 中使用 Oracle jdk1.7.0_72 运行 Sun/Oracle JPDA 示例程序。但是,这些示例的文档似乎假定它们将从命令行运行。
我想使用 com.sun.jdi.connect.LaunchingConnector 来启动被调试程序。它需要类 Map
我的 Eclipse 项目具有默认结构,因此有一个名为“classes”的文件夹,每个包都有一个子文件夹。在我的例子中,它们是“com”、“调试器”和“调试器”。 “com”包包含“Example JDI Applications”中的所有类。
我正在使用上面引用的帖子中引用的“VMLauncher”来进行启动。启动失败;它报告找不到我的主类“debuggee.DebuggerTest”。如果我尝试将完整路径作为我的主类名称的一部分,它也会失败。
如果我打开一个终端并导出一个 CLASSPATH 变量,该变量指定我的 Eclipse 项目(和 JDI 库)中的“类”文件夹,我可以使用命令“java debuggee.DebuggerTest”启动调试对象,它会正确运行。我还可以使用命令“java debugger.TraceLaunch”启动调试器,它又成功启动了被调试程序。这表明 VMLauncher 正在做所有正确的事情。
看来问题出在示例包或 Oracle 的“tools.jar”中的 JDI 包的某个深处,LaunchingConnector 调用命令行启动器。它似乎属于 SunCommandLineLauncher 类。该启动器似乎假定了一个类路径。启动器参数似乎没有记录,所以我不知道是否有指定类路径的选项。 Oracle jdk1.7.0 JDI 类(在“lib/tools.jar”中)的源代码显然尚未发布,因此我无法查看代码以了解启动程序如何使用其参数的详细信息。
另一条可能有用的线索:在示例 JDI 应用程序中,GUI 调试器示例允许指定它尝试解析的类路径。遗憾的是,它无法像 UNIX shell 那样识别引号或字符转义,并且无法理解包含空格字符的文件夹名称。
理想情况下,我想知道如何指定 LaunchingConnector 的类路径。
我的第二个选择是关于在调整命令行程序以在 Eclipse 中运行时如何指定类路径的一些更一般的建议。
最佳答案
Trace 创建的新 VM 具有不同的类路径。如果你想在 eclipse 中运行该程序,你需要在你的跟踪程序中添加以下代码。
Connector.Argument options =(Connector.Argument)arguments.get("options");
options.setValue("-cp \"F:\\Workspace\\TraceProgram\\bin\"");
其中 -cp 将类路径设置为新创建的 VM,您需要更改为您的 eclipse 工作目录。
它对我有用。
关于java - 如何为 JDI 启动连接器指定类路径;使用 Eclipse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27140409/
当我尝试在我的设备上调试时,有时会出现错误并且调试器不会在任何断点处停止。此外,该应用程序甚至无法正常启动,它只是在有点黑屏的情况下卡住,顶部有应用程序图标和名称。 错误是 Eclipse 中的弹出窗
我刚刚开始了解一些用于创建自定义调试器的 JDI。我一直在尝试将引用对象转换为真实对象,这样我就可以在不使用调用的情况下访问它们的字段或方法。我将 jar 从目标虚拟机包含到项目中,这样我就可以访问所
我正在使用 JDI 重新编码方法中的变量状态。根据教程,我没有找到如何获取 objectReference 值,例如 List、Map 或我的自定义类。它只是可以获得PrimtiveValue。 St
我正在创建一个 MethodEntryRequest,我想将此请求仅应用于两个类模式的方法,例如:- "java.*" 和 “太阳。*”。为此,我编写了以下代码。 MethodEntryRequest
我希望使用 java debug interface 构建调试器. 我的目标是设置断点并获取变量的值。 我找到了this回答接近我正在寻找的内容,我知道我必须使用以下接口(interface):- V
我已经声明并初始化了这些哈希表: Hashtable ht = new Hashtable(); ht.put("due", 2); ht.put("tre", 3); ht.put
在JDI中,有一个API可以从JPDA使用的JVM中处理的事件中排除事件。这是使用以下方法完成的: addExclusionFilter(String)排除某些模式;例如addExclusionFil
所以我正在尝试将自己投入到 JDI 中。通过首先使用 VM 命令启动被调试程序,我已经成功地将我的调试器应用程序 Hook 到我的被调试程序中: -agentlib:jdwp=transport=dt
我正在使用 JDI 来调试程序。我正在尝试更改某个对象引用中字段的值。我有 Field 对象,因为我可以通过 找到它 ObjectReference.referencetype().allFields
com.sun.jdi 是一个包,可让您获取有关正在运行的 VM 的信息、添加断点、查看堆栈帧等。 如何获取另一个实例的封闭实例?例如,下面是一些创建内部类 Garfield.Lasagna 的 4
一段时间以来,每个项目中都出现了附加的错误消息。错误发生在调试时,在调试器停止时的断点处。 Step over 和 Step into 然后不工作(一直按 step over 或 into 弹出错误消
我正在使用 JDI 调试另一个正在运行的 java 应用程序。 我所做的有效: 使用 Eclipse 运行两个应用程序。调试器使用以下 VM 选项启动: -Xdebug -Xrunjdwp:trans
我正在将我的应用程序从 JDK 7 迁移到 JDK 8。在执行过程中,我遇到了一个异常 com.sun.jdi.InvocationException occurred invoking method
我在包 com.sun.jdi 中找到了一些专为调试而设计的类,例如 VirtualMachine , 但我不能使用它,因为 Sun JDK7 中似乎不存在包。 如何使用这个包? 顺便说一句。 lib
我正在运行 Eclipse for Java。我创建了一个 XML 文件的 DOM 版本。现在我想更改文件中元素的属性。我在控制 DOM 的类中调用了一个调用方法的方法,在调试时出现了一个对话框,提示
我的代码有错误: xmldata = mContext.getResources().getStringArray(R.array.map1); for(int y = 0; y 13
我一直在编写一个使用 JDI 的 Java 客户端在远程 JVM 中创建和修改对象(通过连接到在远程 JVM 中运行的 JDWP 基于代理的服务器)。我的项目的要求之一是我无法挂起远程 JVM 中的所
我想了解如何使用 jdi 调试 java 代码,但我不知道在哪里可以获得它的源代码。是jdk里的吗?我用eclipse导入了jdk中的src.zip,但似乎没有包含jdi的信息,在哪里可以找到它? 最
我在调试时遇到了这个 eclipse 错误: org.eclipse.jdi.TimeOutException: Timeout occurred while waiting for packet 2
我正在寻找潜在的 JDI API,以便在 JVM 执行期间的任意点暂停 JVM。看着 BreakPointRequest createBreakpointRequest 方法需要一个特定的位置。是否有
我是一名优秀的程序员,十分优秀!