Nice programing

Java 스택 추적을 읽고 이해하는 방법은 무엇입니까?

nicepro 2020. 11. 14. 11:05
반응형

Java 스택 추적을 읽고 이해하는 방법은 무엇입니까?


예를 들어 다음과 같은 스택 추적이 있습니다.

java.lang.NullPointerException
abc.investxa.presentation.controllers.UnixServerJobController.handleRequest(UnixServerJobController.java:66)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

그렇다면이 예외의 근본 원인은 무엇입니까? 스택 추적 doFilter에서 OncePerRequestFilter클래스의 함수에 문제가 있음을 알았습니다 ! 그러나 거기에 중단 점을두면 프로그램이 중단 점에서 멈추지 않습니다.

누구든지 이것에 대해 설명 할 수 있습니까!? 그리고 일반적으로 디버깅을 위해 스택 케이스를 어떻게 사용해야합니까 (아래에서 위로 또는 위에서 아래로 읽음)!


일반적으로 정확한 원인은 Exception스택 추적의 첫 번째 줄에 있으며 해당 예외의 원인에 대한 자세한 내용을 보려면 점차적으로 아래로 이동해야하며 근본 원인은 스택 추적의 맨 아래에서 찾을 수 있습니다. .

그러나 대부분의 경우 처음 몇 줄에서 예외의 원인을 얻을 수도 있습니다.

따라서이 경우 예외는 at handleRequest메서드이고 아래쪽으로 이동하면 이전 메서드를 호출 한 메서드입니다 (스택 추적에서 현재 메서드 위에있는 메서드).


일반적으로 위에서부터 읽어야합니다 handleRequest. 따라서이 경우 메서드 의 UnixServerJobController 66 행에 NullPointerException이 있습니다. 이 메서드는에 의해 SimpleControllerHandlerAdapter.handle호출되었으며 DispatcherServlet.doDispatch등에서 호출되었습니다 .

그러나이 특별한 경우에는 스택 추적의 첫 번째 프레임 만 있으면됩니다. 의 66 행을보고 UnixServerJobControllernull이 될 수있는 것을 찾아 그에 따라 행동하십시오.

때때로 하나의 예외가 다른 예외로 래핑된다는 점에 유의하십시오 (이는 다른 예외로 래핑 될 수 있음). 이 경우 스택 추적을 살펴보아야 합니다. 가장 유용한 정보를 제공하는 "가장 중첩 된"예외가 근본 원인이기 때문입니다.


튜토리얼은 문제에 대한 정보를 제공하고 상황을 더 잘 이해하는 데 도움이 될 수 있습니다.

문제에 따라 Unix Server Job Controller 클래스의 66 행에 Null Pointer Exception이있는 것 같습니다.


이 튜토리얼이 나에게 매우 유용하다는 것을 알았습니다 https://forums.bukkit.org/threads/how-to-read-stack-traces-and-troubleshoot-your-own-plugins-by-yourself.32457/

참고 URL : https://stackoverflow.com/questions/12688068/how-to-read-and-understand-the-java-stack-trace

반응형