我以前没有构建过Java Web应用程序,但我已经完成了测试,Maven正在构建我的WAR文件。 它是一个多模块Maven项目,并且依赖模块都将其JAR文件放在WAR的WEB-INF / lib目录中。 所以一切似乎都很好,但如何调试? 我知道如何(从命令行)在我的机器上运行Tomcat中的WAR。 我也认为我知道如何从命令行设置和运行Maven Jetty插件。 但是如何最好地调试…我喜欢Eclipse的所有断点和变量检查? 我应该创建某种启动配置,还是远程连接调试器? Eclipse中有什么东西可以帮助…就像一个插件?
我正在尝试使用Eclipse作为IDE在我的机器上调试一个简单的Java应用程序。 当我尝试通过进入Debug Perspective来调试应用程序时,我设置了一个断点并开始调试。 在几秒钟内,出现以下弹出窗口: Launching unicodeRead has encountered a problem. Cannot connect to VM Launching unicodeRead has encountered a problem. Cannot connect to VM 。 转储到控制台的消息如下: ERROR: transport error 202: connect failed: Connection refused ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:708] FATAL ERROR in native method: […]
我正在研究非常庞大的基于Java web的应用程序。 由于在开发过程中没有进行适当的日志记录,因此我很难设置断点并调试应用程序,因为我不知道执行顺序。 在执行某些操作后,是否有任何机制可以获取正在运行的java应用程序的完整调用堆栈。 我在网上搜索了很长时间,但无法找到具体的解决方案。 如果有什么东西,请建议我。 谢谢
是否有类似于OllyDbg / SoftICE for java的实用程序? 即执行类(来自jar / with class path),并且在没有源代码的情况下,显示中间代码的反汇编,能够逐步执行/跳过/搜索引用/编辑内存中的特定中间代码/将编辑应用于文件。 。 如果没有,是否甚至可以写这样的东西(假设我们愿意在调试期间没有热点的情况下生活)? 编辑:我不是在谈论JAD或JD或Cavaj。 这些都是很好的反编译器,但我不想要一个反编译器有几个原因,最值得注意的是它们的输出不正确(充其量,有时只是简单的错误)。 我不是在寻找一个神奇的“编译到java代码的字节” – 我想看到即将执行的实际字节。 此外,我希望能够更改这些字节(就像在汇编调试器中一样),并希望将更改的部分写回类文件。 Edit2:我知道javap存在 – 但它只有一种方式(并且没有任何分析)。 示例(代码取自vmspec文档):从java代码中,我们使用“javac”来编译它: void setIt(int value) { i = value; } int getIt() { return i; } 到java .class文件。 使用javap -c我可以得到这个输出: Method void setIt(int) 0 aload_0 1 iload_1 2 putfield #4 5 return Method int getIt() […]
我在java中使用eclipse和编程。 有时我遇到一个会让我困扰几个小时的nullPointerException。 无论如何,更好地调试nullPointerExceptions并找出哪些变量值和其他会导致空指针exception的事情。
我有一个非常奇怪的问题。 我正在使用Eclipse中的Java SWING应用程序。 我在代码中的某处设置了一个断点,然后运行调试。 我执行包含断点的代码片段,但总是跳过它。 一旦我运行了一些抛出未捕获exception的代码,断点就会再次被触发,而不会改变其他任何东西。 抛出exception的代码和包含断点的代码不相关。 我试图在几个地方设置断点,但是在抛出exception之前它们永远不会被击中。 我只针对这个特定的应用程序有这个问题。 我的调试器适用于其他SWING应用程序。 你能想出造成这种情况的原因吗?
我试图通过在调试模式下运行名为testSendStream的测试并在测试执行时逐步执行代码来了解此 Functional Reactive Java库。 上面的快照显示有一个名为this$0的奇怪命名变量。 这个名字来自哪里? 这个名字是什么意思? 为什么这个变量有这个名字? 给它这个名字背后的原因是什么? 当然这个名称不是来自代码本身,它是由IntelliJ或javac / java生成的。 但为什么 ? 如果我通过标签Mystery Object标记此对象,那么看到会发生什么也很有趣。
javac的-g:vars (局部变量调试信息)选项究竟是什么提供输出。 做一些测试,没有附加信息(例如-g:source,lines和-g:source,lines,vars之间没有区别。 有人有这些局部变量调试信息的例子吗?
在java中,可以获取调用当前方法的类和方法(获取StackTrace的方法)。 我的问题是,我可以获取传递给调用此方法的方法的参数吗? 我需要这个用于调试目的。 例如: baseClass { initialFunc(input) { var modifiedInput = input + ” I modified you”; otherClass.doSomething(modifiedInput); } } otherClass { doSomething(input) { //GET THE ARGUMENTS PASSED TO THE METHOD OF THE CLASS THAT CALLED THIS METHOD } } 可以从堆栈跟踪中获取此信息,还是有其他方法? (注意,我需要能够在运行时执行此操作,并且实际上无法更改baseClass的源代码,这将是我的调试类的一个function,它不会事先知道源代码) 谢谢。
我正在使用Eclipse 3.5,并将src.zip附加到Eclipse中的全局设置。 Windows – >首选项 – > Java – >已安装的JRE – > rt.jar – 源附件 – ….. / jdk / src.zip 我成功地介入了java核心库.class文件并查看了源代码。 我构建了一个使用LinkedList的类,我在LinkedList类中设置了一个断点。 当我调试源代码中的断点(我的项目)工作正常但是当我需要进入java核心库.classes时,我在Eclipse中遇到以下错误 由于缺少行号属性,无法在java.util.LinkedList中安装断点。 修改编译器选项以生成行号属性。 我检查了首选项中的编译器设置,发现所有选项都选中了。 如果有人可以帮我解决这个问题,那就太好了。 提前致谢。