gpt4 book ai didi

c# - 调试两个程序,其中一个启动另一个程序

转载 作者:搜寻专家 更新时间:2023-10-31 01:46:57 24 4
gpt4 key购买 nike

有一个程序(用 C# 编写的 WPF 应用程序)调用另一个程序(用 C++ 编写的命令行程序)。他们都在同一个解决方案中。在某些时候,调用者通过使用 System.Diagnostics.Process 中提供的方法使用其他程序来完成一些工作。我想在测试这个项目时调试这两个程序。怎么做?是否有一些简单的方法,例如我们对库执行的“附加”?

--编辑--
进程A 启动进程B。然后 A 等到进程 B 退出。此外,B 一些非常小的东西,例如命令提示符下的 dir 可以快速退出。

最佳答案

  • 由于临近截止日期,没有时间按照 Wilbert 的建议用托管代码包装 C++。
  • 在单独的 VS 上运行这两个程序也不起作用(通过尝试确认),因为程序 B 仅在程序 A 需要时运行,并且每次用于启动 B命令行参数不同并且在运行时生成。 (即使在同一个 VS 中也无法完成,因为调试一个进程似乎会暂停另一个进程的执行)
  • 无法在程序中调用调试,因为 B 是 native C++ 应用程序。要访问 visual studio 扩展,项目需要是托管项目。由于我的 VS 版本有问题,无法将当前项目转换为托管项目。 (安装 Net Framework 4.5 后,VS 2010 需要更新到 SP1 才能使用某些功能)

应用解决方案:

  1. A 的源代码中,在为 B 生成命令行参数的地方放置一个断点(我把它放在 的地方proc.Start() 被调用)。
    例如

    Process otherProcess = new Process();
    ...
    otherProcess.StartInfo.Arguments = "abc" + foo() + "," + bar();// what we need
    ...
    otherProcess.Start(); // break-point is here
  2. 在 Debug模式下运行 A,直到到达断点。

  3. 读取 proc.StartInfo.Arguments 的值并复制该值供以后使用。
  4. 安全退出调试A(停止调试)。
  5. B 的命令行参数设置为复制的值(项目属性 > 调试 > 命令行参数)
  6. 开始调试 B(右键单击项目 > 调试 > 启动新实例)。

关于c# - 调试两个程序,其中一个启动另一个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com