UFO ET IT

타사 라이브러리의 Eclipse에서 중단 점을 설정하는 방법은 무엇입니까?

ufoet 2021. 1. 14. 07:51
반응형

타사 라이브러리의 Eclipse에서 중단 점을 설정하는 방법은 무엇입니까?


타사 라이브러리의 클래스에서 NullPointerException이 발생합니다. 이제 모든 것을 디버그하고 싶습니다. 어떤 객체에서 클래스가 유지되는지 알아야합니다. 하지만 제 3 자 클래스에서 중단 점을 설정할 수없는 것 같습니다.

누구든지 내 문제에서 벗어날 방법을 알고 있습니까? 물론 Eclipse를 IDE로 사용하고 있습니다.

업데이트 : 라이브러리는 오픈 소스입니다.


이 작업을 수행하는 가장 확실한 방법 (실제로 유용한 작업으로 끝남)은 소스 (오픈 소스라고 말함)를 다운로드하고 해당 소스를 가리키는 또 다른 "자바 프로젝트"를 설정하는 것입니다.

그렇게하려면 소스를 다운로드하고 시스템 어딘가에 압축을 풉니 다. "파일"-> "새로 만들기"-> "Java 프로젝트"를 클릭합니다. 다음 대화 상자에서 프로젝트 이름을 지정하고 "기존 소스에서 프로젝트 만들기"를 선택합니다. 오픈 소스 라이브러리의 루트 위치를 찾습니다.

프로젝트에 필요한 모든 추가 라이브러리가 다운로드 한 프로젝트에 포함되어 있다고 가정하면 Eclipse는 모든 것을 파악하고 빌드 경로를 설정합니다.

프로젝트의 빌드 경로에서 오픈 소스 jar를 제거하고이 새 프로젝트를 프로젝트의 빌드 경로에 추가해야합니다.

이제 이것을 코드로 취급하고 마음대로 디버그 할 수 있습니다.

이것은 다른 접근 방식에서 적어도 몇 가지 문제를 해결합니다.

  1. jar 파일에 "소스를 첨부"할 수 있지만 jar 파일이 디버그 정보없이 컴파일 된 경우 여전히 작동하지 않습니다. jar 파일이 디버그 정보로 컴파일 된 경우 ( lines,source,vars... http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html-g옵션 참조)

  2. NullPointerException이 언제 발생하는지 확인하기 위해 "예외 중단 점"을 추가 할 수 있지만 이는 일반적인 예외이며 찾고있는 것보다 여러 번 발생하고 처리 할 수 ​​있습니다. 또한 원본 소스가 없으면 NullPointerException을 발생시키는 코드에 대해 많은 것을 실제로 볼 수 없습니다. 무엇이 잘못되었는지 파악할 수있는 가능성은 매우 낮습니다.


소스 없이도 타사 라이브러리에서 메서드 중단 점을 쉽게 설정할 수 있습니다. 수업을 열기 만하면됩니다 ( "i-have-no-source"보기가 표시됨). 개요를 열고 원하는 메서드를 마우스 오른쪽 단추로 클릭 한 다음을 클릭 Toggle Method Breakpoint하여 메서드 중단 점을 만듭니다.


특정 예외에 중단 점을 설정할 수도 있습니다. 디버그 관점에서 "Java 예외 중단 점 추가"단추가 있으며 여기에 "NullPointerException"을 추가 할 수 있습니다. 그런 다음 디버거는 이러한 예외가 발생하는 즉시 실행을 일시 중단합니다.


일반적으로 중단 점을 설정할 수 있어야합니다. 특히 타사 라이브러리가 오픈 소스 인 경우. 그러나 타사 라이브러리가 상용 공급 업체에서 제공 한 경우 디버그 플래그를 끈 상태에서 소스를 컴파일했을 수 있습니다. 이로 인해 디버그 할 수 없습니다. 공급 업체는 라이브러리를 리버스 엔지니어링하는 것을 불가능하게하는 난독 화 프로세스의 일부로이를 수행했거나 단순히 최종 컴파일 된 클래스가 더 작기 때문에이를 수행했을 수 있습니다.


소스를 첨부 (또는 소스 jar를 자동으로 첨부하는 것을 사용) 한 다음 관심 줄의 왼쪽을 두 번 클릭하여 일반적인 방식으로 중단 점을 설정하십시오.


메이븐의 구체화 된 웹 앱으로이 작업을 수행하려면 세 가지 작업을 수행해야했습니다.

1) 타사 jar의 소스 코드로 새 이클립스 프로젝트를 만듭니다.

2) pom.xml 종속성에서 jar에 대한 참조를 제거하십시오.

3) 프로젝트 속성의 Deployment Assembly에 새 Eclipse 프로젝트를 추가합니다.

4) 타사 프로젝트를 참조하는 기존 프로젝트의 프로젝트 속성-> Java 빌드 경로-> 프로젝트에 새 이클립스 프로젝트를 추가합니다.

세 번째 프로젝트가 소스와 함께 maven 저장소에 올바르게 추가 된 경우 maven은 적절한 소스 코드를 자동으로 다운로드하고 위의 단계를 수행하지 않고도 중단 점을 추가 할 수 있습니다. 그러나 나는 당신이 항상 이것을 믿을 수는 없다는 것을 배웠습니다.

참조 URL : https://stackoverflow.com/questions/370814/how-to-set-a-breakpoint-in-eclipse-in-a-third-party-library

반응형