debugging 如何以编程方式将进程附加到当前调试器?

58wvjzkj  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(196)

我 的 解决 方案 中 有 2 个 项目 编译 为 * A . exe * 和 * B . exe *

  • A * 将 启动 * B * 并 通过 命名 管道 连接 到 它 。 我 想 测试 它们 之间 的 连接 , 所以 我 想 attach to both at the same time 。 每次 手动 这样 做 是 非常 繁琐 和 不 方便 的 , 特别 是 当 B 在 超时 后 关闭 , 如果 它 没有 收到 任何 来自 A 的 数据 。 因此 我 尝试 了 这个
if (IsDebuggerPresent())
    DebugActiveProcess(processId);

中 的 每 一 个
但是 , * * B 似乎 附加 到 了 A 的 调试 器 而 不是 Visual Studio 的 调试 器 * * 。 那么 , 我 如何 将 B 附加 到 VS 调试 器 * * * 自动 * * * ?
我 手头 有 windbg , 可以 调试 崩溃 转储 , 所以 它 也 可能 是 一 个 解决 方案 , 只要 它 可以 * 在 没有 多 个 用户 交互 * 的 情况 下 完成

mwg9r5ms

mwg9r5ms1#

以程序设计方式附加到行程序B
方法一:使用VS

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

1.通过system()(或其他变体)从项目A运行此dos命令:
运行“G:\逻辑元件\B\B.vcxproj”/nosplash /调试执行程序

  1. devenv是VS路径中的一个命令。在我的例子中,它位于:
    C:\程式档(x86)\Microsoft Visual Studio 10.0\VC
    1.当您运行此命令时,B项目被打开并到达断点。

方法二:使用Windbg

就调用这个命令:

windbg -p ProcessID

以图形方式附加到进程B

在另一个示例中打开B项目,并按如下所示附加到该示例:

然后选择您的B:

相关问题