2011-08-02 81 views
1

我有两个C++程序让我们说使用VS2010在windows中创建“test1”和“test2”二进制文件。我的逻辑是“test1”启动“test2”。现在我想通过test1来调试test1,所以我在test2的程序中保留了中断点,并调试了二进制文件。在VS2010中调试C++程序

现在我开始发布“test1”版本,并且按照预期启动了test2(请注意,我没有发布test2版本),因此我们知道只有调试版本已启动。但是当test2开始的时候,我希望在断点处停下来,但它并没有停止。当我从VS IDE启动test2的调试版时,它正在停止点。

如何在test1启动test2时调试test2?我们怎样才能在windows中实现这一点。

谢谢!

回答

3

启动调试器时,可以使用“attach to running process”选项。运行测试1正常,而当它产生test2的过程中,你可以将调试器附加到它:

From the debug menu

Process selection dialog

+2

我可以补充一点,你可能需要睡眠()test2几秒钟,所以它给你时间来附加它 –

+0

是的,非常好的一点! – mwigdahl

+0

而不是睡觉,只是显示一个消息框。它应该给你尽可能多的时间作为你需要附加,并且你将不会在睡眠方法返回之前与时钟赛跑。 –

1

您需要启动test2的项目(不TEST1)的调试会话,并指定在test2的项目属性中运行可执行文件。这在配置属性 - >调试 - >命令下。将此值设置为test1.exe。

+0

我个人更喜欢$(TargetPath)作为调试命令。这样如果你重命名你的二进制文件,它仍然有效。 –

+0

@C约翰逊:但$(TargetPath)将指向错误的可执行文件test1。在启动test2.exe项目的调试器时需要执行exe文件 - 因此,当您按F5时,test2.exe项目就是活动项目。 – Skizz

1

你有两种可能的方法:

附加到进程

  1. 充分利用test2的项目活跃在Visual Studio。
  2. 开始test1,然后启动test2进程。
  3. 使用调试|附加到进程并选择test2进程。

这很好,如果你不需要调试过程的启动。

项目配置

  1. 充分利用test2的项目活跃在Visual Studio。
  2. 打开工程|配置|配置属性|调试。
  3. 将命令设置为test1.exe的完整路径。

通常这种替代方法更高效,并且允许您调试启动。