gpt4 book ai didi

java - 调试从 Tomcat (JSP) 运行的 Java 程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:55 28 4
gpt4 key购买 nike

我不知道为什么我从来没有发现自己必须使用调试器来单步执行我的程序并查看发生了什么,可能是因为我习惯于使用解释性语言,例如 PHP,它变得非常容易添加调试代码 (print_r) 并实时查看更改。

但是对于这个新的 Java 项目,我觉得我必须学习正确的调试方法。

所以这个不是我写的程序在 Tomcat 上运行并使用基本的 JSP。问题是,当我尝试访问特定的 JSP 页面时,它会抛出异常并向我提供所发生情况的堆栈跟踪信息:

org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:503)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:363)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:306)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.sgrp.singer.filters.SingerLoginFilter.doFilter(SingerLoginFilter.java:128)

我如何使用 JDB 等工具单步执行我的程序?我无法真正单步执行特定类,因为我需要模仿我的 JSP 正在做的事情...我想通过命令行完成此操作,而不使用 IDE。

最佳答案

首先,必须使用某些参数启动 java 才能插入调试器:

-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

是用于我们目的的参数。之后,您使用 IDE 并远程连接调试器。你给一段代码设置断点(请确保本地文件和远程程序是完全相同的版本)并产生错误。您也可以为未捕获的异常设置断点。

作为提示:您可以更改引用的错误捕获 JSP(对我们来说是 error.jsp)以不仅显示捕获异常的堆栈跟踪(ex.getStracktrace),还显示导致堆栈跟踪(ex.getCause( ).getStacktrace()).这可能有助于识别更高级别的异常原因。

编辑:抱歉,如果没有 IDE,这是人类可能无法完成的信息溢出。 Tomcat 应用程序在体系结构级别上很复杂,会在许多不同的类之间切换以满足最简单的请求。

关于java - 调试从 Tomcat (JSP) 运行的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4087370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com