GNU Fortran 개발자 옵션(GNU Fortran Developer Options)

GNU Fortran 개발자 옵션(GNU Fortran Developer Options)

일반 사용자보다는 GNU Fortran 컴파일러 자체를 디버깅할 때 쓰는 옵션들을 모아둔 문서예요. 프론트엔드의 내부 표현이나 파스 트리(parse tree)를 덤프해서, 컴파일러가 소스를 어떻게 이해했는지 들여다볼 때 유용해요.

출처: Developer Options (The GNU Fortran Compiler)

본문

GNU Fortran에는 GNU Fortran 컴파일러 자체를 디버깅하기 위한 여러 특별한 옵션이 있어요.

-fdump-fortran-global

소스가 중간 표현(middle-end representation)으로 번역된 뒤의 전역 식별자 목록을 출력해요. 주로 GNU Fortran 컴파일러 자신을 디버깅할 때 유용해요. 이 옵션이 만드는 출력은 릴리스마다 바뀔 수 있어요. 또 최근에 추가된 기능에 대해서는 내부 컴파일 오류(internal compiler error)를 일으킬 수도 있어요.

-fdump-fortran-optimized

프론트엔드 최적화를 거친 뒤의 파스 트리를 출력해요. 역시 주로 GNU Fortran 컴파일러 자체를 디버깅할 때 유용하고, 출력은 릴리스마다 바뀔 수 있으며 최근 기능에서 내부 컴파일 오류가 날 수 있어요.

-fdump-fortran-original

소스 프로그램이 내부 표현으로 번역된 뒤의 내부 파스 트리를 출력해요. 주로 GNU Fortran 컴파일러 자체를 디버깅할 때 유용해요. 출력은 릴리스마다 바뀔 수 있고, 최근 기능에서 내부 컴파일 오류가 날 수 있어요.

-fdump-parse-tree

소스 프로그램이 내부 표현으로 번역된 뒤의 내부 파스 트리를 출력해요. 주로 GNU Fortran 컴파일러 자체를 디버깅할 때 유용해요. 출력은 릴리스마다 바뀔 수 있고, 최근 기능에서 내부 컴파일 오류가 날 수 있어요. 이 옵션은 더 이상 사용되지 않으며(deprecated), 대신 -fdump-fortran-original을 쓰는 게 좋아요.

-save-temps

보통 '임시'로 처리되는 중간 파일들을 영구히 저장해요. GCC의 -dumpbase-dumpdir에 설명된 대로 보조 출력 파일로 이름을 붙여요.

gfortran -save-temps -c foo.F90

이 명령은 입력 파일 foo.F90를 전처리해 foo.fii로 만들고, 중간 foo.s로 컴파일한 다음 (암묵적인) 출력 파일 foo.o로 어셈블해요. 반면에:

gfortran -save-temps -S foo.F

이 명령은 전처리 결과를 foo.fi에 저장하고, 그다음 (암묵적인) 출력 파일 foo.s로 컴파일해요.

더 알아보기

  • 파스 트리 덤프 옵션들은 '컴파일러가 이 소스를 이렇게 이해했다'를 보여주므로, 프론트엔드 동작을 추적할 때 가장 직접적인 도구예요.
  • 이 옵션들이 만드는 출력은 컴파일러 내부 구현과 얽혀 있어서 버전별로 안정적이지 않아요. 스크립트 등에서 파싱해 쓰기보다는 사람이 읽는 용도로 쓰는 게 적절해요.
  • -save-temps는 전처리 단계를 손으로 보고 싶을 때 특히 유용해요. 어떤 지시문이 어떻게 확장됐는지 확인할 수 있거든요.