2012-02-20 47 views
20

。但是如果我使用msgbox函數,msgbox彈出,所以到達線。的Debug.WriteLine顯示當使用</p> <pre><code>using System.Diagnostics; </code></pre> <p>和</p> <pre><code>Debug.WriteLine("Test"); </code></pre> <p>已經運行應用程序,沒有 「測試」 可以在輸出中看到什麼

我在錯誤的窗口看,或者我有什麼改變?

我正在使用VC#Express。

+2

你稱之爲「輸出」是什麼? – 2012-02-20 23:14:52

+1

當然你正在vs vs ide中運行你的應用程序?對? – Steve 2012-02-20 23:15:42

+1

@Henk Holterman輸出,顯示最底部的「調試」輸出。 – Zurechtweiser 2012-02-20 23:19:04

回答

18

有此行爲

  • 兩種可能的原因該應用程序在釋放模式被編譯,Debug.WriteLine呼叫不是最終方案
  • 程序中沒有跟蹤監聽程序,因此不能輸出消息

診斷最簡單的方法是將代碼更改爲

#if DEBUG 
Console.WriteLine("the message"); 
#endif 

如果打印,那麼你有一個問題與跟蹤偵聽器,否則你正在編譯中發佈

+0

我替換了Console.WriteLine(「消息」);與MessageBox.Show(「這是一條消息」);並且工作,所以調試模式打開。 – Zurechtweiser 2012-02-21 11:15:22

+0

Mono C#編譯器的'--debug'選項('mcs --debug')只能在二進制文件中生成調試符號,但它不會設置DEBUG和TRACE。對'Debug.WriteLine()'使用'mcs --debug -d:DEBUG -d:TRACE Program.cs'並且與工作相關。 – Palec 2017-03-29 17:44:22

2

Debug.WriteLine("Test");當您處於調試模式時,應顯示在輸出窗口中。如果您想調試運行的應用程序(發佈模式),則可以使用Trace並在Windows事件中顯示。

+0

裏面調試,這就是我正在看的地方。輸出,顯示最底部的「調試」輸出。 – Zurechtweiser 2012-02-20 23:19:49

+0

我更新了答案 – 2012-02-20 23:45:21

+2

@Sofian,對,無論問題是什麼,這個問題都不值得讚揚。有時會發生。 – Steve 2012-02-20 23:57:31

5

我相信「Debug.WriteLine()」寫入Listeners集合。從那裏你可以確定調試信息的寫入位置。默認情況下,「輸出」應該出現在顯示的位置,但如果您在查看信息時遇到問題,請創建一個不同的偵聽器來獲取調試信息。

這裏是MSDN例子:

TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out); 
Debug.Listeners.Add(myWriter); 
+0

這是正確的,我有一個在我的配置,這是阻止這 – Sam 2017-01-18 03:50:40

+0

我選擇了'System.Console.Error'而不是'System.Console.Out'。調試消息不應該與實際輸出不可分割地混合;輸出重定向允許我在我的設置中將它們分開。 – Palec 2017-03-29 17:37:15

+0

['ConsoleTraceListener'](https://msdn.microsoft.com/en-us/library/system.diagnostics.consoletracelistener.aspx)是'TextWriterTraceListener'的一個簡約的子類,它只是提供構造函數以方便初始化到標準流編寫器:'新的ConsoleTraceListener()'使用'Console.Out','新的ConsoleTraceListener(true)'使用'Console.Error'。 [查看其源代碼](https://referencesource.microsoft.com/#System/compmod/system/diagnostics/ConsoleTraceListener.cs)稍後,Console.SetOut()和Console.SetError()調用不影響他們。 – Palec 2017-03-29 18:52:08

3

我不知道任何人都提到了這個原因,但是如果我以調試模式編譯,然後運行程序(Ctrl + F5)而不是選擇開始調試(F5),我也不會看到Debug.WriteLine

因此,它是不夠的,只是在調試模式下編譯,你還必須積極,調試程序,而不只是運行它:)

+2

正確。你必須有一個調試器「附加」 – 2015-08-11 15:06:28

54

菜單>工具>選項>調試>常規:

  • 確保「重定向所有輸出窗口的文本即時窗口」未選中

在項目屬性>構建:

  • 配置:調試
  • 「定義DEBUG常數」 被選中
  • 「定義TRACE常數」 被選中

上的輸出窗口:

  • 顯示輸出:調試
  • 右鍵單擊輸出窗口並確保選中「程序輸出」
+7

大約一年後,這個答案仍然很棒。在取消選中「將所有輸出窗口文本重定向到直接窗口」後,我的Debug.WriteLine(「Text」);開始工作。 – Neill 2016-01-26 13:39:25

+0

「確保」將所有輸出窗口文本重定向到立即窗口「不被選中」是我必須做的。奇怪我怎麼不記得必須這樣做,它工作得很好.. – eaglei22 2016-09-12 18:40:39

+0

太棒了!不確定爲什麼在vs2013中默認選中「將所有輸出窗口文本重定向到立即窗口」。 vs2015不是。這就是爲什麼我總是困惑爲什麼項目在vs2015中顯示出痕跡,但我在vs2013中看不到任何東西。 – Louis 2016-12-08 14:44:38

1

答案很簡單。可能是您按ctrl + F5這意味着無需調試即可啓動。 只需按F5Start Debugging模式。

enter image description here

0

對於任何谷歌搜索: 雖然有指向在配置文件中去除聽衆的各種答案的部分

<handlers> 

也留意

<remove name="OPTIONSVerbHandler" /> 

因爲這也抑制了調試輸出。

0

如果其他答案中的任何一個都不起作用。嘗試在Debug.WriteLine行中放置一個斷點並查看它是否被擊中。

如果未被擊中,原因是因爲舊版本的代碼正在執行。

爲了解決這個問題,首先檢查這個

Source

進入工具 - 選項

的項目和解決方案 - >生成和運行選擇「總是建立」 下的「上運行,項目過期時「

enter image description here

並檢查臨時文件是否被清除。檢查這SO Question

這對我有效。

如果即使這失敗嘗試重新啓動VS.大部分時間都在使用。