2015-01-09 80 views
1

剛剛開始:當我調試一個方法時,VS調試器不能識別在我正在調試的方法中聲明的變量或對象。當我將鼠標懸停在它們上面時,它不會提供任何彈出式智能感知。如果我把它添加到手錶,它說:Visual Studio 2013在調試時無法識別本地變量或對象

'FooBar' is not declared. It may be inaccessible due to its protection level. 

它可以是簡單的東西,比如:

Dim MyString String = "this is a test" 

但移動過去的這條線在dubugger後,它不會承認的MyString。但是,如果我然後使用MyString,就像將其保存到數據庫或將其輸出到屏幕,它可以正常工作。所以它確實存在,但調試器不能識別它。

傳遞到方法中的變量和對象工作得很好,如預期的那樣。

我第一次看到這個,我做了一個乾淨的&重建,並解決了這個問題。但是稍後的一些調試,它再次啓動。一個乾淨的&重建沒有工作。所以我關閉了VS,刪除了解決方案.suo文件。在開始VS備份後,調試現在正常工作了一段時間。

但現在它再次這樣做,沒有任何我嘗試似乎讓它恢復工作。

我花時間在谷歌上,發現有人問過同樣的問題,但我沒有看到任何線索與明確的答案。

以前有沒有見過這樣的人,並且知道了嗎?

編輯AFTER:

很肯定我在調試模式下這樣做。但讓我知道是否有其他地方我應該看。

enter image description here

enter image description here

+0

您是在調試還是發佈模式下編譯? – fcuesta 2015-01-09 20:06:22

+0

相似類型的問題;可能會有所幫助。 https://stackoverflow.com/questions/666624/visual-studio-debugger-doesnt-step-into-unused-variable-declarations – drneel 2015-01-09 20:06:41

+0

fcuesta - 調試模式。 dmeel - 我來看看。謝謝 – 2015-01-09 20:08:42

回答

1

我的猜測是,你正在調試, '釋放' 的配置。發佈配置通過在許多其他優化中優化代碼,刪除它肯定知道的代碼永遠不會被使用。因此,例如,Dim MyString String = "this is a test"將從解決方案中進行優化,如果它從未使用過,但如果您添加一行代碼以將其提交到數據庫,那麼它將被使用並且不會被優化。切換到「調試」配置以防止這些類型的優化。

+0

謝謝。兩件事情。在這個方法中有大量的對象和變量是在本地聲明的,這些對象和變量被使用了一噸。它們中的任何一個都被調試器識別。話雖如此,當你說,「切換到'調試'配置」......很確定我已經在那裏了。我會添加一個屏幕截圖到我的OP。 – 2015-01-09 20:13:23

+1

是的,這聽起來不像是一個優化問題。不知道哪個項目存在罪魁禍首,但我會好奇地知道如果在重建之前從項目中刪除bin和obj文件夾會發生什麼情況。甚至只是bin文件夾。我想知道如果PDB文件已損壞或以某種方式不被重建。 – 2015-01-09 20:27:01

+0

謝謝。我會嘗試這些建議並回復你。 – 2015-01-09 20:28:34

相關問題