Bagikan melalui


/Z7, , /Zi/ZI (Format Informasi Debug)

Opsi /Z7, /Zi, dan /ZI kompilator menentukan jenis informasi penelusuran kesalahan yang dibuat untuk program Anda, dan apakah informasi ini disimpan dalam file objek atau dalam file database program (PDB).

Sintaks

/Z7
/Zi
/ZI

Keterangan

Saat Anda menentukan opsi debug, pengkompilasi menghasilkan nama simbol untuk fungsi dan variabel, informasi jenis, dan lokasi baris untuk digunakan oleh debugger. Informasi penelusuran kesalahan simbolis ini dapat disertakan baik dalam file objek (.obj file) yang dihasilkan oleh pengkompilasi, atau dalam file PDB terpisah ( .pdb file) untuk file yang dapat dieksekusi. Opsi format informasi debug dijelaskan di bagian berikut.

Tidak

Secara default, jika tidak ada opsi format informasi debug yang ditentukan, pengkompilasi tidak menghasilkan informasi penelusuran kesalahan, sehingga kompilasi lebih cepat.

/Z7

Opsi ini /Z7 menghasilkan file objek yang juga berisi informasi penelusuran kesalahan simbolis penuh untuk digunakan dengan debugger. File objek dan pustaka apa pun yang dibangun darinya dapat jauh lebih besar daripada file yang tidak memiliki informasi penelusuran kesalahan. Informasi penelusuran kesalahan simbolis mencakup nama dan jenis variabel, fungsi, dan nomor baris. Tidak ada file PDB yang diproduksi oleh pengkompilasi. Namun, file PDB masih dapat dihasilkan dari file objek atau pustaka ini jika linker diteruskan ke /DEBUG opsi .

Untuk distributor versi debug pustaka pihak ketiga, ada keuntungan untuk tidak memiliki file PDB. Namun, file objek untuk header apa pun yang telah dikompretasi diperlukan selama fase tautan pustaka, dan untuk penelusuran kesalahan. Jika hanya ada informasi jenis (dan tidak ada kode) dalam .pch file objek, Anda juga harus menggunakan /Yl opsi (Menyuntikkan Referensi PCH untuk Pustaka Debug), yang diaktifkan secara default, saat Anda membangun pustaka.

Opsi tidak digunakan lagi /Gm (Aktifkan Pembangunan Ulang Minimal) tidak tersedia saat /Z7 ditentukan.

/Zi

Opsi ini /Zi menghasilkan file PDB terpisah yang berisi semua informasi penelusuran kesalahan simbolis untuk digunakan dengan debugger. Informasi penelusuran kesalahan tidak disertakan dalam file objek atau dapat dieksekusi, yang membuatnya jauh lebih kecil.

Penggunaan /Zi tidak memengaruhi pengoptimalan. Namun, /Zi menyiratkan /debug. Untuk informasi selengkapnya, lihat /DEBUG (Hasilkan Info Debug).

Saat Anda menentukan dan /Zi /clr, DebuggableAttribute atribut tidak ditempatkan dalam metadata rakitan. Jika menginginkannya, Anda harus menentukannya dalam kode sumber. Atribut ini dapat memengaruhi performa runtime aplikasi. Untuk informasi selengkapnya tentang bagaimana Debuggable atribut memengaruhi performa dan bagaimana Anda dapat memodifikasi dampak performa, lihat Membuat gambar lebih mudah di-debug.

Pengkompilasi menamai file <project>.pdbPDB , di mana <project> adalah nama proyek Anda. Jika Anda mengkompilasi file di luar proyek, pengkompilasi membuat file PDB bernama VC<x>.pdb, di mana <x> adalah perangkaian nomor versi utama dan minor dari versi kompilator yang digunakan. Pengkompilasi menyematkan nama PDB dan tanda tangan tanda waktu identifikasi di setiap file objek yang dibuat menggunakan opsi ini. Nama dan tanda tangan ini mengarahkan debugger ke lokasi informasi simbolis dan nomor baris. Nama dan tanda tangan dalam file PDB harus cocok dengan yang dapat dieksekusi agar simbol dimuat dalam debugger. Debugger WinDBG dapat memuat simbol yang tidak cocok dengan menggunakan .symopt+0x40 perintah . Visual Studio tidak memiliki opsi serupa untuk memuat simbol yang tidak cocok.

Jika Anda membuat pustaka dari objek yang dikompilasi menggunakan /Zi, file PDB terkait harus tersedia saat pustaka ditautkan ke program. Itu berarti, jika Anda mendistribusikan pustaka, Anda juga harus mendistribusikan file PDB. Untuk membuat pustaka yang berisi informasi penelusuran kesalahan tanpa menggunakan file PDB, Anda harus memilih /Z7 opsi . Jika Anda menggunakan opsi header yang telah dikompilasi sebelumnya, informasi penelusuran kesalahan untuk header yang telah dikompilasi sebelumnya dan kode sumber lainnya ditempatkan dalam file PDB.

/ZI

Opsi /ZI ini mirip /Zidengan , tetapi menghasilkan file PDB dalam format yang mendukung fitur Edit dan Lanjutkan . Untuk menggunakan fitur Edit dan Lanjutkan penelusuran kesalahan, Anda harus menggunakan opsi ini. Fitur Edit dan Lanjutkan berguna untuk produktivitas pengembang, tetapi dapat menyebabkan masalah dalam ukuran kode, performa, dan kesuaian kompilator. Karena sebagian besar pengoptimalan tidak kompatibel dengan Edit dan Lanjutkan, menggunakan /ZI menonaktifkan pernyataan apa pun #pragma optimize dalam kode Anda. Opsi /ZI ini juga tidak kompatibel dengan penggunaan __LINE__ makro yang telah ditentukan; kode yang dikompilasi dengan /ZI tidak dapat digunakan __LINE__ sebagai argumen templat non-jenis, meskipun __LINE__ dapat digunakan dalam ekspansi makro.

Opsi ini /ZI memaksa /Gy opsi (Aktifkan Penautan Tingkat Fungsi) dan /FC (Jalur Lengkap File Kode Sumber dalam Diagnostik) untuk digunakan dalam kompilasi Anda.

/ZI tidak kompatibel dengan /clr (Kompilasi Runtime Bahasa Umum).

Catatan

Opsi /ZI ini hanya tersedia di pengkompilasi yang menargetkan prosesor x86 dan x64. Opsi pengkompilasi ini tidak tersedia di pengkompilasi yang menargetkan prosesor ARM.

Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio

  1. Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Pilih halaman properti Properti>Konfigurasi C/C++>General.

  3. Ubah properti Format Informasi Debug. Pilih OK untuk menyimpan perubahan.

Untuk mengatur opsi pengkompilasi ini secara terprogram

Lihat juga

Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC