【问题标题】:How to pause a Windows console program being debugged [duplicate]如何暂停正在调试的 Windows 控制台程序 [重复]
【发布时间】:2014-12-26 05:58:27
【问题描述】:

当一个 C# 或 VB.Net 控制台程序被调试时,控制台关闭在程序结束 > 并且没有机会看到输出。如何保持打开状态?

【问题讨论】:

  • 请注意,这是我提供了答案的问题。答案以前不存在。如果我在另一个问题中发布了我的答案,那么我将不会得到认可。

标签: c# vb.net windows debugging console


【解决方案1】:

我经常看到这样的问题。通常建议是使用 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();
            }
        }
    }
}

【讨论】:

  • 检查调试器是不够的,如果用户在他的桌面上创建程序的快捷方式,这也会失败。
  • 对于桌面程序的快捷方式,我不认为它是失败的,因为它是控制台程序的正常行为。用户期望需要为控制台程序做一些事情,我们不需要在我们的代码中添加一些特殊的东西。
【解决方案2】:
#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug version");
#endif

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

【讨论】:

  • 对于在调试器外部执行的调试构建,这是否会消除相关代码的执行?在调试器之外,我们会自动得到“按任意键继续”。
  • @user34660 不,您需要指定调试/发布模式的构建。
【解决方案3】:

如果您不想调试,只需按 (Ctrl+F5)。否则,如果您想调试,只需在代码的最后一行放置断点

您可以在程序结束时使用Console.ReadKey();

Console.ReadKey(); 阻塞当前线程,直到按下字符或功能键。

【讨论】:

  • 是的,我说过断点是我使用的。请注意,我的答案确实使用了 Console.ReadKey() ,但有所不同。
猜你喜欢
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2014-07-25
  • 2010-09-16
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多