尝试使用 StackTrace 设置条件断点时出错

Posted

技术标签:

【中文标题】尝试使用 StackTrace 设置条件断点时出错【英文标题】:Getting an error trying to set conditional breakpoint using StackTrace 【发布时间】:2021-06-02 02:23:21 【问题描述】:

我正在尝试使用此表达式设置条件断点:

new System.Diagnostics.StakTrace().ToString().Contains("SetupValidity")

但它总是出错:

The following breakpoint cannot be set:

(redacted) when 'new System.Diagnostics.StakTrace().ToString().Contains("SetupValidity")' is true

The condition for a breakpoint failed to execute. 
The condition was 'new System.Diagnostics.StakTrace().ToString().Contains("SetupValidity")'. 
The error returned was 'Evaluation of method System.Diagnostics.StackTrace.ToString requires calling method 
System.Reflection.MethodBase.get_MethodImplementationFlags, which cannot be called in this context.'

四处搜索,我发现了两个建议:

检查(并重新启动 VS)Tools -> Options -> Debugging -> Use Managed Compatibility Mode 检查(在项目属性中)Enable native code debugging

尝试分别同时启用这些功能.. 没有变化。

工具:

.NET Core 3.1 Microsoft Visual Studio Community 2019 16.8.5

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

错误消息清楚地表明您无法“修复”此问题;如果您确实需要该中断条件,则需要更改代码,并在常规编译代码中评估 new System.Diagnostics.StakTrace().ToString(),然后执行您选择的任何测试/中断。

【讨论】:

以上是关于尝试使用 StackTrace 设置条件断点时出错的主要内容,如果未能解决你的问题,请参考以下文章

执行路径特定断点

VS2013创建C#控制台程序,调试错误,尝试运行项目时出错:拒绝访问

实现 ABAP 条件断点的三种方式分享

实现ABAP条件断点的三种方式

使用GNU/gdb调试Linux C/C++可执行程序查看出错源代码、设置断点

使用断点调试代码