HOW TO:產生適用於 C 和 C++ 程式碼的相依性圖形

這個 Visual Studio 2010 功能套件可讓您藉由產生 Visual Studio 2010 Ultimate 中的相依性圖形來以 C 和 C++ 程式碼視覺化組織與關聯性。 使用這些圖形可幫助您探索、了解及管理原始程式碼內、二進位檔案之間及原始程式檔和標頭檔之間的相依性。 例如,您可以將二進位檔案、命名空間和類別之間的相依性視覺化。 這種圖形以一組用連結或邊緣相連的節點,表示程式碼項目及其關聯性。 如需詳細資訊,請參閱 Visual Studio 功能套件

重要事項重要事項

您必須安裝 Visual Studio 2010 功能套件才能使用這項功能。

若要使用 Visual C 或 Visual C++ 專案執行此工作,Visual C# 必須隨著 Visual Studio 一起安裝。

當您為 C 和 C++ 程式碼產生圖形時,請注意以下項目:

  • 當您開啟包含 C 和 C++ 專案的方案時,更新 IntelliSense 瀏覽資料庫可能需要一些時間。 在這段期間,將無法使用為原始程式檔和標頭檔產生相依性圖形的命令。

    注意事項注意事項

    在您為這些檔案產生相依性圖形之前,請等候 IntelliSense 資料庫完成它的更新。 您可以在 Visual Studio 狀態列中監控這些更新的進度。 如需因為停用某些 IntelliSense 設定而出現之訊息的詳細資訊,請參閱疑難排解。

  • 「組件」一詞是用來參考使用者介面中的「二進位」。 例如,若要查看方案中所有二進位檔案之間的相依性,請在 [架構] 功能表上,指向 [產生相依性圖形],然後按一下 [依組件]。

    注意事項注意事項

    如果是二進位檔案,圖形只會顯示二進位層級的相依性。 例如,相同二進位檔內的相依性 (例如方法呼叫和參考型別) 則不會顯示。

  • 對於 C 和 C++ 程式碼而言,產生之圖形文件的預設名稱為 "AssemblyDependenciesN.dgml",其中 N 是文件的版本號碼。 您可以隨時重新命名此文件。

  • 您可以針對整個 Visual Studio 方案或特定的項目來產生相依性圖形。

    注意事項注意事項

    如果您的方案很大,產生相依性圖形可能需要一些時間來分析所有的檔案,或者會導致記憶體用完的例外狀況。 如果發生這個狀況,請減少方案的範圍或是使用 [架構總管] 選取特定的項目和關聯性,然後才能產生圖形。

  • 請針對 C 和 C++ 程式碼使用相同的步驟來產生相依性圖形,就像是 .NET 程式碼一樣。 如需詳細資訊,請參閱HOW TO:產生適用於 .NET 程式碼的相依性圖形

如需有關針對 C 或 C++ 程式碼產生相依性圖形時可能發生之問題的詳細資訊,請參閱疑難排解。

查看原始程式檔與標頭檔之間的相依性

您可以將 C 與 C++ 原始程式檔與標頭檔之間的相依性視覺化。 您可以選擇下列的相依性範圍來進行視覺化:

機器碼相依性圖形

C++ 專案內包含檔案的相依性圖形

  • 方案中的所有原始程式檔和標頭檔

  • 目前開啟的檔案及所有第一層的原始程式檔和標頭檔

若要查看之間的相依性

請依照下列步驟:

方案中的所有原始程式檔和標頭檔

在 [架構] 功能表上,指向 [產生相依性圖形],然後按一下 [By Included File] (依包含的檔案)。

注意事項注意事項
當您初次執行這個命令時,Visual Studio 必須分析 C 或 C++ 專案檔。這可能需要一些時間。若要取消圖形的產生,請在出現的訊息方塊中按一下 [取消]。

目前開啟的檔案及所有第一層的原始程式檔和標頭檔

秘訣秘訣
若要檢視其他層的相依性,請使用圖形工具列上的 [網路上的芳鄰瀏覽模式] 來選取您想要查看的相依性層級。如需詳細資訊,請參閱 HOW TO:瀏覽和巡覽圖形文件
  1. 開啟原始程式檔或標頭檔。

    此檔案會在程式碼編輯器視窗中開啟。

  2. 以滑鼠右鍵按一下檔案中的任何地方,然後按一下 [Generate Graph for Included Files] (為包含的檔案產生圖形)。

.h 檔案的第一層相依性圖形

具有第一層原始程式檔和標頭檔之標頭檔的相依性圖形

疑難排解

當您為 C 或 C++ 程式碼產生相依性圖形時,可能會發生下列問題:

問題

可能的原因

解決方式

當您嘗試從 [架構] 功能表產生相依性圖形時,Visual Studio 會變得反應遲緩。

程式資料庫 (.pdb) 檔案可能會損毀。

.pdb 檔案會儲存偵錯資訊,例如型別、方法和原始程式檔資訊。

如需詳細資訊,請參閱程式資料庫檔案 (C++)

重建方案後再試一次。

IntelliSense 瀏覽資料庫的某些設定已停用。

某些 IntelliSense 設定可能已在 Visual Studio [選項] 對話方塊中停用。

開啟這些設定來加以啟用。

如需詳細資訊,請參閱選項對話方塊、文字編輯器、C/C++、進階

[未知方法] 訊息出現在方法節點上。

發生這個問題是因為無法解析方法的名稱。

二進位檔可能沒有基底重新配置表格。

在連結器中開啟 /FIXED:NO 選項。

如需詳細資訊,請參閱 /FIXED (固定基底位址)

只支援在 x86 架構上執行的二進位檔案。

程式資料庫 (.pdb) 檔案可能無法建置。

.pdb 檔案會儲存偵錯資訊,例如型別、方法和原始程式檔資訊。

如需詳細資訊,請參閱程式資料庫檔案 (C++)

在連結器中開啟 /DEBUG 選項。

如需詳細資訊,請參閱 /DEBUG (產生偵錯資訊)

無法在預期的位置中開啟或找到 .pdb 檔案。

請確定預期的位置中有 .pdb 檔案存在。

已從 .pdb 檔案中移除偵錯資訊。

如果在連結器中使用 /PDBSTRIPED 選項,請改為包含完整的 .pdb 檔案。

如需詳細資訊,請參閱 /PDBSTRIPPED (移除專用符號)

呼叫端不是函式,而且為二進位檔案中的 Thunk 或資料區段中的指標。

當呼叫端為 Thunk 時,請嘗試使用 _declspec(dllimport) 來避免 Thunk。

如需詳細資訊,請參閱:

請參閱

概念

視覺化現有的程式碼

其他資源

HOW TO:瀏覽和巡覽圖形文件

HOW TO:使用相依性圖形探索程式碼

HOW TO:編輯和自訂圖形文件