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.

当前回答

I found that I had the same problem when I was running a project and debugging by attaching to an IIS process. I also was running in Debug mode with optimizations turned off. While I thought the code compiled fine, when I detached and tried to compile, one of the references was not found. This was due to another developer here that made modifications and changed the location of the reference. The reference did not show up with the alert symbol, so I thought everything was fine until I did the compilation. Once fixing the reference and running again it worked.

其他回答

转到“项目属性”,在“构建”下确保“优化代码”复选框未选中。

此外,在高级选项(在构建选项卡下)中将“调试信息”下拉菜单设置为“完全”。

以我为例,我正在开发一个web api项目,尽管该项目被正确地设置为完全调试,但每当我连接到我试图调试的IIS进程时,我仍然会看到这个错误。然后我意识到发布概要文件被设置为使用发布配置。所以,如果你正在使用dotnet web api项目的“发布”功能,还有一个地方要检查你的发布配置文件。

当我面临同样的问题时,我只需要在重建之前清理我的解决方案。这帮我解决了问题。

在之前的WPF应用程序中有同样的问题,这里所有的解决方案都没有解决这个问题。问题是模块已经被优化了,所以之前的解决方案不起作用(或不足以解决问题):

“优化代码”复选框未选中 选中“在模块负载上抑制JIT优化” 调试上的解决方案配置

模块仍然处于优化状态。请看下面的截图:


要解决这个问题,你必须删除优化的模块。要找到优化的模块路径,可以使用Process Hacker之类的工具。

在“进程面板”中双击您的程序,然后在新窗口中打开选项卡。网络组件”。然后在“本机映像路径”列中,您可以找到所有优化的模块路径。找到一个你想要去优化并删除文件夹(见下面的截图): (出于显而易见的原因,我模糊了公司名称)

重新启动应用程序(正确选中第1步中的复选框),它应该可以工作。

注意:文件被其他进程打开时可能被锁定,请尝试关闭Visual Studio。如果文件仍然被锁定,你可以使用Lock Hunter这样的程序

我也遇到过同样的问题,我的解决方案是将解决方案配置从发布更改为调试。希望能有所帮助