2010-06-01 151 views
1

我有一個項目在VC++ 6.0中有一個EXE和一個InProc COM DLL。我希望能夠在InProc COM DLL中的某處放置斷點,但VC++不允許我設置斷點。調試InProc COM DLL

我有這個DLL的源代碼,但我想不出如何在代碼中放置斷點並調試它?

有人可以幫助我。

+0

你有沒有與dll相同的文件夾中的COM DLL的.pdb文件? – sharptooth 2010-06-01 10:45:26

+0

很可能它可能在另一個地方 – 2010-06-01 10:48:37

+1

它應該在同一個文件夾中,它應該來自相同的編譯。 – sharptooth 2010-06-01 10:49:18

回答

0
  1. 連接到進程
  2. 打開項目 - >設置(Alt + F7)
  3. 打開調試選項卡,類別其他DLL
  4. 添加您進程內服務器DLL
  5. 在下次連接到處理或手動打開.opt文件時關閉調試

這樣

  • 保存.opt文件,你的進程內服務器DLL被加載,其PDB被解析,最後的開源文件被加載,斷點被加載。

    此處需要「其他dll」設置的原因是因爲您的進程內服務器只有在其實例CoCreated時纔會加載。因此,調試器不會加載其PDB文件,並且將源文件視爲未知文本文件,因此它們中的斷點處於非活動狀態(白色)。

  • 0

    有兩件事情你可以看看

    1. 取消選中要求源文件在調試選項對話框
    2. 如果失敗了原始版本完全匹配,又(編譯DLL最好禁用/Od優化)並使用新的DLL及其PDB文件。
    0

    不知道這是否會在VC6工作,但你可以嘗試,你想要的代碼打破_asm int 3,這應該引起你的代碼中設置斷點,並允許您調試。

    1

    自從我使用COM但IIRIC之後已經有一段時間了,在您的COM項目中將您的可執行文件配置爲啓動應用程序。它應該工作(對不起,我沒有VC++這裏安裝了6.0 :()。

    如果它不工作,你可以嘗試將調試器附加到正在運行的應用。

    在這兩種情況下,請確保你在你的COM服務器的完全調試信息。

    希望這有助於。