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