打開此項目的「屬性頁」對話框。web
單擊「C/C++」文件夾。數據庫
單擊「常規」屬性頁。函數
修改「調試信息格式」屬性。性能
該選項的設置:優化
主要是選擇爲程序建立的調試信息的類型,並選擇是將此信息保存在對象 (.obj) 文件仍是程序數據庫 (PDB) 中。spa
/Z{7|i|I}
下表描述了這些選項。debug
無調試
不產生任何調試信息,所以編譯較快。code
/Z7orm
生成包含用於調試器的完整符號調試信息的 .obj 文件。符號調試信息包括變量的名稱和類型以及函數和行號。不會生成任何 .pdb 文件。
對於第三方庫的發佈者,不生成 .pdb 文件是一個優勢。可是,在連接和調試期間,用於預編譯頭的 .obj 文件是必需的。若是 .pch 對象文件中只有類型信息(沒有代碼),則還必須使用 /Yl(爲調試庫插入 PCH 引用) 進行編譯。
/Zi
產生包含用於調試器的類型信息和符號調試信息的程序數據庫 (PDB)。符號調試信息包括變量的名稱和類型以及函數和行號。
/Zi 不影響優化。可是,/Zi 的確暗示了 /debug;有關更多信息,請參見 /DEBUG(生成調試信息)。
類型信息放置在 .pdb 文件而不是 .obj 文件中。
能夠將 /Gm(啓用最小從新生成) 和 /Zi 結合使用,但使用 /Z7 編譯時不能使用 /Gm。
使用 /Zi 和 /clr 編譯時,DebuggableAttribute 屬性將不會被放入程序集元數據中;若是要使用該屬性,則必須在源代碼中指定它。該屬性可影響應用程序的運行時性能。有關 Debuggable 屬性如何影響性能以及如何減輕性能影響的更多信息,請參見令映像更易於調試。
/ZI
以支持「編輯並繼續」功能的格式產生如上所述的程序數據庫。若是想使用「編輯並繼續」調試,則必須使用此選項。由於大多數優化與「編輯並繼續」不兼容,因此使用 /ZI 會禁用代碼中的全部 #pragma optimize 語句。
/ZI 會致使在編譯中使用 /Gy(啓用函數級連接)。
/ZI 與 /clr(公共語言運行庫編譯) 不兼容。
![]() |
---|
/ZI 只可用於面向 x86 的編譯器中;此編譯器選項不可用於面向 x64 或 Itanium 處理器系列 (IPF) 的編譯器中。 |
編譯器將程序數據庫命名爲 project.pdb。若是編譯沒有項目的文件,則編譯器將建立名爲 VCx0.pdb. 的數據庫,其中 x 是正在使用的 Visual C++ 的主版本。編譯器將 PDB 的名稱嵌入每一個使用此選項建立的 .obj 文件中,從而使調試器瞭解符號和行號信息的位置。當使用此選項時,.obj 文件將較小,由於調試信息存儲在 .pdb 文件中而不是 .obj 文件中。
若是從使用此選項編譯的對象建立庫,則在將庫連接到程序時,關聯 .pdb 文件必須可用。所以,若是發佈此庫,就必須發佈 PDB。
若要不使用 .pdb 文件建立包含調試信息的庫,必須選擇編譯器的 C 7.0 兼容 (/Z7) 選項。若是使用預編譯頭選項,則預編譯頭和其餘源代碼的調試信息都放在 PDB 中。指定了「程序數據庫」選項時將忽略 /Yd選項。