You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Attach to Process调试Windows服务时触发异常的解决方法

调试Windows服务时附加进程失败的问题解决

问题背景

自行编写Windows服务并安装后,使用Visual Studio 2022(版本17.6.4)的「Attach to Process」功能调试时出现错误,无法触发断点且抛出异常。

代码片段

Program.cs

var builder = Host.CreateDefaultBuilder(args)
    .UseWindowsService(options =>
    {
        options.ServiceName = "Example Service";
    })
    .ConfigureServices((context, services) =>
    {
        services.AddSingleton<MyService>();
        services.AddHostedService<WindowsBackgroundService>();
    });

IHost host = builder.Build();

host.Run();

WindowsBackgroundService的ExecuteAsync方法

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
    Thread.Sleep(150000);
    var exampleString = "exampleString"; // breakpoint HERE
}

发布配置

发布选项设置:

  • 目标框架:.NET 6
  • 部署模式:独立
  • 目标运行时:win-x64
  • 勾选「生成单个文件」和「启用ReadyToRun编译」

调试步骤与错误信息

调试步骤

  1. 启动Windows服务
  2. 在Visual Studio工具栏选择「Debug」,点击「Attach to Process」
  3. 在「可用进程」列表中选中服务进程并点击「Attach」
  4. 等待断点触发

错误信息

执行步骤1-3后几秒,收到错误提示:无法调试进程,因为没有为该进程加载任何用户代码。同时弹出异常信息:

Unhandled exception at 0x00007FF83E76CF19 (KernelBase.dll) in ExampleService.exe: 0xE0434352 (parameters: 0xFFFFFFFF80131534, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x00007FF737E70000).

解决方案

1. 禁用单个文件部署

单个文件打包会导致调试器无法识别用户代码,修改发布配置:

  • 取消勾选「生成单个文件」选项
  • 重新发布服务并重新安装

2. 确保生成调试符号文件

发布时必须包含.pdb调试符号文件,否则调试器无法关联代码与进程:

  • 进入发布配置的「高级」设置,将「调试符号」设置为「完整」或「便携式」
  • 确认发布目录中存在与服务EXE同名的.pdb文件

3. 替换Thread.Sleep为异步延迟

Thread.Sleep会阻塞线程,在异步方法中应使用await Task.Delay避免线程阻塞异常:

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
    await Task.Delay(150000, stoppingToken);
    var exampleString = "exampleString"; // breakpoint HERE
}

4. 以管理员身份运行Visual Studio

Windows服务运行在系统权限下,调试器需要管理员权限才能成功附加进程,右键Visual Studio图标选择「以管理员身份运行」。

5. 验证.NET版本一致性

确保服务实际运行的.NET版本与项目目标框架(如.NET 6)完全匹配,版本不兼容会导致调试失败。

内容的提问来源于stack exchange,提问作者Librapulpfiction

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:59:55