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

如何在JetBrains Rider插件中以编程方式附加调试器到进程

在Rider插件中编程附加调试器到指定PID进程

在Rider插件中,调试器相关功能主要通过IDebuggerManager和IDebugger接口实现,以下是具体实现步骤和代码示例:

核心实现步骤

  • 从IDataContext获取IServiceProvider,用于检索Rider内部服务
  • 通过服务提供者获取IDebuggerManager,进而拿到当前激活的IDebugger实例
  • 构造ProcessAttachModel指定目标进程PID和调试类型,调用AttachToProcess完成附加

代码示例

在你的IExecutableAction实现类的Execute方法中添加如下代码:

using JetBrains.Application;
using JetBrains.ReSharper.Debugger;
using JetBrains.ReSharper.Debugger.DotNet;
using JetBrains.UI.Actions;

public class AttachDebuggerAction : IExecutableAction
{
    public void Execute(IDataContext context, DelegateExecute execute)
    {
        // 从DataContext获取服务提供者
        var serviceProvider = context.GetData(CommonDataKeys.SERVICE_PROVIDER) as IServiceProvider;
        if (serviceProvider == null) return;

        // 获取调试器管理服务及当前调试器实例
        var debuggerManager = serviceProvider.GetService<IDebuggerManager>();
        var debugger = debuggerManager.CurrentDebugger;
        if (debugger == null) return;

        // 替换为你创建的.NET进程的实际PID
        int targetPid = newp.Id; 

        // 构造附加模型,指定PID和.NET调试类型
        var attachModel = new ProcessAttachModel(
            pid: targetPid,
            debuggerType: DotNetDebuggerType.Instance,
            attachOptions: new AttachOptions()
        );

        // 执行调试器附加操作
        debugger.AttachToProcess(attachModel);
    }
}

注意事项

  • 确保目标进程是已启动的.NET可执行文件,Rider支持对其进行调试
  • 2023.2.3版本的Rider API中,DotNetDebuggerType.Instance适用于所有.NET平台(Framework/Core/5+)
  • 若需验证附加结果,可监听debugger.ProcessAttached事件,或检查debugger.Processes集合中是否包含目标PID的进程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:12:33