2014-12-26 33 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

相关问题