gpt4 book ai didi

delphi - 为什么条件断点会使我的程序速度减慢这么多?

转载 作者:行者123 更新时间:2023-12-03 14:35:43 27 4
gpt4 key购买 nike

当我调试循环内出错的东西时,比如在第 600 次迭代时,必须对每个循环进行中断可能会很痛苦。因此,我尝试设置一个条件断点,仅在 I = 600 时才中断。这可行,但现在几乎需要一整分钟才能到达该点,而在此之前几乎是瞬时的。这是怎么回事,有什么办法可以解决吗?

最佳答案

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

如果您愿意稍微修改一下代码,有一种方法可以在不产生所有这些开销的情况下执行条件断点。

if <condition here> then
asm int 3 end;

这是一个简单的汇编指令,手动向操作系统发送断点通知。现在您可以在程序内评估您的状况,而无需切换上下文。只要确保用完后再次将其取出即可。如果 int 3 在未连接到调试器的程序中发生错误,则会引发异常。

关于delphi - 为什么条件断点会使我的程序速度减慢这么多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1238837/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com