/Z7
, , /Zi
/ZI
(Format informacji debugowania)
Opcje kompilatora /Z7
, /Zi
i /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.
Brak
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 /debug
to . Aby uzyskać więcej informacji, zobacz /DEBUG
(Generowanie informacji o debugowaniu).
Po określeniu wartości /Zi
i /clr
DebuggableAttribute 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>.pdb
PDB , 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 /Zi
programu , 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
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).
Wybierz stronę właściwości Właściwości>konfiguracji C/C++>General.
Zmodyfikuj właściwość Format informacji debugowania. Wybierz przycisk OK , aby zapisać zmiany.
Aby programowo ustawić tę opcję kompilatora
- Zobacz: DebugInformationFormat.
Zobacz też
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC