다음을 통해 공유


/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 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>C/C++>일반 속성 페이지를 선택합니다.

  3. 디버그 정보 형식 속성을 수정합니다. 확인을 선택하여 변경 내용을 저장합니다.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문