cur*_*ity 194 c# debugging visual-studio-2010
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.
Run Code Online (Sandbox Code Playgroud)
Kar*_*hik 302
转到项目属性,然后在构建下确保未选中"优化代码"复选框.
另外,在"高级选项"("构建"选项卡下)中将"调试信息"下拉列表设置为"完整".
小智 120
也在VS 2015社区版中
转到Debug-> Options或Tools-> Options
并检查Debugging-> General->抑制模块加载时的JIT优化(仅限管理)
Mar*_*ell 58
如果在启用优化的情况下进行编译,那么将删除许多变量; 例如:
SomeType value = GetValue();
DoSomething(value);
Run Code Online (Sandbox Code Playgroud)
这里局部变量value通常会被删除,而不是将值保留在堆栈上 - 有点像你写的那样:
DoSomething(GetValue());
Run Code Online (Sandbox Code Playgroud)
此外,如果根本没有使用返回值,那么它将通过"pop"被丢弃(而不是通过"stloc"存储在本地,并且再次;本地将不存在).
因此,在这样的构建中,调试器无法获取当前值,value因为它不存在 - 它仅存在于GetValue()和之间的短暂时刻DoSomething(...).
所以; 如果你想调试...不要使用发布版本!或者至少在调试时禁用优化.
Dul*_*tri 22
http://www.guntucomputerhacks.blogspot.com.au/2014/07/cannot-obtain-value-of-local-or.html
这在2013年的visual studio中对我有用.
你所要做的就是......
VSB*_*VSB 12
对于 Web 应用程序来说,还有一个很重要的问题,那就是在应用程序发布过程中选择正确的配置。
您可以在调试模式下构建应用程序,但可能会在发布模式下发布它,默认情况下会优化代码,但 IDE 可能会误导您,因为它显示调试模式,而发布的代码处于发布模式。您可以在下面的快照中查看详细信息:

小智 9
在visual Studio 2017中转到调试->选项,然后检查调试->常规->并选中此选项
关于"优化代码"属性是UNCHECKED的问题,但代码仍然编译为优化:在尝试所有内容后最终帮助我的是在同一设置页面上检查"启用非托管代码调试"复选框(项目属性 - 调试).它与代码优化没有直接关系,但启用此功能后,VS不再优化我的库,我可以调试.
小智 6
就我而言,我正在处理一个 web api 项目,尽管该项目已正确设置为完全调试,但每次我尝试调试附加到 IIS 进程时,我仍然看到此错误。然后我意识到发布配置文件被设置为使用发布配置。因此,如果您使用的是 dotnet web api 项目的“发布”功能,那么还有一个需要检查的地方是您的发布配置文件。
| 归档时间: |
|
| 查看次数: |
104684 次 |
| 最近记录: |