我想知道是否可以绕过OutputDebugString?我希望OutputDebugString输出显示在DebugView中,而不是在内部的Delphi事件查看器窗口中。但我找不到一种方法告诉Delphi不要吞下OutputDebugString。有任何想法吗?在Delphi 7中绕过OutputDebugString?
关于
我想知道是否可以绕过OutputDebugString?我希望OutputDebugString输出显示在DebugView中,而不是在内部的Delphi事件查看器窗口中。但我找不到一种方法告诉Delphi不要吞下OutputDebugString。有任何想法吗?在Delphi 7中绕过OutputDebugString?
关于
我想这是没有办法的。 德尔福2009的情况仍然如此。您应该提交功能请求:http://qc.embarcadero.com
我想知道是什么优势,而不是Delphi的内部事件日志窗口应该是?
这是不可能的。
OutputDebugString将字符串发送到调试器(顾名思义)。每个进程只能有一个活动调试器。你在Delphi下运行你的应用程序 - Delphi从调试器那里得到了消息。在Delphi之外运行应用程序 - DebugView可以访问它们,因为没有调试器声明它。
但是:为什么你需要这个吗?只需在Delphi事件日志中禁用其他类型的事件 - 您将获得与DebugView相同的功能。
我知道输出被发送到调试器。我的问题是如何绕过它。但看起来没有办法绕过它。如果我禁用其他类型,我不会获得相同的功能。我仍然收到数百条调试消息。在DebugView中,我可以过滤输出,因此我只会看到我目前感兴趣的内容。这有很大的不同。 – pantarhei 2010-06-25 08:30:45
@pantharhei:在这里看看http://d-fens.net/?idMenu=3&idSub=8&idPage=1&uLinkPages=1&uToc=0,在我看来,这应该是可能的。根据请求,作者可以提供重定向的源代码。 – 2010-06-25 09:25:38
@Lieven:看起来很有趣。如果时间压力消失,我们将仔细观察。它会永远消失吗? ;) – pantarhei 2010-06-25 09:42:19
不是我原来问的问题,我意识到,但值得看看来自Raize Software的CodeSite。它使OutputDebugString达到一个全新的水平。消息(可以)被定向到CodeSite查看器,这大致相当于高度灵活的DebugView。很值得每一分钱恕我直言。
代替DebugView,您可以尝试使用Process Monitor及其新的“调试输出”功能。它不使用OutputDebugString,它使用自己的API,还有一个Delphi包装器here。您可以使用Process Monitor过滤功能,Delphi不会捕获该消息 - 但它不像OutputDebugString那样具有通用功能。
可以将它用于我自己的本地测试。但我认为我不会将其纳入代码库。但我会看看它。谢谢。 – pantarhei 2010-06-25 14:41:34
它应该显示在Delphi窗口中_和_ Debug_中。你能证实这种情况吗? – 2010-06-25 06:45:58
我也有Delphi 7,它不在DebugView中显示,只在Delphi事件日志中显示。 – 2010-06-25 06:49:35
它只在Delphi事件日志中显示它是否在调试会话中运行。如果应用程序在没有连接调试器的情况下启动,OutputDebugString被DebugView捕获。 – pantarhei 2010-06-25 06:55:06