VS2017 条件断点 - “不支持在此上下文中评估本机方法”

Posted

技术标签:

【中文标题】VS2017 条件断点 - “不支持在此上下文中评估本机方法”【英文标题】:VS2017 Conditional Breakpoints - "Evaluation of native methods in this context is not supported" 【发布时间】:2019-04-07 21:26:25 【问题描述】:

我正在调试 Service Fabric 应用程序,需要根据对象的 id 值使用条件断点。所以我放了一个条件断点,效果是

c.id == "43rregfjlh32";

但是,当调试器命中断点时,我收到以下消息:

断点的条件未能执行。条件是 c.id == "43rregfjlh32"。返回的错误是“评估 方法 System.String.op_Equality() 调用本机方法 System.Environment.FailFast()。在此评估本机方法 不支持上下文。单击“确定”在此断点处停止。

我在网上查看并尝试启用一些帖子中建议的托管兼容模式等功能。但是,这不起作用。

【问题讨论】:

如果可以的话,能否请您分享一个使用一个驱动器的简单示例,我将帮助您调试它,以便我们知道它是否与VS版本有关,或者它真的有对其的限制。如果您可以分享它,还请告诉我您在哪里以及如何设置条件断点。 你有没有运气解决这个问题? 好久没试过了,总之没有:) 这里也一样.. 通过将 if 语句直接放在代码中来解决.. 不理想,但它可以工作 【参考方案1】:

这看起来像这个问题:Debugger error when comparing strings (.NET Core)。根据该页面,它已在 Visual Studio 2017 版本 15.9.5 中修复。

我使用string.Equals 解决了这个问题,例如string.Equals(c.id, "43rregfjlh32")

【讨论】:

以上是关于VS2017 条件断点 - “不支持在此上下文中评估本机方法”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VS2015 断点的条件表达式中使用 Environment.StackTrace

使用 WinGDB+VS2017 的断点问题

VS调试技巧:如何让断点在for循环中变量满足某个条件的时候停下来(条件调试)

VS调试技巧:如何让断点在for循环中变量满足某个条件的时候停下来(条件调试)

vs2013 无法进行断点调试,怎么解决

在vs2017写javascript进行调试,不能设置断点,出现提示,在该位置未能插入断点啥原因。