使用For循环如下:
for (int i = 0; i < 1000; i++)
{
int mod = i % 1795;
//Do some operations here
}
它工作正常,但是当我设置一个断点并将条件应用为mod=150
时,它会减慢执行速度。为什么会这样?添加这样的条件断点时实际发生了什么?
答案 0 :(得分:17)
条件断点不是硬件支持的东西;处理器仅支持无条件断点。发生的事情是,当您创建条件断点时,调试器会在您的代码中插入一个无条件断点。当无条件断点被命中时,调试器会评估您的条件,如果失败则只恢复执行。由于断点位置的每次传递现在都需要停止并涉及调试器,因此代码运行得慢得多。
根据代码执行的频率以及构建代码所需的时间,通常可以更快地添加
if (your condition)
{
System.Diagnostics.Debugger.Break();
}
或类似,只需重建您的应用。