/Z7
, /Zi
/ZI
(디버그 정보 형식)
/Z7
, /Zi
및 /ZI
컴파일러 옵션은 프로그램에 대해 생성된 디버깅 정보의 유형과 이 정보가 개체 파일 또는 프로그램 데이터베이스(PDB) 파일에 보관되는지 여부를 지정합니다.
구문
/Z7
/Zi
/ZI
설명
디버그 옵션을 지정하면 컴파일러는 디버거에서 사용할 함수 및 변수, 형식 정보 및 줄 위치에 대한 기호 이름을 생성합니다. 이 기호 디버깅 정보는 컴파일러에서 생성한 개체 파일(.obj
파일) 또는 실행 파일에 대한 별도의 PDB 파일( .pdb
파일)에 포함될 수 있습니다. 디버그 정보 형식 옵션은 다음 섹션에 설명되어 있습니다.
None
기본적으로 디버그 정보 형식 옵션을 지정하지 않으면 컴파일러는 디버깅 정보를 생성하지 않으므로 컴파일이 더 빠릅니다.
/Z7
이 /Z7
옵션은 디버거와 함께 사용할 전체 심볼 디버깅 정보도 포함하는 개체 파일을 생성합니다. 이러한 개체 파일 및 해당 파일에서 빌드된 라이브러리는 디버깅 정보가 없는 파일보다 훨씬 클 수 있습니다. 기호 디버깅 정보에는 변수, 함수 및 줄 번호의 이름과 형식이 포함됩니다. 컴파일러에서 PDB 파일을 생성하지 않습니다. 그러나 링커에 옵션이 전달 /DEBUG
된 경우에도 이러한 개체 파일 또는 라이브러리에서 PDB 파일을 생성할 수 있습니다.
타사 라이브러리의 디버그 버전 배포자의 경우 PDB 파일이 없다는 장점이 있습니다. 그러나 미리 컴파일된 헤더에 대한 개체 파일은 라이브러리 링크 단계 및 디버깅에 필요합니다. 개체 파일에 형식 정보만 있고 코드 .pch
가 없는 경우 라이브러리를 빌드할 때 기본적으로 사용하도록 설정된 (디버그 라이브러리에 대한 PCH 참조 삽입) 옵션도 사용해야 /Yl
합니다.
지정한 /Gm
경우 사용되지 않는(최소 다시 빌드 사용) 옵션을 사용할 수 없습니다 /Z7
.
/Zi
이 /Zi
옵션은 디버거와 함께 사용할 모든 기호 디버깅 정보를 포함하는 별도의 PDB 파일을 생성합니다. 디버깅 정보는 개체 파일이나 실행 파일에 포함되지 않으므로 훨씬 작습니다.
사용은 /Zi
최적화에 영향을 주지 않습니다. 그러나 의미 /Zi
합니다 /debug
. 자세한 내용은 (디버그 정보 생성)을 참조 /DEBUG
하세요.
둘 다 /Zi
/clr
지정하면 특성이 DebuggableAttribute 어셈블리 메타데이터에 배치되지 않습니다. 원하는 경우 소스 코드에서 지정해야 합니다. 이 특성은 애플리케이션의 런타임 성능에 영향을 줄 수 있습니다. 특성이 성능에 Debuggable
미치는 영향 및 성능 영향을 수정하는 방법에 대한 자세한 내용은 이미지를 디버그하기 쉽게 만들기를 참조하세요.
컴파일러는 PDB 파일 <project>.pdb
의 이름을 지정합니다. 여기서 <project>
프로젝트의 이름입니다. 프로젝트 외부에서 파일을 컴파일하는 경우 컴파일러는 사용 VC<x>.pdb
<x>
중인 컴파일러 버전의 주 버전 및 부 버전 번호가 연결된 PDB 파일을 만듭니다. 컴파일러는 이 옵션을 사용하여 만든 각 개체 파일에 PDB 이름과 식별 타임스탬프 서명이 포함됩니다. 이 이름과 서명은 디버거를 기호 및 줄 번호 정보의 위치로 가리킵니다. PDB 파일의 이름과 서명은 디버거에 로드할 기호의 실행 파일과 일치해야 합니다. WinDBG 디버거는 명령을 사용하여 일치하지 않는 기호를 로드할 .symopt+0x40
수 있습니다. Visual Studio에는 일치하지 않는 기호를 로드하는 유사한 옵션이 없습니다.
사용하여 컴파일된 /Zi
개체에서 라이브러리를 만드는 경우 라이브러리가 프로그램에 연결된 경우 연결된 PDB 파일을 사용할 수 있어야 합니다. 즉, 라이브러리를 배포하는 경우 PDB 파일도 배포해야 합니다. PDB 파일을 사용하지 않고 디버깅 정보가 포함된 라이브러리를 만들려면 이 옵션을 선택 /Z7
해야 합니다. 미리 컴파일된 헤더 옵션을 사용하는 경우 미리 컴파일된 헤더와 나머지 소스 코드 모두에 대한 디버깅 정보가 PDB 파일에 배치됩니다.
/ZI
이 /ZI
옵션은 유사/Zi
하지만 편집 및 계속 기능을 지원하는 형식으로 PDB 파일을 생성합니다. 편집 및 계속 디버깅 기능을 사용하려면 이 옵션을 사용해야 합니다. 편집하며 계속하기 기능은 개발자 생산성에 유용하지만 코드 크기, 성능 및 컴파일러 규칙에서 문제가 발생할 수 있습니다. 대부분의 최적화는 편집 및 계속과 호환되지 않으므로 코드에서 문을 사용하지 /ZI
#pragma optimize
않도록 설정합니다. 이 /ZI
옵션은 미리 정의된 매크로의 __LINE__
사용과도 호환되지 않습니다. 컴파일된 /ZI
코드는 매크로 확장에 사용할 수 있지만 __LINE__
형식이 아닌 템플릿 인수로 사용할 __LINE__
수 없습니다.
이 /ZI
옵션은 (함수 수준 연결 사용) 및 /FC
(진단에서 소스 코드 파일의 전체 경로) 옵션을 컴파일에 사용하도록 강제 /Gy
합니다.
/ZI
와 호환되지 않습니다 /clr
(공용 언어 런타임 컴파일).
참고 항목
이 /ZI
옵션은 x86 및 x64 프로세서를 대상으로 하는 컴파일러에서만 사용할 수 있습니다. 이 컴파일러 옵션은 ARM 프로세서를 대상으로 하는 컴파일러에서 사용할 수 없습니다.
Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.
구성 속성>C/C++>일반 속성 페이지를 선택합니다.
디버그 정보 형식 속성을 수정합니다. 확인을 선택하여 변경 내용을 저장합니다.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- DebugInformationFormat을(를) 참조하세요.