2014-12-26 32 views
0

當一個C#或VB.Net 控制檯程序調試控制檯儘快關閉作爲程序結束並沒有機會看到的輸出。我如何保持開放?如何暫停Windows控制檯程序正在調試

+0

請注意,這是我提供答案的問題。答案以前不存在。如果我在其他問題上發佈了我的答案,那麼我不會得到認可。 – user34660

回答

2

我經常看到類似這樣的問題。通常建議是使用Console.ReadKey()或類似的東西,但這不適合生產使用。我的首選是簡單地在Main的最後一行放置一個斷點,或者類似的地方。

但我認爲一個好的選擇是使用Debugger.IsAttached來確定控制檯程序是否正在調試。以下是如何使用它的簡單示例。這是C#代碼,但我希望很容易轉換爲VB .Net。

using System; 
namespace TestConsole 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("Testing"); 
      if (System.Diagnostics.Debugger.IsAttached) 
      { 
       Console.WriteLine("Debugging; press a key to continue..."); 
       Console.ReadKey(); 
      } 
     } 
    } 
} 
+1

檢查調試器是不夠的,如果用戶在他的桌面上創建了程序的快捷方式,這也會失敗。 –

+1

對於桌面上程序的快捷方式,我不認爲它是一個失敗,因爲它是控制檯程序的正常行爲。用戶希望需要爲控制檯程序做些事情,我們不需要在代碼中添加特別的東西。 – user34660

0
#define DEBUG 
// ... 
#if DEBUG 
    Console.WriteLine("Debug version"); 
#endif 

參考http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

+0

是否會消除在調試器外部執行的調試版本正在執行的相關代碼?在調試器外部,我們自動獲得「按任意鍵繼續」。 – user34660

+0

@ user34660不,您需要指定構建調試/發佈模式。 –

0

如果你不想調試只是按(Ctrl + F5鍵)。否則,如果你想調試只是把你的代碼的最後一行的中斷點

你可以在程序結束時使用Console.ReadKey();

Console.ReadKey();阻止當前線程,直到按下字符或功能鍵。

+0

是的,我說我使用了一個斷點。請注意,我的答案確實使用了Console.ReadKey(),除了扭曲之外。 – user34660

相關問題