JDK 소스코드 디버깅 시 변수 값을 볼 수 없는 문제는 어떻게 해결하나요?
몇일 전 원래는 디버그 모드에서 JDK 소스코드를 살펴보고 싶었는데, 디버그 모드에 들어가보니 메소드에서 변수 값이 전혀 보이지 않는 것을 발견했습니다. 왜? 현재 버전의 JDK에서는 컴파일 후 디버깅 정보가 제거됩니다. 해결 방법은 해당 클래스를 디버깅 정보로 컴파일하고 javac -g
명령을 사용하는 것입니다. 관련 정보를 확인한 후 아래 솔루션을
d 루트 디렉터리에 배치합니다. jdk7_src 및 jdk_debug 디렉토리.
-
JDK_HOME 디렉터리에서 src.zip 파일을 찾아 jdk7_src 디렉터리에 파일의 압축을 푼 다음 압축이 풀린 디렉터리에서 java, javax, org를 제외한 모든 항목을 삭제합니다. .
-
JDK_HOMEjrelib 아래의 rt.jar을 작업 디렉터리, 즉 d:의 루트 디렉터리에 넣습니다. (명령줄에서 많은 수의 파일 이름을 지정하지 않아도 되므로 편리합니다.) .
-
dir /B /S /X jdk7_src*.java > filelist.txt 명령을 실행하여 컴파일해야 하는 Java 파일 목록, javac 명령 컴파일을 위한 입력 소스 파일, dir 명령 관련 매개변수를 생성합니다. 설명, /B: 추가 파일 정보를 출력하지 않습니다(헤더 정보 또는 요약 없음), /S: 지정된 디렉터리 및 모든 하위 디렉터리의 파일을 표시합니다., /X: 8.3이 아닌 파일에 대해 생성된 짧은 이름을 표시합니다. 이름. 형식은 /N 형식이며, 긴 이름 앞에 짧은 이름이 삽입됩니다. 짧은 이름이 없으면 그 자리에 공백이 표시됩니다.
- Execute
javac -J-Xms16m -J-Xmx1024m -sourcepath d:jdk7_src -cp d:rt.jar -d d:jdk_debug -g @filelist.txt >>log.txt 2>&1 컴파일 후 파일은 jdk_debug 폴더에 저장되고, 컴파일로 생성된 로그는 log.txt 파일에 저장됩니다. 로그 파일에 많은 경고가 표시되지만 오류 메시지는 표시되지 않습니다.
jdk_debug 디렉토리에 들어가서 jar cf0 rt_debug.jar * 명령을 실행하고, 컴파일된 파일을 rt_debug.jar 패키지로 패키징합니다.
- 새로 생성된 jar 패키지를
JDK_HOMEjrelibendorsed에 넣습니다(인증 폴더가 없으면 수동으로 생성하세요).
참고: JDK_HOME은 JDK의 설치 경로를 나타냅니다. 이 문서의 모든 명령은 d: 및 해당 하위 디렉터리에서 실행됩니다.
더 간단하게 하기 위해 아래에 제공하는 JDK7rt_debug.jar의 디버그 버전을 endorsed 폴더에 넣을 수도 있습니다.
References- debug jdk 소스는 변수가 무엇인지 볼 수 없습니다 --stackoverflow
- Java 승인 표준 재정의 메커니즘 --java 가이드
- rt_debug.jar 다운로드
위 내용은 JDK 소스코드 디버깅 시 변수 값을 볼 수 없는 문제는 어떻게 해결하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C++ 다중 스레드 디버깅은 GDB를 사용할 수 있습니다. 1. 디버깅 정보 컴파일을 활성화합니다. 2. 중단점을 설정합니다. 3. 스레드를 보려면 infothread를 사용합니다. 4. 스레드를 전환하려면 next, stepi 및 locals를 사용합니다. 실제 사례 디버깅 교착 상태: 1. threadapplyallbt를 사용하여 스택을 인쇄합니다. 2. 스레드 상태를 확인합니다. 3. 기본 스레드를 한 단계씩 진행합니다. 4. 교착 상태를 해결하기 위해 액세스를 조정합니다.

LeakSanitizer를 사용하여 C++ 메모리 누수를 디버깅하는 방법은 무엇입니까? LeakSanitizer를 설치합니다. 컴파일 플래그를 통해 LeakSanitizer를 활성화합니다. 애플리케이션을 실행하고 LeakSanitizer 보고서를 분석합니다. 메모리 할당 유형과 할당 위치를 식별합니다. 메모리 누수를 수정하고 동적으로 할당된 모든 메모리가 해제되었는지 확인하세요.

이 기사에서는 실행을 일시 중지하고, 변수를 확인하고, 중단점을 설정하는 데 사용되는 내장 디버거 dlv를 포함하여 Go 기능 디버깅 및 분석을 위한 바로 가기를 소개합니다. 로깅 - 로그 패키지를 사용하여 메시지를 기록하고 디버깅 중에 확인합니다. 성능 분석 도구 pprof는 호출 그래프를 생성하고 성능을 분석하며, gotoolpprof를 사용하여 데이터를 분석합니다. 실제 사례: pprof를 통해 메모리 누수를 분석하고 호출 그래프를 생성하여 누수를 일으키는 함수를 표시합니다.

효율적으로 Lambda 표현식을 디버그합니다. IntelliJ IDEA 디버거: 변수 선언이나 메서드에 중단점을 설정하고, 내부 변수와 상태를 검사하고, 실제 구현 클래스를 확인합니다. Java9+JVMTI: 런타임 JVM에 연결하여 식별자를 얻고, 바이트코드를 검사하고, 중단점을 설정하고, 실행 중에 변수와 상태를 모니터링합니다.

동시성 테스트 및 디버깅 Java 동시 프로그래밍의 동시성 테스트 및 디버깅은 매우 중요하며 다음 기술을 사용할 수 있습니다. 동시성 테스트: 단위 테스트: 단일 동시 작업을 격리하고 테스트합니다. 통합 테스트: 여러 동시 작업 간의 상호 작용을 테스트합니다. 부하 테스트: 부하가 심한 상황에서 애플리케이션의 성능과 확장성을 평가합니다. 동시성 디버깅: 중단점: 스레드 실행을 일시 중지하고 변수를 검사하거나 코드를 실행합니다. 로깅: 스레드 이벤트 및 상태를 기록합니다. 스택 추적: 예외의 원인을 식별합니다. 시각화 도구: 스레드 활동 및 리소스 사용량을 모니터링합니다.

PHP 비동기 코드 디버깅을 위한 도구는 다음과 같습니다. Psalm: 잠재적인 오류를 찾는 정적 분석 도구입니다. ParallelLint: 비동기 코드를 검사하고 권장 사항을 제공하는 도구입니다. Xdebug: 세션을 활성화하고 코드를 단계별로 실행하여 PHP 애플리케이션을 디버깅하기 위한 확장입니다. 다른 팁으로는 로깅 사용, 어설션, 로컬에서 코드 실행, 단위 테스트 작성 등이 있습니다.

일반적인 PHP 디버깅 오류는 다음과 같습니다. 구문 오류: 코드 구문을 확인하여 오류가 없는지 확인하세요. 정의되지 않은 변수: 변수를 사용하기 전에 변수가 초기화되고 값이 할당되었는지 확인하세요. 세미콜론 누락: 모든 코드 블록에 세미콜론을 추가합니다. 함수가 정의되지 않았습니다. 함수 이름의 철자가 올바른지 확인하고 올바른 파일이나 PHP 확장이 로드되었는지 확인하세요.

재귀 함수 디버깅에는 다음과 같은 기술이 있습니다. 스택 추적 확인 디버그 포인트 설정 기본 케이스가 올바르게 구현되었는지 확인하는 재귀 호출 횟수를 계산하는 재귀 스택 시각화
