2011-08-02 116 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的完整路徑。

通常這種替代方法更高效,並且允許您調試啓動。