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:瀏覽和巡覽圖形文件。
|
|
具有第一層原始程式檔和標頭檔之標頭檔的相依性圖形
疑難排解
當您為 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。 如需詳細資訊,請參閱: |