2011-10-23 150 views
7

對於德爾福2010年,有沒有辦法得到一個圖表,使用函數X開始(甚至整個程序),還有哪些功能/程序被稱爲...有沒有辦法獲得什麼叫什麼的圖表?

線沿線的東西:

Function X 
    - Function A 
    - Procedure B 
    - Procedure C 
    - Function D 

(當然圖形會更好...)

+1

相關但不同; Delphi Enterprise/Architect UML功能包含對序列圖的支持。不完全是你要求的,我懷疑,但相關。來自另一個工具的序列圖示例在這裏:http://www.ibm.com/developerworks/rational/library/3101.html –

+0

看着這2年後,我希望OP已表明他是否在尋找靜態或動態調用樹。 – Mawg

回答

9

Peganza Pascal Analyzer同時提供call treereverse call tree報告。還有很多其他的靜態代碼分析器可用,但這是我熟悉的。

據我所知,德爾福沒有這種性質。

+2

AQTime(現在我認爲包含在Delphi中)將會顯示特定代碼運行的調用樹。 –

+0

@david這是一個動態分析的權利? –

+0

AQTime同時進行靜態分析和動態分析,而Peganza PAL只進行靜態分析。 AQTime具有更多的圖形顯示,而Peganza輸出是文本,您可以將其輸出爲平面文本或xml,然後構建自己的圖表。 PAL無法找到很多動態發生的真實世界的調用鏈,例如事件回調,甚至派生類重寫虛擬方法,然後調用其他基類方法不會調用的其他東西的情況等等。爲此,需要進行動態分析。 –

3

以下是AQTime呼叫圖的示例。 AQTime的調用序列可以動態地收集(從正在運行的程序中收集),這意味着您必須激活您想要繪製的代碼路徑(確保您可以在UI中單擊某個菜單或按鈕調用此代碼),然後您可以繪製圖表它,或者它們可以靜態聚集。動態的可能看起來更多的工作,你可能認爲靜態分析更好,在某些方面靜態分析更好,但動態調用順序圖實際上是「一個特定運行中真正發生了什麼」,而靜態分析提供了「什麼解析器可能會發現永遠是真實的,無論這個代碼路徑是否由您或您的客戶運行「。事實上,我建議使用這兩種路徑,並比較它們以查看你學到的內容。

enter image description here

AQTime pro是相當昂貴的,但我不知道任何免費的替代品。 (不,我不爲SmartBear或Embarcadero工作)。我是一名專業開發人員,我發現這些工具是值得的。你的來電。

我通常使用的調用序列特徵,而從性能分析器運行,讓我得到一些時間值(低於雙字母組合顯示Time: #.## msec因爲數據是由性能分析器收集,動態的,而不是由靜態分析探查器,它不知道函數執行多長時間)。

相關問題