无法获得价值因为它已被优化掉了
我有调试问题…突然间我在调试时看不到大多数变量的值。 我已经设法在立即窗口中获得两个不同的消息:
无法获取本地或参数’参数’的值,因为它在此指令指针处不可用,可能是因为它已被优化掉。
和
表达式计算器中的内部错误。
我试过并检查了以下内容:
- 解决方案配置设置为调试( 不发布)
- 项目 – >设置 – >构建 – > 未设置优化代码
- 工具 – >选项 – >调试 – >使用Managaed兼容模式(不起作用)
你有什么进一步的想法我可以再次正确调试吗? 🙁
提前致谢
编辑代码没什么特别的……当我尝试观察内部参数[Key]时会发生这种情况
public void AddOrUpdateQuartzJob(string jobName, IList<KeyValuePair> 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文件和内容 :
[.NET Framework Debugging Control] GenerateTrackingInfo=1 AllowOptimize=0
请注意,它必须是程序集的名称,而不是进程EXE的名称(除非它是您要调试的EXE程序集)。 例如,如果你有一个程序集MyCode.dll
,INI文件名将是MyCode.ini
。
以下是.Net调试演示中的一些幻灯片,它们显示了不同之处:
优化:
没有优化:
转到 – >项目属性 – >在构建 – >设置“优化代码”复选框未选中。
此外,在项目属性 – >构建 – >高级 – >下,在选项中将“调试信息”下拉列表设置为“完整”
在进行codekaizen和isanka thalagala列出的更改后,请不要忘记清理,重建和发布以使更改生效。