2011-09-21 85 views
2

是否可以創建一個「Live」callstack窗口?要在應用程序運行時查看調用堆棧,會自動更新?Visual Studio 2010中的Live CallStack

這將是偉大的查看運行我的web應用程序時在引擎蓋下發生的事情。

回答

1

每一個方法調用?每秒可能會有數百或數千或數十萬次的調用堆棧更改。您無法在Visual Studio 2010中執行此操作。您可以暫停Thread對象並從中獲取堆棧跟蹤,但性能會很差(不可用)。

這聽起來像你可能想要一個分析器。

2

這在技術上是可行的,但它本質上是不可用的功能。在一個正常運行的應用程序中,調用堆棧每秒可以輕鬆改變數千次。用戶界面根本無法以有意義的方式跟上這種吞吐量。如果它只是在屏幕上繪製每個版本,那麼它就會顯得模糊,而且無用。

+1

也許它不需要經常更新。也許只在10hz。這對於特定例程或代碼行在堆棧的穩定級別上高時間活動的情況可能很有用。然後他們會顯得有些穩定,而周圍的東西只是模糊。特別是如果它可以在I/O期間抽取樣本,它可能會提供很多信息。 –

1

我懷疑它...即使它可用,那麼它的更新速度會非常快,你將無法看到任何東西。只要把Trace陳述中你感興趣的功能。

Trace.WriteLine("Foo::Bar()"); 

您可以在輸出窗口中查看Trace結果,當您正在調試。如果您需要更高級的跟蹤,請使用dotTrace profiler或任何其他.NET分析器。

2

Runtime Flow(由我開發)顯示正在運行的.NET應用程序實時更新的調用堆棧。您可以在調用堆棧樹中看到目前爲止的所有函數調用。