.net - 如何等待远程 .NET 调试器连接

标签 .net debugging breakpoints remote-debugging

今天我遇到了一个问题,我需要远程调试程序。该程序是从另一个系统启动的,所以我真的没有机会在命令行上与它交互。不过,我可以轻松更改其来源。

我需要做的是让程序正常启动,然后等待我用调试器附加到它。我想不出一个让我快乐的方法。我确实发现了这个错误,但没有调试器的帮助。

while(true) { }

保持进程处于事件状态,然后我可以使用调试器“设置下一个语句”,但这看起来很尴尬且粗鲁。

Console.ReadLine();

打字看起来很奇怪,因为实际上没有控制台供我按输入。 (它也不起作用。设置下一个语句然后运行会让您返回 ReadLine() 等待。)

那么我可以在 .NET/CLR/C# 程序中插入什么样的代码来表示“在这里等待,直到我可以附加调试器”?

最佳答案

您可以使用System.Diagnostics.Debugger.IsAttached属性来检查调试器是否附加到进程。此应用程序将等待,直到附加调试器:

using System;
using System.Diagnostics;
using System.Threading;

namespace DebugApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Waiting for debugger to attach");
            while (!Debugger.IsAttached)
            {
                Thread.Sleep(100);
            }
            Console.WriteLine("Debugger attached");
        }
    }
}

关于.net - 如何等待远程 .NET 调试器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361077/

相关文章:

swift - 创建符号断点/修复自动布局问题

c# - 无法启动红隼。无法绑定(bind)到已在使用的地址

c# - ConcurrentStack - 从底部删除或等效功能

android - 如何识别哪个 .apk 是用调试 key 签名的

javascript - 为什么这个函数会提示 URL 但没有提示字符串段?

debugging - Windbg 条件断点忽略条件本身

c++ - 从 MSDN 实现 __cpuid 示例给出了非常大的数字

.net - 将新版本部署到 Azure 后出现网关超时是否正常?

c# - 无论存在与否,AutoFac 创建类型

php - 我的登录和注册脚本出现问题