2014-12-26 4 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 no, вам нужно указать сборку для режима отладки/выпуска. –

0

Если вы не хотите, чтобы отладить только Нажмите (Ctrl + F5). В противном случае, если вы хотите отлаживать только положительную точку останова в последней строке вашего кода

Вы можете использовать Console.ReadKey(); в конце вашей программы.

Console.ReadKey(); блокирует текущий поток до тех пор, пока не будет нажата клавиша или функциональная клавиша.

+0

Да, я сказал, что точка останова - это то, что я использую. Обратите внимание, что в моем ответе используется Console.ReadKey(), за исключением твиста. – user34660

Смежные вопросы