前端之家收集整理的这篇文章主要介绍了
delphi – 为什么有条件的断点使我的程序减少了很多?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我在一个循环中调试出错的
内容时,就说在第600次迭代中,每一次都要打破这个痛苦.所以我尝试设置一个条件断点,只有当我= 600时才会中断.这是有效的,但是现在几乎要花一分钟才能到达这一点,之前几乎是瞬间的.发生了什么,有什么办法
解决它吗?
当您点击断点时,Windows会停止该进程并
通知调试器.它必须切换上下文,评估条件,决定否,不想被
通知,重新启动进程并切换回.这可能需要很多处理器周期.如果您在紧密循环中执行此操作,则比循环所需的迭代处理周期要多两个
数量级.
如果你愿意混淆你的代码,有一种方法来做条件断点,而不会导致所有这些开销.
if <condition here> then
asm int 3 end;
这是一个简单的汇编指令,手动向OS发送断点通知.现在,您可以在程序中评估您的状况,而无需切换上下文.完成后,请务必再次拿出来.如果int 3在没有连接到调试器的程序中出现,它将引发异常.
原文链接:https://www.f2er.com/delphi/102876.html