【问题标题】:How to attach a process to the current debugger programmatically?如何以编程方式将进程附加到当前调试器?
【发布时间】:2020-06-17 20:49:56
【问题描述】:

我在解决方案中有 2 个项目可以编译为 A.exeB.exe。 A 将启动 B 并通过管道连接到它。我想测试它们之间的连接,所以我想同时连接到两者。每次手动都非常繁琐且不方便,所以我尝试了这个

if(IsDebuggerPresent())
    DebugActiveProcess(processId);

但似乎 B 附加到 A 的调试器而不是 Visual Studio 的。那么如何自动将 B 附加到 VS 调试器?

我手头有用于调试故障转储的 windbg,所以它也可能是一个解决方案,只要它可以在没有多个用户交互的情况下完成

【问题讨论】:

    标签: c++ visual-studio debugging automation attach-to-process


    【解决方案1】:

    以编程方式附加到进程B

    方法一:使用VS

    1. 打开 B.vcxproj 而不是您的解决方案(.sln 包含项目 AB
    2. 设置断点

    1. 通过system()(或其他变体)从你的项目A运行这个dos命令:

      devenv /nosplash /run "G:\Logiciels\B\B.vcxproj" /nosplash /debugexe

    2. devenv 是 VS 路径中的命令。在我的例子中:

      C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC

    3. 运行此命令时,B 项目打开并到达断点。

    方法二:使用Windbg

    只要调用这个命令:

    windbg -p ProcessID
    

    以图形方式附加到进程B

    在另一个实例中打开您的 B 项目,并像这样附加到它:

    然后选择你的 B.exe:

    【讨论】:

    • 我认为您错过了“以编程方式”。这就是您手动操作的方式。
    • @MSalters 好吧,我没看到这句话。谢谢。
    猜你喜欢
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2010-10-07
    • 2019-08-12
    • 2012-11-09
    • 2012-02-11
    相关资源
    最近更新 更多