Visual Studio - 以编程方式将调试器附加到远程进程

Posted

技术标签:

【中文标题】Visual Studio - 以编程方式将调试器附加到远程进程【英文标题】:Visual studio - Attach debugger to remote process - programatically 【发布时间】:2018-08-04 23:25:06 【问题描述】:

我正在尝试编写给定机器和进程名称的代码,在 Visual Studio 中启动调试器并连接到远程机器上的进程。

我可以手动成功,但是,我寻找了如何使用 DTE 对象进行 id 的指南,但没有成功。

我尝试了以下方法: https://social.msdn.microsoft.com/Forums/vstudio/en-US/69abdaf1-60b1-4ffd-ad33-2d319cb13316/how-do-i-automate-attaching-the-debugger-to-a-remote-process?forum=vsx

还有:https://blogs.msdn.microsoft.com/csharpfaq/2011/03/28/how-to-programmatically-launch-debugger-in-a-remote-machine/

在第一个解决方案中,没有任何反应,并且“LaunchDebugTargets3”方法返回非零代码。第二个在调用方法时抛出一个通用的失败异常:“AttachDebugger”。

有人可以帮我吗?

【问题讨论】:

【参考方案1】:

设法解决它。

        var debugger = dte.Debugger as EnvDTE80.Debugger2;
        var transport = debugger.Transports.Item("Remote");
        var process = debugger.GetProcesses(transport, "remoteMachineName").Item("your-process.exe") as EnvDTE80.Process2;
        process.Attach();

【讨论】:

感谢分享解决方案,您可以将其标记为答案以帮助更多人。

以上是关于Visual Studio - 以编程方式将调试器附加到远程进程的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Visual Studio 2012 中以编程方式折叠/展开某个名称的所有预处理器块吗?

为啥 Visual Studio 在调试时会以不同的方式处理 ANSI Escape 代码?

如何在 Visual Studio 中调试类库

以编程方式创建 Visual Studio 项目

Visual Studio 2013仅在调试菜单中显示附件

以编程方式访问 Visual Studio 数据库项目架构