2016-11-17 6 views
0

Java 코드에서 바이트 코드로 세부 컴파일 과정을 알고 싶습니다. 예를 들어 라인 Java 코드가 바이트 코드로 변환되는 방식과 같이 자바 컴파일러 소스 코드에서 중단 점을 설정하고 싶습니다. 그것을하는 방법, 거기에 대한 참조 또는 단계가 무엇입니까?Java 컴파일러 소스 코드 (Javac) 자체를 디버깅하는 방법은 무엇입니까?

BTW, Java 디버거를 사용하는 방법을 묻지 않습니다. (분명히 사용 방법을 알고 있습니다.) Java 소스 코드 대신 Java 컴파일러 소스 코드를 디버깅하는 방법을 말합니다.

+0

[컴파일러 구성] (https://en.wikipedia.org/wiki/Compiler)은 대학 등에서 주로 공부하는 고급 주제입니다. 어디에서 시작해야할지 모르시는 경우, 필요한 기본 지식이 거의 없을 것입니다 이 프로젝트에 성공했다. 컴파일러는 C++로 작성되었으므로 "중단 점 넣기"만으로 어떤 일이 발생하는지 알 수 없습니다. – Kayaman

+1

@Kayaman : JavaC가 무엇으로 작성되었는지는 모르겠지만, 작성된 언어에 디버거가 있어야하며 중단 점을 설정할 수 있습니다. 나는이 컴파일러를 내 컴파일러에서 해냈다. 이것이 디버깅을위한 유일한 기술은 아닙니다. –

+0

@IraBaxter 어, 나는 잘못 생각했다. Javac은 실제로 JVM과 같은 C++이 아닌 Java로 작성되었습니다. 그래서이 질문은 컴파일러의 절반을 만들고 디버거를 사용하는 방법의 절반입니다. 다른 언어에는 디버거가 있다는 것을 알고 있습니다. 출발점이 너무 낮 으면 중요하지 않다고 생각합니다. – Kayaman

답변

2

컴파일러가 어떻게 작동하는지에 대한 질문은 대답하기에 너무 광범위합니다. 표준 컴파일러 텍스트 북을 읽으십시오.

에 대해서는 컴파일러를 디버깅 :

나는 주로 컴파일러 (자기 진단) 및 다양한 언어에 초점을 맞춘 작은 대상 언어 테스트 프로그램의 큰 스위트 룸에서 주장을 사용하는 경향이

는 자신의 정확한 기능을 스스로 확인하고 있습니다. (필자의 마지막 컴파일러에는 10 년 동안 구축 된이 테스트 프로그램 중 약 1000 개가 작성되었으며, 모두 컴파일 및 실행하는 스크립트가있다.) 종종 어설 션이나 테스트의 실패는 컴파일러가 잘못되고 단순한 검사로 버그를 식별하는 것을 나에게 암시합니다.

종종 컴파일러 상태에 대한 주요 정보를 덤프하는 특수 코드를 추가하고 문서화되지 않은 특수 명령 줄 스위치로 활성화 할 수있는 활동을 추적합니다. 이러한 특수 덤프는 컴파일러의 잘못된 위치를 나타내며 버그 검사 위치를 식별하기 위해 코드 검사를 다시 허용합니다.

나는 컴파일러를 작성한 언어로 디버거를 사용합니다.

나는이 기술을 특별히 특별하다고 생각하지 않습니다. 크고 복잡한 응용 프로그램으로 작업 할 때 유용합니다.

+0

컴파일러의 작동 방식을 묻지 않았습니다. Java 컴파일러 자체에서 중단 점을 설정하는 방법을 물어 보았습니다. (Java 소스 코드를 컴파일 할 때 Java 컴파일러의 소스 코드가 있다고 가정하십시오.) –

+0

@Hermas : 재미 있습니다. 내가 자바 코드에서 바이트 코드로 컴파일 과정을 알고 싶다고 말했다. 대부분의 사람들은 "컴파일러의 작동 방식을 알고 싶습니다"라고 해석합니다. 그것이 당신의 질문이 아니라면, 당신은 그것을 아주 잘 표현하지 못했습니다. JavaC에서 "중단 점 설정"방법을 알고 싶다면 Java 개발 도구를 얻고 디버거가 중단 점을 설정하는 방법을 배우는 것이 좋습니다. 왜 이것이 눈에 띄지 않습니까? –

+0

분명히 일식이나 아이디어 같은 IDE에서 Java 코드의 중단 점을 설정하는 방법을 알고 있지만 JavaC의 중단 점을 설정하는 방법은 무엇입니까? 즉, 소스 코드가있는 JavaC를 IDE로 가져온 다음 소스 코드로 JavaC를 기본 디버거로 설정해야하지만이 두 단계는 어떻게 수행해야합니까? –