gpt4 book ai didi

delphi - 如何防止大量的 OutputDebugString() 调用导致 Delphi 6 IDE 中的应用程序降级?

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

这种情况在我身上发生过不止一次,并导致我浪费了很多时间去追鬼。通常,当我调试一些非常困难的与计时相关的代码时,我开始添加大量的 OutputDebugString() 调用,这样我就可以很好地了解相关操作的顺序。问题是,Delphi 6 IDE 似乎只能处理这种情况这么长时间。我将使用我刚刚经历过的具体示例来避免泛泛而谈(尽可能)。

我花了几天时间调试线程间信号量锁定代码以及 DirectShow 时间戳计算代码,这导致了一些令人深感沮丧的问题。在消除了我能想到的所有错误之后,我仍然遇到 Skype 的问题。 ,我的应用程序将音频发送到其中。

大约 10 秒后,我在用于测试的第二台 PC(通话远端)上的 Skype 中说话和听到声音之间的延迟开始增加。在大约 20 - 30 秒时,延迟开始呈指数级增长,此时触发了代码,我检查关键部分是否被保留太长时间。

幸运的是,当时晚上还不算太晚,并且之前也经历过这种情况,所以我决定停止无情的跟踪并关闭大部分 OutputDebugString()。值得庆幸的是,我将其中的大部分封装在条件编译器定义中,因此很容易做到。当我这样做的时候,问题就消失了,而且事实证明我的代码工作正常。

因此,当 OutputDebugstring() 流量超过某个阈值时,Delphi 6 IDE 似乎开始真正陷入困境。也许这只是将字符串添加到事件日志调试器 Pane 的任务,该 Pane 包含所有 OutputDebugString() 报告。我不知道,但当 TMemo 或类似控件开始包含太多字符串时,我在我的应用程序中看到了类似的问题。

你们做了什么来防止这种情况发生?有没有办法通过某种方法调用来清除事件日志,或者至少有限制其大小的方法?另外,您通过条件定义、IDE 插件或其他方式使用什么技术来应对这种情况?

最佳答案

我之前在使用 Delphi 2007 时也遇到过类似的问题。在 IDE 中禁用事件查看,而是使用 DebugView来自Sysinternals .

关于delphi - 如何防止大量的 OutputDebugString() 调用导致 Delphi 6 IDE 中的应用程序降级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8369872/

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