delphi – 为什么有条件的断点使我的程序减少了很多?

前端之家收集整理的这篇文章主要介绍了delphi – 为什么有条件的断点使我的程序减少了很多?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@
当我在一个循环中调试出错的内容时,就说在第600次迭代中,每一次都要打破这个痛苦.所以我尝试设置一个条件断点,只有当我= 600时才会中断.这是有效的,但是现在几乎要花一分钟才能到达这一点,之前几乎是瞬间的.发生了什么,有什么办法解决它吗?

解决方法

当您点击断点时,Windows会停止该进程并通知调试器.它必须切换上下文,评估条件,决定否,不想被通知,重新启动进程并切换回.这可能需要很多处理器周期.如果您在紧密循环中执行此操作,则比循环所需的迭代处理周期要多两个数量级.

如果你愿意混淆你的代码,有一种方法来做条件断点,而不会导致所有这些开销.

if <condition here> then
  asm int 3 end;

这是一个简单的汇编指令,手动向OS发送断点通知.现在,您可以在程序中评估您的状况,而无需切换上下文.完成后,请务必再次拿出来.如果int 3在没有连接到调试器的程序中出现,它将引发异常.

猜你在找的Delphi相关文章