在Delphi7中绕过OutputDebugString?

在Delphi7中绕过OutputDebugString?,delphi,debugging,delphi-7,outputdebugstring,Delphi,Debugging,Delphi 7,Outputdebugstring,我想知道是否可以绕过OutputDebugString?我希望OutputDebugString输出显示在DebugView中,而不是显示在内部Delphi事件查看器窗口中。但是我找不到方法告诉Delphi不要吞下OutputDebugString。有什么想法吗 关于禁用事件日志属性中的“输出消息”不起作用?我认为没有办法解决这个问题。德尔福2009年的情况依然如此。您应该提交功能请求: 我想知道代替Delphi的内部事件日志窗口的优点是什么?这是不可能的 OutputDebugString将字

我想知道是否可以绕过OutputDebugString?我希望OutputDebugString输出显示在DebugView中,而不是显示在内部Delphi事件查看器窗口中。但是我找不到方法告诉Delphi不要吞下OutputDebugString。有什么想法吗


关于禁用事件日志属性中的“输出消息”不起作用?

我认为没有办法解决这个问题。德尔福2009年的情况依然如此。您应该提交功能请求:

我想知道代替Delphi的内部事件日志窗口的优点是什么?

这是不可能的

OutputDebugString将字符串发送到调试器(顾名思义)。每个进程只能有一个活动的调试器。您在Delphi下运行应用程序-Delphi得到消息,因为它是一个调试器。您在Delphi之外运行应用程序-DebugView可以访问它们,因为没有调试器声明它



但是:为什么您需要这个?只需在Delphi事件日志中禁用其他类型的事件,您将获得与DebugView相同的功能。

我意识到,这与最初的问题不同,但值得从Raize软件中查看。它将OutputDebugString提升到一个全新的级别。消息(可以)被定向到代码站点查看器,这大致相当于高度增强的调试视图。非常值得投入每一分钱。

您可以尝试使用DebugView及其新的“调试输出”功能来代替它。它不使用OutputDebugString,它使用自己的,还有一个Delphi包装器。您可以使用Process Monitor过滤功能,Delphi不会捕获这些消息,但它不是OutputDebugString的一般功能。

它应该显示在Delphi窗口和DebugView中。你能确认发生了什么吗?我也有Delphi 7,它不显示在DebugView中,只显示在Delphi事件日志中。如果它在调试会话中运行,它只显示在Delphi事件日志中。如果应用程序启动时未连接调试器OutputDebugString,则DebugView会捕获该调试器。AFAIK pn一次只有一个调试器可以接收OutputDebugString输出。优点是您可以在DebugView中过滤调试字符串。使生活更加轻松。您真的需要比Delphi中的开/关过滤器更多的东西吗?;-)提交D7的功能请求?你在开玩笑吧?我很确定,如果D09目前不可能,他们不会添加D7。不用说,我指的是未来版本的功能请求。现在它对你没有帮助,但它是一个有用的请求。我很确定1998年有人这样说:“提交D2的功能请求?你在开玩笑吗?我很确定,如果D4目前不可能,他们不会添加D2”:D这就是为什么我们在D7和D2010中仍然没有此功能,我们永远也不会拥有它,因为没有人关心报告。结果是消息不会显示在内部事件日志中。但它们仍然被调试器吞没。我担心一旦调试器连接到进程,Windows就会将输出发送到该调试器。我知道输出会发送到调试器。我的问题是如何绕过它。但看起来没有办法绕过它。如果我禁用其他类型,我就无法获得相同的功能。我仍然收到数百条调试消息。在DebugView中,我可以过滤输出,因此我只会看到我目前感兴趣的内容。“这是一个巨大的不同。”潘塔黑:看这里,在我看来,这应该是可能的。重定向的源代码可根据作者的要求提供。@Lieven:看起来很有趣。如果时间压力消失,我们会仔细观察。它会消失吗?;)我认为您对这个简单的调试例程要求太高了。尝试寻找其他日志记录解决方案,如ETW()或SmartInspect()或其他任何解决方案。@Lieven您的链接谈论的是不同的事情。它讨论了该工具,该工具充当调试器,从OutputDebugString读取输出并将其传输到另一个会话,实际的调试器位于该会话中。有2个调试器,每个调试器连接到单独的源。有2个源代码和2个调试器。这与所讨论的情况不同,pantarhei需要2个调试器(Delphi和DebugView)连接到单个源。您不能这样做,因为从源代码读取涉及使用自动重置事件。一旦调试器使用了它们-没有其他应用程序也可以使用它们,原因很明显。当然。但订购或介绍这些工具不是我的责任。我也看过SmartInspect。当然,拥有它会很好。但是现在不是。相反,Pantarhei,每个人都有责任向他们的同行介绍有用的工具。好的。用错了词。所以我已经介绍了这些工具。但我无法决定是否购买它们并将其集成到现有的工具中。我可以将其用于我自己的本地测试。但我不认为我能进入代码库。但我会看看的。谢谢