2010-06-25 115 views
4

我想知道是否可以繞過OutputDebugString?我希望OutputDebugString輸出顯示在DebugView中,而不是在內部的Delphi事件查看器窗口中。但我找不到一種方法告訴Delphi不要吞下OutputDebugString。有任何想法嗎?在Delphi 7中繞過OutputDebugString?

關於

+2

它應該顯示在Delphi窗口中_和_ Debug_中。你能證實這種情況嗎? – 2010-06-25 06:45:58

+2

我也有Delphi 7,它不在DebugView中顯示,只在Delphi事件日誌中顯示。 – 2010-06-25 06:49:35

+2

它只在Delphi事件日誌中顯示它是否在調試會話中運行。如果應用程序在沒有連接調試器的情況下啓動,OutputDebugString被DebugView捕獲。 – pantarhei 2010-06-25 06:55:06

回答

0

禁用事件日誌屬性中的「輸出消息」不起作用?

+0

是的。它不起作用。 – splash 2010-06-25 07:01:51

+1

結果是消息未顯示在內部事件日誌中。但它們仍然被調試器吞噬。 – pantarhei 2010-06-25 07:07:41

+0

我擔心一旦調試器連接到進程就會將輸出發送到該調試器。 – 2010-06-25 09:30:21

1

我想這是沒有辦法的。 德爾福2009的情況仍然如此。您應該提交功能請求:http://qc.embarcadero.com

我想知道是什麼優勢,而不是Delphi的內部事件日誌窗口應該是?

+0

的好處是您可以在DebugView中過濾調試字符串。讓生活變得更輕鬆。 – pantarhei 2010-06-25 07:06:32

+0

你真的需要比Delphi中的on/off過濾器更多嗎? ;-) – splash 2010-06-25 07:08:20

+0

提交D7的功能請求?你在跟我開玩笑嗎?我很確定,如果D09目前不可能,他們不會添加D7。 – pantarhei 2010-06-25 08:33:17

3

這是不可能的。

OutputDebugString將字符串發送到調試器(顧名思義)。每個進程只能有一個活動調試器。你在Delphi下運行你的應用程序 - Delphi從調試器那裏得到了消息。在Delphi之外運行應用程序 - DebugView可以訪問它們,因爲沒有調試器聲明它。

但是:爲什麼你需要這個嗎?只需在Delphi事件日誌中禁用其他類型的事件 - 您將獲得與DebugView相同的功能。

+1

我知道輸出被髮送到調試器。我的問題是如何繞過它。但看起來沒有辦法繞過它。如果我禁用其他類型,我不會獲得相同的功能。我仍然收到數百條調試消息。在DebugView中,我可以過濾輸出,因此我只會看到我目前感興趣的內容。這有很大的不同。 – pantarhei 2010-06-25 08:30:45

+1

@pantharhei:在這裏看看http://d-fens.net/?idMenu=3&idSub=8&idPage=1&uLinkPages=1&uToc=0,在我看來,這應該是可能的。根據請求,作者可以提供重定向的源代碼。 – 2010-06-25 09:25:38

+0

@Lieven:看起來很有趣。如果時間壓力消失,我們將仔細觀察。它會永遠消失嗎? ;) – pantarhei 2010-06-25 09:42:19

0

不是我原來問的問題,我意識到,但值得看看來自Raize Software的CodeSite。它使OutputDebugString達到一個全新的水平。消息(可以)被定向到CodeSite查看器,這大致相當於高度靈活的DebugView。很值得每一分錢恕我直言。

+0

當然。但訂購或引入這些工具並不是我的責任。我也看過SmartInspect。肯定會很高興。但目前還沒有。 – pantarhei 2010-06-25 09:40:34

+0

相反,Pantarhei,每個人都有責任向同行介紹有用的工具。 – 2010-06-25 12:15:07

+0

好的。用錯了詞。所以我已經介紹了這些工具。但我不能決定是否購買並集成到現有的工具中。 – pantarhei 2010-06-25 14:02:18

1

代替DebugView,您可以嘗試使用Process Monitor及其新的「調試輸出」功能。它不使用OutputDebugString,它使用自己的API,還有一個Delphi包裝器here。您可以使用Process Monitor過濾功能,Delphi不會捕獲該消息 - 但它不像OutputDebugString那樣具有通用功能。

+0

可以將它用於我自己的本地測試。但我認爲我不會將其納入代碼庫。但我會看看它。謝謝。 – pantarhei 2010-06-25 14:41:34