我想知道是否可以繞過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