无法获取价值,因为它已被优化掉

2024-03-08

我在调试时遇到问题... 突然间,我在调试时看不到大多数变量的值。 我设法在立即窗口中收到两条不同的消息:

无法获取本地或参数“参数”的值,因为它在此指令指针处不可用,可能是因为它已被优化掉。

and

表达式求值器中出现内部错误。

我已经尝试并检查了以下内容:

  1. 解决方案配置设置为调试(not发布)
  2. 项目 -> 设置 -> 构建 -> 优化代码是not set
  3. 工具 -> 选项 -> 调试 -> 使用管理兼容模式(不起作用)

您对我如何再次正确调试有任何进一步的想法吗? :(

提前致谢

Edit代码没什么特别的..当我尝试观察参数[Key]里面的内容时就会发生这种情况

public void AddOrUpdateQuartzJob(string jobName, IList<KeyValuePair<string, string>> parameters)
    {
        var jobDetail = this.GetJobDetail(jobName);

        if (jobDetail != null)
        {
            foreach (var parameter in parameters)
            {
                jobDetail.JobDataMap[parameter.Key] = parameter.Value;
            }
        }
        else
        {
            this.ScheduleNewJob(jobName, parameters);
        }
    }

我发现的最好的方法说服 JIT 编译器不要优化代码的方法是使用带有程序集名称的 INI 文件,该文件位于程序集及其内容所在的同一文件夹中 https://msdn.microsoft.com/en-us/library/9dd8z24x(v=vs.110).aspx:

[.NET Framework Debugging Control]
GenerateTrackingInfo=1
AllowOptimize=0

请注意,它必须是程序集的名称,而不是进程 EXE 的名称(除非它是您要调试的 EXE 程序集)。例如。如果你有一个集会MyCode.dllINI 文件名是MyCode.ini.

以下是一些幻灯片显示出差异:

通过优化:

没有优化:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法获取价值,因为它已被优化掉 的相关文章

随机推荐