當前方法的代碼已經過優化,因此無法計算表達式的值


當前方法的代碼已經過優化,因此無法計算表達式的值

/***********************************************************************************/

解決方法:vs2010->工具->選項->調試->常規->勾選“啟用.NET Framework源代碼單步執行”,不勾選“啟用‘僅我的代碼’(僅限托管)”。點擊確定后,會有一個下載公共符號的過程,如下圖,耐心等待下載完成,並重啟調試即可。

/**************************************************************************************/

VS2010中調試.NET Framework的源代碼:處理無法計算表達式的值的錯誤(轉)

在使用VS2010調試MS提供的.NET Framework源代碼的時候,有可能你會碰到在調試的時候,很多變量都是不能正常查看的。而在極端的時候,你查看所有的變量都會報錯,比如:當前方法的代碼已經過優化,因此無法計算表達式的值。

  我這兩天就碰到VS2010 報:"當前方法的代碼已經過優化,無法計算表達式的值"的這個錯誤了,具體的錯誤截圖如下圖。

 

這個錯誤結果非常明顯,就應該是我執行的時候,執行的是已經經過優化過的代碼了,但是在那里設置,還真是不知道。在網上搜索,這方面信息也不多,發現最多的說法是:

  1. 當前運行的版本應該設置為Debug;
  2. 如果不行,嘗試下,先Step over下,在查看下值;

  當然,這些嘗試都對我無效,還有一個說法是設置問題(其實就是要啟用Debug .NET Framework的設置方法):

  1. 在工具->選項->調試->符號->設置:設置好 (標准步驟)
  2. 在工具->選項->調試->常規->勾選 啟用.NET Framework源代碼單步執行
  3. 在工具->選項->調試->常規->不勾選 啟用"僅我的代碼"(僅限托管) (這個是在上一步操作的時候,系統會自動提示你的,確定就去掉勾選了)

  設置好類似下面這樣的:

 

 

當然這些對我的這個報錯都沒有用,但我還是決定將它們列出來,相信對其他的朋友會有一定的幫助。

  我的這個"當前方法的代碼已經過優化,因此無法計算表達式的值"在中文搜索是沒有找到多少有價值的參考,無奈,我只好選擇英文搜索下:Cannot evaluate expression because the code of the current method is optimized. 如果你需要查找,可以使用這個作為關鍵詞試試,當然,遺憾的是我在初步看下來的時候,並沒有我需要的信息(也許有,沒看到),大部分的都是問為什么自己的代碼在調試會出現這個問題。

  在問題明確的前提下,我的目標明確而單一——就是找個方法,讓VS2010 在調試的時候禁止啟用優化

  最終我找到了方案:其中How to disable optimizations during debuging給出了其他人的兩個不同方案。E文好的可以直接參閱,我這里簡要說明下這兩個方案,為E文不是很好的朋友拋個磚:

  • 在啟動的時候設置環境變量,讓VS2010啟動的時候加載之后,在代碼調試的時候不執行優化

這個方法理論不難,第一步:是在cmd下來啟動VS2010,你輸入

## 設置環境變量

> set COMPLUS_ZapDisable=1
## 這里路由到你VS2010安裝的目錄下面,這句是原文的,在我機器上用不了
## 因此,如果你要使用,請改成適當的路徑
> cd /d "%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\ide\"
## 啟動VS2010
> start devenv.exe
## 退出CMD
> exit
 
但是這個每次啟動都要在cmd下來啟動denenv.exe(VS2010 IDE),比較麻煩,因此, 原文作者也建議(我附議),將這個代碼保存成debuging.bat(文件名是我想的,你可隨意),代碼參見上面的即可,每次要測試的時候,直接雙擊bat運行進入IDE環境。
第二步:在進入VS2010 加載要調試的程序之后,右鍵項目->屬性->調試->不勾選 啟用Visual Studio 承載進程,保存。
 
 

第三步:不用說,調試吧。

注意,這里我要補充下,在Web 程序測試的時候,並沒有上面那項:啟用Visual Studio,也沒有調試Tab,因此,不用操作第二步即可。我的Web程序就在第一步設置變量后成功追蹤到參數值。

  • 是在需要調試的目錄中創建和應用程序名稱一樣的一個.ini文件,比如你程序是ABC.exe,那么你需要的是一個ABC.ini文件

 這個方法同樣也是要配置參數的,只不過將參數放到了應用程序下面來操作,具體操作你可以參照MSDN上的這篇文章來做,簡單點說,就是在程序同目錄下,放同名的ini文件,文件內容為下面這些內容:

[.NET Framework Debugging Control]

GenerateTrackingInfo=1
AllowOptimize=0
就這樣簡單,你就可以在IDE中禁用優化,方便執行Debug工作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM