当前方法的代码已经过优化,因此无法计算表达式的值

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

解决方法: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工作。

转载于:https://www.cnblogs.com/tl2f/p/6544491.html

当前方法的代码已经过优化,因此无法计算表达式的值相关推荐

  1. Asp.Net异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值的解决方法...

    今天项目中碰到一个以前从没有见过的异常信息"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值",于是查了一下资料,原来此异常是由于我在代码中使用了"Re ...

  2. 异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...

    在一般处理程序中执行 context.Response.End()方法会报出:"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值"这个异常. 对于这个异常微软有解 ...

  3. 国科大提出FreeAnchor,新一代通用目标检测方法,代码已开源

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自新智元(ID:AI_era),请勿二次转载.   新智元专栏   作者:张小松 (中国科学院大学) [新智元导读]中国科学院大学联合厦门大学和 ...

  4. [Bug]由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值的解决方法(转)...

    原因 如果使用 Response.End.Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常.您可以使用 try-ca ...

  5. 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值 解决方案...

    原因: 如果使用 Response.End.Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常.您可以使用 try-c ...

  6. asp.net 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...

    看MS给的解决方案:(http://support.microsoft.com/kb/312629/ ) 症状:如果使用 Response.End.Response.Redirect 或 Server ...

  7. 表达式求值(最详细分析+代码实现+表达式之间的相互转换)

    目录 一.概念 二.前缀表达式的逻辑和实现方式 1.定义 2.前缀表达式的计算机求值 3.例子 4.代码实现 三.中缀表达式的逻辑和实现方式 1.定义 2.中缀表达式规则 3.中缀表达式的计算机求值 ...

  8. Python实现计算圆周率π的值到任意位的方法示例

    Python实现计算圆周率π的值到任意位的方法示例 本文实例讲述了Python实现计算圆周率π的值到任意位的方法.分享给大家供大家参考,具体如下: 一.需求分析 输入想要计算到小数点后的位数,计算圆周 ...

  9. ICLR 6-6-6!自注意力可以替代CNN,能表达任何卷积滤波层丨代码已开源

    鱼羊 十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 像素层面上,CNN能做的,自注意力(self-attention)也都能做. 统御NLP界的注意力机制,不仅被迁移到了计算机视觉中,最 ...

最新文章

  1. windows 下mysql的安装于使用(启动、关闭)
  2. 扫描 VNC 的脚本
  3. OpenCV的HSV空间度量与标准HSV不一样,使用的时候需要换算;另附一个调色取色的小工具
  4. [2018.12.9]BZOJ2153 设计铁路
  5. 两个vlan之间如何通信_如何桥接两个不同的VLAN?
  6. jmete 学习--基础之名词解释
  7. LeetCode 第 206 场周赛(733/4491,前16.3%)
  8. float,absolute脱离文档流的总结
  9. 一文了解MySQL的Buffer Pool
  10. mysql 用户权限设置【转】
  11. 一些技术大牛的博客集锦(转)
  12. wifi上行下行速度测试_测试网速_测试网速wifi在线测试
  13. Java加密知识体系
  14. Vue3快速学习、vue3视频学习、vue3实例上手教程
  15. Vmware 虚拟机克隆后网卡地址的修改
  16. Android:layout_weight详解
  17. cscope.exe程序的base64文本
  18. .xin 域名信用验证问题集锦
  19. 奇虎360 2013校园招聘笔试题
  20. 【Codeforces 1038D】Slime

热门文章

  1. fread读取同一个文件得到缓冲区大小不同_缓冲区——计算机科学
  2. 理解函数的相关概念python_Python函数的概念和使用
  3. 前端ajax数据提交到服务器_详解前端如何让服务器主动向浏览器推送数据
  4. git ssh配置完后拉取代码_使用git在gitlab上拉取代码的方法
  5. ctf wav文件头损坏_【CTF入门第二篇】南邮CTF web题目总结
  6. rust里面的awm叫什么_铅笔里面有铅吗?为什么叫铅笔呢?
  7. 计算机类系统能力培养试点学校,南昌航空大学获批教育部计算机类专业系统能力培养试点高校...
  8. php 数组重复最多,PHP获取数组中重复最多元素的简单示例
  9. java的compare to(),java – compare()和compareTo()之间有什么区别?
  10. 使用linux集体升级系统,一:Linux系统的升级