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.

当前回答

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

其他回答

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

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

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


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

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

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

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

我只是碰到这个问题,我在发布构建配置下运行,而不是调试构建配置下运行。一旦我切换回调试我的变量显示在手表再次。

在Visual Studio 2017或2015中:

转到解决方案,右键单击解决方案,然后选择属性->选择所有配置->调试,然后单击确定。 在“重新构建并运行”之后,这个解决方案对我来说是有效的。

检查您的AssemblyInfo文件中是否有Debuggable属性。如果存在,则删除它并重新构建解决方案,以查看本地变量是否可用。

我的可调试属性被设置为:DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints,根据这篇MSDN文章,它告诉JIT编译器使用优化。我从我的AssemblyInfo.cs文件中删除了这一行,本地变量就可用了。

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