2010-07-15 47 views
2

從幾年前我就記得在Visual Basic 6中的一件很棒的事情,那就是你可以將一個ActiveX exe項目加載到IDE中,設置一個斷點,按下Run並且每當有人EXE或不同IDE中的項目)稱爲該DLL,則會產生斷點。使用Visual Studio進行跨解決方案調試

對於Visual Studio 2008來說,這是可能的嗎?我可以將一個WinForms項目加載到一個IDE中,並將一個類庫項目加載到另一個IDE中,並讓WinForms項目調用類庫項目?

回答

2

在VS中,您不能將兩個調試器附加到相同的進程(它可能將附加到VS和WinDbg到相同的進程,但不是默認的方式)。

要點是,您不必使用兩個調試器在您的解決方案中包含輔助項目。在dll加載之後,您可以逐步完成並在其中設置斷點,就好像這是您剛剛編譯的解決方案 - 所需的只是dll的調試符號(pdb)。通常,dll加載時間在進程啓動 - 但是如果它是動態加載的,您可能需要在LoadLibrary調用後立即中斷,然後纔在dll中設置斷點。你可以提前設置斷點,但是在dll加載之後你仍然需要在某處斷開,以便將斷點轉換爲指令地址。我希望如你所說的回答這個問題,但它不會重現你描述的VB經驗。 AFAIK沒有辦法在一個庫中設置斷點,這個斷點將被應用到每個加載該庫的進程。我能想到的最接近的是你設置一個MessageBox來顯示庫初始化例程(實質上是DllMain)中的進程ID,然後手動將調試器附加到該進程並根據需要設置斷點。

2

您可以:

1)將用DLL與EXE解決方案的項目(這不太你問)。

2)您可以將IDE與DLL項目附加到運行EXE的進程中,方法是從Debug - > Attach to process。但我從來沒有嘗試過將兩個調試器同時連接到同一個進程。

相關問題