Using/abusing 操作值的条件断点
Using/abusing a conditional breakpoint to manipulate a value
作为临时解决方法,我必须在某行中将 User.ID 设置为 0。类似情况我常用的做法是在对应行下断点,用watch操作值:
User.ID = 0
为了通过自动设置值来简化这一点,我想出了一个条件断点:
Convert.ToBoolean(User.ID = 0)
由于此表达式的计算结果为假,代码执行不会停止,作为副作用 User.ID 将设置为 0。事实证明,此副作用不会发生。我确信这是设计使然。 不过,完全相同的代码在手表中按预期工作。我的问题:
- Visual Studio 如何处理条件中的副作用
断点,是否有一些官方文档?
- Visual Studio 可以被欺骗以允许这种副作用吗?
- 是否有其他方法可以达到所需的行为(即在调试时在特定点自动设置变量)?
我的问题好像是相关的:
这个错误(在我看来,调试器不应允许断点条件的副作用)似乎已在 VS2013 中得到修复。
如果你想要那个副作用,你必须改变设置:
- 工具 + 选项
- 调试
- 一般
--> "Use Managed Compatibility Mode" 复选框
勾选那个,你应该得到旧的行为。我在2010年,所以我无法测试它。但我相信这一点。
作为临时解决方法,我必须在某行中将 User.ID 设置为 0。类似情况我常用的做法是在对应行下断点,用watch操作值:
User.ID = 0
为了通过自动设置值来简化这一点,我想出了一个条件断点:
Convert.ToBoolean(User.ID = 0)
由于此表达式的计算结果为假,代码执行不会停止,作为副作用 User.ID 将设置为 0。事实证明,此副作用不会发生。我确信这是设计使然。 不过,完全相同的代码在手表中按预期工作。我的问题:
- Visual Studio 如何处理条件中的副作用 断点,是否有一些官方文档?
- Visual Studio 可以被欺骗以允许这种副作用吗?
- 是否有其他方法可以达到所需的行为(即在调试时在特定点自动设置变量)?
我的问题好像是相关的:
这个错误(在我看来,调试器不应允许断点条件的副作用)似乎已在 VS2013 中得到修复。
如果你想要那个副作用,你必须改变设置:
- 工具 + 选项
- 调试
- 一般 --> "Use Managed Compatibility Mode" 复选框
勾选那个,你应该得到旧的行为。我在2010年,所以我无法测试它。但我相信