delphi – 为什么有条件的断点使我的程序减少了很多?
发布时间:2020-12-15 10:05:51 所属栏目:大数据 来源:网络整理
导读:当我在一个循环中调试出错的内容时,就说在第600次迭代中,每一次都要打破这个痛苦.所以我尝试设置一个条件断点,只有当我= 600时才会中断.这是有效的,但是现在几乎要花一分钟才能到达这一点,之前几乎是瞬间的.发生了什么,有什么办法解决它吗? 解决方法 当您点
当我在一个循环中调试出错的内容时,就说在第600次迭代中,每一次都要打破这个痛苦.所以我尝试设置一个条件断点,只有当我= 600时才会中断.这是有效的,但是现在几乎要花一分钟才能到达这一点,之前几乎是瞬间的.发生了什么,有什么办法解决它吗?
解决方法
当您点击断点时,Windows会停止该进程并通知调试器.它必须切换上下文,评估条件,决定否,不想被通知,重新启动进程并切换回.这可能需要很多处理器周期.如果您在紧密循环中执行此操作,则比循环所需的迭代处理周期要多两个数量级.
如果你愿意混淆你的代码,有一种方法来做条件断点,而不会导致所有这些开销. if <condition here> then asm int 3 end; 这是一个简单的汇编指令,手动向OS发送断点通知.现在,您可以在程序中评估您的状况,而无需切换上下文.完成后,请务必再次拿出来.如果int 3在没有连接到调试器的程序中出现,它将引发异常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |