【问题标题】:Why does the D2010 debugger make some things much slower?为什么 D2010 调试器会使某些事情变慢?
【发布时间】:2010-03-15 22:30:25
【问题描述】:

我有一个特殊的组合框,其中包含很长的项目列表(几千个),当您打开它时必须计算这些列表。当我在测试某个东西时,我惊恐地发现它需要大约一分钟才能打开。所以我将程序(相同的构建,相同的选项)连接到 Sampling Profiler 以查看花费了这么长时间,并且只花了大约 5 秒就打开了。我尝试直接从 Windows 运行它,这次只用了 2-3 秒,这是我的预期。

那么,当 Delphi 调试器连接到它时,为什么完全相同的 EXE 处理数字要慢 25 倍以上呢?这不像被评估的条件断点那样明显。似乎只有调试器的存在正在减慢它的速度。有谁知道为什么?

【问题讨论】:

  • 它是否产生了大量的调试输出(OutputDebugString)?事件日志中显示了什么?
  • @Craig:是的。非常好的通灵调试!每次紧密循环迭代都会调用 OutputDebugString 两次。把它作为答案,我会接受的。
  • OutputDebugString 就像一个断点:它将字符串放在事件日志中,并强制它滚动所有隐含的处理......
  • 您可能想要使用真正的日志工具而不是 OutputDebugString,因为 Delphi 对 OutputDebugString 的支持非常慢(我相信这主要是由于 Delphi 如何为每个日志条目绘制/刷新其事件列表)。您可以查看我们的 SmartInspect 日志记录工具,但任何现代日志记录系统都应该是一个巨大的改进。

标签: delphi debugging delphi-2010 slowdown


【解决方案1】:

转贴:是否产生大量调试输出(OutputDebugString)?事件日志中显示了什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2021-05-16
    • 2017-06-29
    • 1970-01-01
    • 2014-02-21
    • 2020-05-01
    相关资源
    最近更新 更多