/Z7、/Zi、/ZI(調試資訊格式)

來源:互聯網
上載者:User

 

選擇為程式建立的調試資訊的類型,並選擇是將此資訊儲存在對象 (.obj) 檔案還是程式資料庫 (PDB) 中。

/Z{7|i|I}
 備忘

下表描述了這些選項。

不產生任何調試資訊,因此編譯較快。

/Z7

產生包含用於調試器的完整符號調試資訊的 .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) 的編譯器中。

編譯器將程式資料庫命名為 項目.pdb。如果編譯沒有項目的檔案,則編譯器將建立名為 VCx0.pdb. 的資料庫,其中 x 是正在使用的 Visual C++ 的主要版本。編譯器將 PDB 的名稱嵌入每個使用此選項建立的 .obj 檔案中,從而使調試器瞭解符號和行號資訊的位置。當使用此選項時,.obj 檔案將較小,因為調試資訊儲存在 .pdb 檔案中而不是 .obj 檔案中。

如果從使用此選項編譯的對象建立庫,則在將庫連結到程式時,關聯 .pdb 檔案必須可用。因此,如果發布此庫,就必鬚髮布 PDB。

若要不使用 .pdb 檔案建立包含調試資訊的庫,必須選擇編譯器的 C 7.0 相容 (/Z7) 選項。如果使用先行編譯頭選項,則先行編譯頭和其他原始碼的調試資訊都放在 PDB 中。指定了“程式資料庫”選項時將忽略 /Yd 選項。

在 Visual Studio 開發環境中設定此編譯器選項
  1. 開啟此項目的“屬性頁面”對話方塊。有關詳細資料,請參見如何:開啟項目屬性頁面。

  2. 單擊“C/C++”檔案夾。

  3. 單擊“常規”屬性頁面。

  4. 修改“調試資訊格式”屬性。

以編程方式設定此編譯器選項
  • 請參見 DebugInformationFormat。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.