And*_*eas 5 .net c# debugging visual-studio
Visual Studio有一个名为"Step over properties and operators(Managed only)"的调试设置.此设置非常有用,我通常打开它.
现在,每隔一段时间,项目中就会有一个属性设置器/获取器,这是相当复杂的,在调试时我希望能够进入它.有没有办法用属性装饰这个属性,以便调试器忽略上面提到的属性设置,并允许我进入它?
基本上,它应该与DebuggerStepThroughAttribute相反.
或者有另一种方法来实现这一目标吗?我现在所做的是在跳过它之前在属性getter/setter中设置一个断点,但这不是很方便,因为它要求我每次单步执行特定的代码片段时添加/删除断点.
编辑:评论建议重构.但这并不能真正回答我的问题,在我的案例中并不是必需的.通过"涉及"我并不意味着许多代码或一些资源密集型代码.在我的例子中,属性设置器触发对象内部的计算(O(1)复杂度,大约2毫秒).然而,这种计算并不那么明显,我偶尔会想要通过按下步骤键进入属性设置器.
那么,要做到这一点,您需要一种方法来了解调试器是否处于运行模式或单步执行模式。遗憾的是,您无法在应用程序中获取此信息。
因此,我编写了一个简单的宏:
dte.Debugger.ExecuteStatement('AppDomain.CurrentDomain.SetData("Stepping", "True")');
dte.Debugger.StepOver();
dte.Debugger.ExecuteStatement('AppDomain.CurrentDomain.SetData("Stepping", null)');
Run Code Online (Sandbox Code Playgroud)
您必须安装宏加载项 - 这是 Microsoft 提供的,所以不用担心。
这允许您使用简单的条件断点:
AppDomain.CurrentDomain.GetData("Stepping") != null
Run Code Online (Sandbox Code Playgroud)
(如果你愿意,使用宏也可以很容易地设置断点)
现在,您不必使用通常的 Step Over 命令,只需运行宏,它就会在给定条件下的每个断点上自动中断:)
应该可以将快捷方式(和菜单命令)附加到宏,但由于某种原因,这对我不起作用。如果这对你来说是个问题,你总是可以制作一个 VSPackage(现在很简单,但你必须安装 Visual Studio SDK),并使用几乎相同的代码,除了用 C# 而不是 JavaScript :)
请注意,这假设您使用的是 VS2012+ - 在早期版本中,您可以以相同的方式简单地使用内置宏。当然,这意味着将代码翻译为 VB,但是...
| 归档时间: |
|
| 查看次数: |
1262 次 |
| 最近记录: |