Visual Studio - 条件和禁用断点的运行时影响

Dre*_*kes 0 .net debugging breakpoints conditional-breakpoint visual-studio

花了一点时间想知道为什么我的应用程序在附加调试器的情况下非常缓慢地运行特定场景,我发现这是由于有一个条件断点(其条件永远不会被满足).这似乎是合理的,因为CPU会发出断点信号,VS需要在允许执行继续之前评估条件.这些转变必须是昂贵的.

我假设未执行的代码路径中的断点没有运行时影响.

所以我的问题是双重的:

  1. 是否有任何资源可以量化与条件断点相关的成本,如果有的话,可以做些什么来降低运行时评估成本?
  2. 是否有与"禁用"断点相关的成本?禁用是指VS在带有空心圆的装订线中显示断点标记.

当然,如果我上面提到的任何事情都没有意义,那么请指出我正确的方向.

Jar*_*Par 5

很难量化条件断点的成本.条件断点中的表达式使用完全相同的语义进行计算,就像您将其键入到监视或即时窗口中一样.这种性质的表达式实际上并不在客户端程序中执行,而是由特定于语言的表达式求值程序处理.实际上不可能以有意义的方式描述这些类型的评估.

但是我可以在调试窗口eval中列出一些已知较慢的东西

  • 函数调用:它们是您可以做的最慢的事情,因为函数调用需要重新启动调试对象进程,以便在进程中可以发生函数
  • 字符串比较:在引擎盖下,这些可以追溯到func evals

对于禁用的断点,它们不会影响应用程序的运行.