2009-07-10 76 views
10

我有一個VB應用程序,它需要在運行時進行監視。我在監視窗口中添加了一些變量,但在應用程序運行時,監視窗口變灰。我發現查看變量值的唯一方法是使用Debug - > Break All,但是這會停止程序。Visual Studio Watch窗口變灰了嗎?

我已經使用了其他IDE,它們允許監視活動變量。這可能在VS?

對不起,如果這是一個菜鳥問題。

更新:爲了清楚起見,我的應用程序正在與一臺實驗室設備通信,並且隨着數據的發送或接收或檢測到錯誤,計數器遞增。我想看看這些計數器,但我不想建立一個屏幕來執行此操作,因爲它們用於調試。我只是假設這是任何IDE的基本功能

SHOCKED:似乎Visual Studio不提供這個(我會考慮的)基本功能。對於那些似乎認爲解釋型語言無法實現的人來說,請考慮一下這個思想實驗。如果快速按下「全部中斷」,然後按「繼續」,則會刷新觀察窗口 - 正確嗎?那麼爲什麼Visual Studio不能將它作爲一個Refresh View命令執行,或者更好的是允許此函數在用戶指定的時間段自動運行。沒有調試寫入,沒有日誌文件,沒有停止你的程序中流和創建超時。我只是感到震驚,你不能這樣做。它有點像沒有斷點。

+0

@Shocked理論上調試器也能做到這一點通過設置在內存中的CPU支持數據範圍斷點,做「突破,更新的手錶,然後繼續」自動更新變量時自動。 – ChrisW 2009-07-10 22:54:45

回答

5

在應用程序運行時,哪個IDE或開發環境實時顯示Watch窗口中變量的值,而不必擊中任何斷點?

Visual Studio不提供此功能。爲了在監視窗口中獲取更新的值或編輯項目,應用程序需要處於斷點或調試狀態。

5

完成「break」以將程序控制權賦予調試程序後,即可使用功能鍵(如F10和F11)「執行」代碼。在每個「步驟」中,程序評估一個或多個語句;每一步之後它會停止(直到下一步),而(只有)它停止時,您可以'觀察'其當前狀態。

還有其他一些方法可以打入調試器(在程序停止時使用Watch窗口):其他方法如設置「斷點」,以及使用「run to cursor」功能。


當然,但停止當前正在接收或發送數據到一些其它過程,驅動器等中的程序,停止該通信並引起超時和其它問題。

確實如此。要觀看值的實時變化,我用一個日誌文件:

  • 添加語句來我的代碼,這樣,當我改變一個變量的值,我發出一個新的生產線,以一個日誌文件(顯示改變後的值)

  • 運行程序

  • 觀看新線使用像tail -f一個實用程序被附加到日誌文件中。

我從來沒有看到調試器與您提到的功能。與你提到的功能最接近(並且不完全是你提到的功能)是How to: Set a Data Breakpoint (Native Only)

+0

當然,但是停止正在主動接收或發送數據到其他進程,驅動程序等的程序會停止此通信並導致超時和其他問題。 – NormD 2009-07-10 16:42:43

+1

日誌文件存在很多問題。假設你每秒接收數千個數據包,如果不是簡單地遞增一個計數器,而是寫一行到一個日誌文件,那麼系統將會崩潰。與增加計數器相比,即使寫入控制檯也是一項非常重量級的操作。 – NormD 2009-07-10 17:04:39

+0

在另一條評論中,你說「Codewarrior和Chameleon允許你......以秒或毫秒爲單位指定刷新間隔」;您可以在日誌中構建相同的邏輯,例如每隔幾秒寫一次日誌文件。無論如何,我認爲你現在有你的答案。 – ChrisW 2009-07-10 17:19:32

0

確保您處於「調試」版本,並且Microsoft Debugger作爲服務運行且未被阻止/禁用。

+0

我按F5並運行應用程序。我認爲這是調試版本,因爲如果我打破應用程序變量都有值。 鋤頭一個運行調試作爲一項服務?這會讓我看到程序正在改變的變量嗎? – NormD 2009-07-10 16:39:52

2

你試圖做的事情在Visual Studio中是不可能的。所有的變量檢測窗口(手錶,當地人,汽車等)都依賴於處於休息狀態的人員進行工作。

對於我過去使用過的基本上任何調試器都是如此。至少那些使用編譯語言的。

我很好奇你指的是哪個IDE?他們處理解釋型語言嗎?