/Z7, , /Zi/ZI (Format informacji debugowania)

Opcje kompilatora /Z7, /Zii /ZI określają typ informacji debugowania utworzonych dla programu i określa, czy te informacje są przechowywane w plikach obiektów, czy w pliku bazy danych programu (PDB).

Składnia

/Z7
/Zi
/ZI

Uwagi

Po określeniu opcji debugowania kompilator tworzy nazwy symboli dla funkcji i zmiennych, informacji o typie i lokalizacji linii do użycia przez debuger. Te informacje debugowania symbolicznego można uwzględnić w plikach obiektów (.obj plikach) utworzonych przez kompilator lub w osobnym pliku PDB ( .pdb pliku) pliku wykonywalnego. Opcje formatu informacji debugowania zostały opisane w poniższych sekcjach.

None

Domyślnie, jeśli nie określono opcji formatu informacji debugowania, kompilator nie generuje informacji debugowania, więc kompilacja jest szybsza.

/Z7

Opcja /Z7 tworzy pliki obiektów, które zawierają również pełne informacje debugowania symbolicznego do użycia z debugerem. Te pliki obiektów i wszystkie biblioteki utworzone na ich podstawie mogą być znacznie większe niż pliki, które nie mają informacji o debugowaniu. Informacje o debugowaniu symbolicznym obejmują nazwy i typy zmiennych, funkcji i numerów wierszy. Żaden plik PDB nie jest generowany przez kompilator. Jednak plik PDB może być nadal generowany na podstawie tych plików obiektów lub bibliotek, jeśli konsolidator zostanie przekazany /DEBUG .

W przypadku dystrybutorów wersji debugowania bibliotek innych firm istnieje zaleta braku pliku PDB. Jednak pliki obiektów dla wstępnie skompilowanych nagłówków są niezbędne w fazie linku biblioteki i do debugowania. Jeśli w pliku obiektu znajdują się tylko informacje o typie .pch (bez kodu), należy również użyć /Yl opcji (Wstrzykiwanie odwołania PCH dla biblioteki debugowania), która jest domyślnie włączona podczas kompilowania biblioteki.

Przestarzała /Gm opcja (Włącz minimalną ponowną kompilację) jest niedostępna po /Z7 określeniu.

/Zi

Opcja /Zi tworzy oddzielny plik PDB zawierający wszystkie symboliczne informacje debugowania do użycia z debugerem. Informacje o debugowaniu nie są uwzględniane w plikach obiektów ani pliku wykonywalnego, co sprawia, że są znacznie mniejsze.

Korzystanie z programu /Zi nie ma wpływu na optymalizacje. Jednak /Zi oznacza /debugto . Aby uzyskać więcej informacji, zobacz /DEBUG (Generowanie informacji o debugowaniu).

Po określeniu wartości /Zi i /clrDebuggableAttribute atrybut nie jest umieszczany w metadanych zestawu. Jeśli chcesz, musisz określić go w kodzie źródłowym. Ten atrybut może mieć wpływ na wydajność środowiska uruchomieniowego aplikacji. Aby uzyskać więcej informacji na temat wpływu atrybutu Debuggable na wydajność i sposobu modyfikowania wpływu na wydajność, zobacz Tworzenie obrazu łatwiejszego do debugowania.

Kompilator nazywa plik <project>.pdbPDB , gdzie <project> jest nazwą projektu. Jeśli skompilujesz plik poza projektem, kompilator tworzy plik PDB o nazwie VC<x>.pdb, gdzie <x> jest łączeniem głównej i pomocniczej wersji używanej wersji kompilatora. Kompilator osadza nazwę pliku PDB i identyfikujący sygnaturę czasową w każdym pliku obiektu utworzonym przy użyciu tej opcji. Ta nazwa i podpis wskazują debugerowi lokalizację informacji symbolicznych i numerów wiersza. Nazwa i podpis w pliku PDB muszą być zgodne z plikiem wykonywalnym, aby symbole zostały załadowane w debugerze. Debuger WinDBG może ładować niezgodne symbole przy użyciu .symopt+0x40 polecenia . Program Visual Studio nie ma podobnej opcji ładowania niezgodnych symboli.

Jeśli tworzysz bibliotekę na podstawie obiektów skompilowanych przy użyciu /Ziprogramu , skojarzony plik PDB musi być dostępny, gdy biblioteka jest połączona z programem. Oznacza to, że w przypadku dystrybucji biblioteki należy również rozpowszechnić plik PDB. Aby utworzyć bibliotekę zawierającą informacje debugowania bez używania /Z7 plików PDB, należy wybrać opcję . Jeśli używasz opcji prekompilowanych nagłówków, informacje debugowania zarówno dla prekompilowanego nagłówka, jak i pozostałej części kodu źródłowego są umieszczane w pliku PDB.

/ZI

Opcja jest podobna /ZI do /Zi, ale generuje plik PDB w formacie obsługującym funkcję Edytuj i Kontynuuj . Aby użyć funkcji edytuj i kontynuuj debugowanie, należy użyć tej opcji. Funkcja Edytuj i kontynuuj jest przydatna w przypadku produktywności deweloperów, ale może powodować problemy ze zgodnością z rozmiarem kodu, wydajnością i kompilatorem. Ponieważ większość optymalizacji jest niezgodna z funkcją Edytuj i kontynuuj, użycie /ZI wyłącza wszystkie #pragma optimize instrukcje w kodzie. Opcja /ZI jest również niezgodna z użyciem wstępnie zdefiniowanego__LINE__makra. Kod skompilowany z /ZI poleceniem nie może być używany __LINE__ jako argument szablonu innego niż typ, chociaż __LINE__ może być używany w rozszerzeniach makr.

Opcja /ZI wymusza użycie opcji /Gy (Włącz łączenie na poziomie funkcji) i /FC (pełna ścieżka pliku kodu źródłowego w diagnostyce).

/ZI jest niezgodny z /clr (kompilacja środowiska uruchomieniowego języka wspólnego).

Uwaga

Opcja /ZI jest dostępna tylko w kompilatorach przeznaczonych dla procesorów x86 i x64. Ta opcja kompilatora nie jest dostępna w kompilatorach przeznaczonych dla procesorów ARM.

Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio

  1. Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).

  2. Wybierz stronę właściwości Właściwości>konfiguracji C/C++>General.

  3. Zmodyfikuj właściwość Format informacji debugowania. Wybierz przycisk OK , aby zapisać zmiany.

Aby programowo ustawić tę opcję kompilatora

Zobacz też

Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC