Visual Studio 2010在不安全块中杀死函数的一个参数中的数据(没有其他词)。 是什么导致了这个错误?调试器显示以下消息。
Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away.
Visual Studio 2010在不安全块中杀死函数的一个参数中的数据(没有其他词)。 是什么导致了这个错误?调试器显示以下消息。
Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away.
当前回答
我也有同样的问题。尝试以上所有方法,发现我还必须删除{PROJECT_ROOT}\bin\Release\netcoreapp2.2和{PROJECT_ROOT}\obj\Release\netcoreapp2.2内的所有内容。它肯定与发布有关,因为虽然我在我的Azure Web应用程序上使用部署工具/ bitbucket,但我确实尝试了Build >> Publish >> Publish to Azure,因为我想检查哪些文件实际部署了。
其他回答
我只是碰到这个问题,我在发布构建配置下运行,而不是调试构建配置下运行。一旦我切换回调试我的变量显示在手表再次。
如果你在编译时启用了优化,那么许多变量将被删除;例如:
SomeType value = GetValue();
DoSomething(value);
在这里,局部变量值通常会被删除,而是保留在堆栈上的值-有点像你写的:
DoSomething(GetValue());
同样,如果一个返回值根本没有被使用,那么它将通过“pop”被删除(而不是通过“stloc”存储在本地,并且再次;本地将不存在)。
正因为如此,在这样的构建中,调试器无法获得value的当前值,因为它不存在——它只存在于GetValue()和DoSomething(…)之间的短暂瞬间。
所以;如果你想调试…不要使用发布版本!或者至少在调试时禁用优化。
关于“优化代码”属性未选中的问题,但代码仍然编译为优化:在尝试了所有东西后,最后帮助我的是在同一设置页面上检查“启用非托管代码调试”复选框(项目属性-调试)。它与代码优化没有直接关系,但是启用这个功能后,VS不再优化我的库,我可以调试。
也 在VS 2015社区版
去 调试->选项或工具->选项
并检查 在模块负载上抑制JIT优化(仅Managed only)
在Visual Studio 2017或2015中:
转到解决方案,右键单击解决方案,然后选择属性->选择所有配置->调试,然后单击确定。 在“重新构建并运行”之后,这个解决方案对我来说是有效的。