디버그 컴파일러 옵션

AIX용 COBOL 및 AIX용 PL/I 프로그램 디버깅과 관련된 컴파일러 옵션은 다음과 같습니다.

표 1. AIX용 COBOL 및 AIX용 PL/I 디버그 컴파일러 옵션
컴파일러 옵션 정의
-g 소스 코드의 디버그 정보를 생성하는 컴파일러를 프롬프트합니다. 코드를 디버그하려면 이 옵션을 지정해야 합니다.
-qtest 소스 코드의 디버그 기호 정보를 생성하는 컴파일러를 프롬프트합니다. 코드의 변수를 표시하고 변경하려면 이 옵션을 지정해야 합니다.

-qtest를 지정하면 행 정보 외에 기호 정보를 생성하는 -g도 함께 지정됩니다.

참고: -qtest 컴파일러 옵션은 AIX용 PL/I 프로그램 디버깅에 대해서만 연관이 있습니다.

이러한 컴파일러 옵션은 AIX용 IBM XL C/C++ 및 Linux용 IBM XL C/C++ 프로그램을 디버깅하는 것과 관련이 있습니다. AIX용 COBOL 및 AIX용 PL/I 프로그램 디버깅에 대해서는 관련이 없습니다.

표 2. AIX용 IBM XL C/C++ 및 Linux용 IBM XL C/C++ 디버그 컴파일러 옵션
컴파일러 옵션 정의
-g

-g는 소스 코드의 디버그 정보를 생성하는 컴파일러를 프롬프트합니다. 코드를 디버그하려면 이 옵션을 지정해야 합니다.

또한 컴파일러는 정해진 수준의 디버그 기능을 유지하면서 실행 파일 크기를 줄이거나 특히, -O2 옵션과 결합된 경우에 애플리케이션 성능을 향상하기 위해 이러한 확장 -g 레벨을 지원할 수 있습니다.

-g9-g 기능을 제공합니다. 디버거를 통해 변수값을 수정하면 메모리에 기록되고 모든 실행 가능 행이 디버거에 의해 스텝될 수 있습니다.

-g8은 변수에 대한 디버그 정보를 줄입니다. 디버거를 통한 변수값에 대한 수정은 다시 메모리에 기록될 수 없습니다. 모든 실행 가능 행이 디버거에 의해 스텝될 수 있습니다.

-g5는 변수에 대한 디버그 정보를 줄입니다. 디버거를 통한 변수값에 대한 수정은 다시 애플리케이션 메모리에 기록될 수 없습니다. 또한 -g5 옵션은 실행 가능 행에 대해 저장되는 디버그 정보의 양도 줄입니다. 각 기능의 첫 번째 실행 가능 행 및 선택된 제어 플로우 명령문만이 디버거에 의해 스텝될 수 있습니다. 기타 행은 실행 불가능으로 표시되며 디버거가 스텝 스루할 수 없습니다.

-qfullpath 디버그 정보에 추가할 모든 소스 파일의 전체 이름을 생성합니다. 이를 통해 디버거가 소스 파일을 보다 쉽게 찾을 수 있습니다.
-qheapdebug 디버그 힙을 사용할 결과 프로그램을 강제 실행합니다. 힙 손상이 발생하면 디버거가 이를 발견하여 발견된 위치에서 중지할 수 있습니다.
참고: 이 옵션은 AIX에서만 지원됩니다.
-qlinedebug 코드에서 변수를 볼 수 있는 디버그 정보가 생성되지 않도록 합니다. 결과 실행 파일 특히, C++ 프로그램의 크기를 현저히 감소시킵니다. 코드를 최적화하면 디버거가 변수값을 안전하게 표시할 수 없으므로 이 옵션은 코드를 최적화하는 경우 사용하는 것이 좋습니다.
-qtbtable 모든 함수가 완료된 후에 역추적 테이블 생성을 제어합니다. 코드가 디버그되는 경우 -qtbtable=none을 지정하지 않는 것이 좋습니다.
-qdbxextra 참조되지 않은 유형에 대해 디버그 정보를 포함시키도록 컴파일러를 강제 실행합니다. 이 옵션은 결과 실행 파일의 크기가 매우 커지게 되므로 일반적으로 권장되지 않습니다.
참고: 이 옵션은 AIX에서만 지원됩니다.
-qsmp=noopt 기본적으로 -qsmp 옵션은 아웃라인 기능(병렬 리젼 내의 코드)에 대한 최적화를 적용합니다. 이러한 최적화는 프로그램 및 디버거 정보 간에 불일치를 생성하며 아웃라인 코드를 실행할 때 디버거가 개인용 및 공유 로컬 변수 둘 다에 대해 잘못된 값을 표시하는 원인이 됩니다. -qsmp 대신 -qsmp=noopt를 사용하면 이러한 최적화를 사용하지 않으며 더 쉽게 병렬 리젼을 디버그할 수 있습니다.

피드백