2011-02-07 26 views
7

oes任何人都知道如何繪製Visual Studio 2010中被監視變量隨時間變化的方式?即如果你有下面的代碼如何繪製變量在Visual Studio中的變化

double someVariable; 
for (int i = 0; i < 20; i++) 
{ 
    someVariable = Math.Pi() * i; 
} 

,並在IDE中觀看「someVariable」你可以單步執行代碼,看它是如何增長的每一步。我希望能夠通過循環運行並繪製變量所做的操作,而不必手動逐步執行。我正在做大量的數學工作,有時候看着變量如何變化真的非常有用和有見地。

更多信息: 我有一堆略有不同的解決方案,並根據問題我正在解決問題,我想觀看不同的變量,看看問題發生的地方。我目前把這些變量記錄到一個日誌文件中,但是它顯着降低了求解器的速度,我不得不花費大量的時間修改調試代碼來追蹤問題。我正在尋找一種以IDE爲中心的輕鬆方式。在類固醇上對可視化器進行排序。

+0

你能把它輸出到控制檯嗎? `Console.WriteLine()`或`Trace.WriteLine()` – 2011-02-07 15:55:24

+0

這是Perfmon計數器/變量的完美選擇 - 請參閱我的回答 – Tim 2011-02-07 16:30:42

回答

7

如何使用Tracepoints?在VS 2008中(它與VS 2010有些不同),你只需添加一個正常的斷點,然後右鍵點擊它,然後選擇「When Hit ...」。

在隨後的對話框中,選中「打印信息」,並輸入類似

someVariable = {someVariable} 

這將只是輸出它的價值在IDE輸出窗口。

截圖:

tracepoint dialog

1

簡單的方法?沒有。

但是你可以自己編寫它..

  1. 使用屬性。
  2. 在setter中放置代碼,它將記錄某些集合中的更改。可能也節省時間。
  3. 使用一些密謀控制繪製該集合

編輯: 如果你不希望創建屬性,您可以創建某種通用類的,這將具有這種性質的,具有某種內在的日誌記錄邏輯。

+0

這幾乎是我現在所做的,除非我使用內置的日誌記錄代碼來記錄它到我的日誌文件。問題在於它的速度很快,有時我忘記拿出來。另一個問題是我在我的項目中有幾十個稍微不同的求解器,並希望以IDE爲中心而不是特定於代碼的東西,所以當我需要它的功能時,但是當我沒有將它部署到我的用戶時放慢他們的軟件。 – PlTaylor 2011-02-07 16:03:31

+0

我不是最好的人來解決這個問題,但我認爲你可以使用你的web.config來爲生產建立不同於你在調試模式下運行的產品。這樣,你不需要記住刪除這個爲你的構建。希望別人能夠驗證,並可能更好地解釋這一點。 – nycdan 2011-02-07 16:06:11

+0

另一個可能有用的技巧是在你想刪除或註釋你的buid的每一行之後加上// *** DEBUG ***。然後做一個項目搜索,以便您可以快速找到所有的行。 – nycdan 2011-02-07 16:07:53

0

希望有人會拿出一個更好的答案,但這裏是我在類似情況下沒有...

我輸出的值,CSV格式,到控制檯。從那裏,我會複製並粘貼到Excel中,讓Excel爲我做一些圖表。它運作得非常好,但在咖啡因驅動的發展會議期間是一個完整的麻煩。

0

難道你不能只是定義和陣列和寫入someVariable數組[i]在循環內?然後你可以在完成後參考它。

double[] x = new double[20]; 
double someVariable; 
for (int i = 0; i < 20; i++) 
{ 
    someVariable = Math.Pi() * i; 
    x[i] = someVariable; 
} 
1

使用性能監視器和值發佈到PERFMON可以讀取計數器。 Perfmon完成所有的繪圖等等。你只需要發佈到perfmon。不幸的是,它沒有很好的記錄,並不是微不足道的。(當然,至少這對於非託管C++來說並不是微不足道的,因爲我正在研究它)

我做了一段時間,並使用了舊版 MSJ文章中發佈的一些類。 (約1998年左右)

我會盡力找到一些在線文檔。

See this question for some links

This may also be useful

如果你找到一個解決方案或本工程爲您,請告訴我們。

0

我發現SpPerfChart非常容易使用和樂於助人。只需添加用戶控件並將更改後的數據輸入到它。你會得到你實時輸入的任何數字的圖形圖。

相關問題