2009-04-08 21 views
10

很容易找到你所有的外部依賴關係。只需運行該程序並打開Modules info窗口。但是我怎麼能找到我所有的內部依賴關係?我知道程序保留了所有單元的列表,因爲我已經追溯了一兩次初始化代碼。但是有沒有簡單的方法可以從調試器訪問這個列表?如何在我的Delphi應用程序中找到所有單元?

回答

4

你從Peganza Software看了Pascal Analyzer還是免費的限量版本Icarus?他們將創建「使用報告」,告訴你哪些模塊使用了其他模塊,這樣應該可以提供你所需要的信息。

馬克

3

據我所知,至少有兩種方法,你可以嘗試讓你的項目中使用的所有單位的觀點

  1. CTRL-SHIFT-B打開對象瀏覽器。如果我沒有弄錯,在這裏你可以看到使用過的單位。我不完全確定這種方法,並沒有德爾福可用來驗證它。
  2. 使用Modelmaker;模型製作者可以給你一棵樹,就像你所有的單位依賴關係一樣。請參閱Visualizing existing code部分了解更多信息。
4

GExperts有一個項目依賴的工具。當我試圖追蹤使用過的單位時,我已經使用過它。您無法在其中進行搜索,但可以將列表導出爲CSV文件並在其中進行搜索。這也只列出了使用部分的內容。如果您有一個未使用的模塊,它仍會顯示。

6

我使用GExperts項目依賴項。
使用「使用者...」時,您可以看到包含但未被任何人使用的單位。 但是你看不到包含在使用子句中的單元,當它們沒有任何實際調用的代碼時它們可以被刪除。

這裏的幫助:


項目依賴

項目依賴專家讓你看到哪個單位的特定單位使用,反過來哪個單位使用特定的單元。當這位專家被激活時,它解析所有當前項目的用例子句的源代碼,並建立一個依賴關係列表。要查看特定單元的相關性信息,請在左側窗格中單擊它。右側窗格將包含依賴信息。間接依賴關係是特定單元的使用單位使用的單位。

您可以通過單擊工具欄上的刷新按鈕隨時刷新依賴項信息,並可以通過單擊列標題對文件列表進行排序。
alt text http://www.gexperts.org/tour/project%20dependencies.png


OTOH,你也可以使用免費Peganza's ICARUS作爲一個更詳細的報告工具,但不互動......

1

最簡單的方法是編譯程序並檢查其.dcu是由編譯器創建。確保安裝編譯器在一個單獨的目錄中創建.dcu,例如c:\dcu。我創建了一個簡單的實用程序,在編譯器搜索路徑(可以從.cfg,.dof.bdsproject文件中讀取)中搜索目錄中的每個.dcu文件,搜索.pas

25

德爾福調試器可以顯示哪些單位被編譯成模塊(EXE,DLL或包)。你可以在Modules視圖(View | Debug Windows | Modules)中看到它。點擊左上窗格中的一個模塊,左下方的窗格將顯示該模塊內置的所有編譯單元。如果一個特定的編譯單元是由多個源文件(即.pas和.inc文件)組成的,那麼也會顯示(當您展開comp單元時)。

或者,您可以讓Delphi編譯器在編譯項目時通過傳遞--depends來顯示使用的.dcus列表。它將輸出一個帶有所需的.dcus(和.dcps)列表的.d文件。

+5

今天學到了一些新東西:`--depends` :)我總是清理.dcu目錄,然後在編譯後做了.dcu目錄的dir/b。調試器技巧也很整潔! – 2011-09-04 15:55:37

1

您可以將MAP文件與MapFileStats結合使用,這不僅會爲您提供所有的依賴關係,還會爲您提供最終可執行文件中的代碼(和資源)數量。

對你有依賴的單位很有用,但是很少使用,以及發現「肥胖豬」單位,這些單位需要加上廚房水槽。

FWIW,減少依賴和消除豬不僅有利於可執行文件的大小,而且在升級到新版本的時候也是有益的。

相關問題