【问题标题】:Integrating a custom launcher into the Visual Studio Debugger将自定义启动器集成到 Visual Studio 调试器中
【发布时间】:2017-09-13 19:45:09
【问题描述】:

我们正在创建一个 Visual Studio 调试器扩展,它需要通过设置运行时(不是 CLR 或 Win32)的自定义启动器启动正在调试的应用程序,并在新进程中启动目标应用程序。换句话说,自定义启动器负责创建新进程。在 VS 调试器中,通常通过调用 VsShellUtilities.LaunchDebugger() 并提供一个 dlo 字段设置为 DEBUG_LAUNCH_OPERATION.DLO_CreateProcess 的 VsDebugTargetInfo 对象以及要启动和调试的 exe 文件的坐标来启动调试器。这不符合我们的发布模式。

还有一个 dlo 值 DEBUG_LAUNCH_OPERATION.DLO_Custom 似乎是为了这个目的(使用 clsIdCustom 字段来指示启动器),但当前的文档说它已经过时,并将我们引导回 DEBUG_LAUNCH_OPERATION.DLO_CreateProcess,但不仅没有这不适合我们的模型,但在这种情况下使用 clsidCustom 来指示调试引擎(如果它只是一个)。

那么,我们推荐的启动 VS 调试器并使用我们的自定义启动器来配置和启动我们的运行时(以及其中的应用程序)的方法是什么?

【问题讨论】:

    标签: visual-studio-debugging visual-studio-extensions


    【解决方案1】:

    根据Visual Studio API 文档,它只提供DLO_CreateProcess 来启动进程。您可以使用 dwClsidCount 和 pclsidList 指定要使用的调试引擎。

    以下示例介绍如何通过 VSIX 项目调用自定义启动器。

    https://code.msdn.microsoft.com/Visual-Studio-Debug-Engine-c2e21c0e

    【讨论】:

      【解决方案2】:

      我在移植到现代 VS2022 时遇到困难,但我一直在使用由此扩展构建的 VSIX 模板,适用于 VS2017 和 VS2019。经过一番修修补补。这确实适用于 VS2022,但前提是您不篡改软件包。

      https://github.com/microsoft/VSProjectSystem/blob/master/doc/extensibility/IDebugLaunchProvider.md 祝你好运,那里没有很多东西,所以我想我会给你这颗宝石。

      这允许您对项目属性表进行删除选择以进行调试。您必须导入目标文件,然后导入您创建的规则表,这意味着您必须创建一个创建自定义项目的向导。

      【讨论】:

        猜你喜欢
        • 2018-06-07
        • 2023-03-07
        • 1970-01-01
        • 2023-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多