2013-05-07 173 views
9

我們有一個.NET應用程序,它使用很多以VB6編寫的遺留組件。我們能夠使用本地代碼調試器調試VB6代碼,並在Visual Studio 2010中生成pdb文件。升級到VS 2012(包括更新2)後,我們無法做到這一點。從Visual Studio 2012調試VB6代碼

以下消息的模塊窗口顯示:

二進制不與調試信息。

您還可以找到以下在輸出窗口消息:

模塊不帶符號的鋪設。

當我嘗試手動加載符號,我得到以下信息:

的匹配符號文件這個文件夾中沒有被發現。

從VS 2010調試非常相同的DLL或EXE工作正常。

有沒有選擇啓用它?

+0

你使用VC++調試器來完成任務還是什麼? – 2013-05-07 19:46:23

+1

無法回答你的問題,但很想知道更多關於使用VS2010調試VB6的問題!聽起來像是舊式混合語言應用程序的節省時間。 – tcarvin 2013-05-08 13:09:34

+0

在[本文]中查找有關在VS 2010中調試VB6的詳細信息(http://blogs.msdn.com/b/robgruen/archive/2004/11/09/254602.aspx) – Pecan 2013-05-09 10:13:53

回答

7

我終於找到了如何使用Visual Studio 2012調試VB6組件。總之,您必須先啓用舊的pdb格式,方法是設置「選項」|「調試|編輯並繼續|啓用本機編輯並繼續,然後您可以像往常一樣附加到dllhost.exe。

+1

這也適用於舊的VC6 C++項目。謝謝! – 2013-12-23 23:56:19

+0

感謝提及VC++ 6,@EdBayiates。最後得到一個有效的,工作的答案後的頭髮拉動和gnashing在彙編和映射地址! – Hugo 2017-08-11 18:37:52

1

看來VS 2012使用msdia110.dll來解碼符號文件,VS文件夾中有一個DIA SDK示例,您可以測試它是否可以解析這些VB pdb文件。如果它不能,我想新版本DIA不再支持舊版本的pdb。

+0

我已經構建了示例並試圖解析pdb文件,並且所有內容都正常工作。我還檢查了它使用的是C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger \ msdia110.dll。 – Pecan 2013-05-10 08:31:55

+0

好,那麼如果VB仍然支持,我建議你向微軟報告一個bug。 – xwlan 2013-05-10 16:05:43

7

我發現了一個適用於我的機器的解決方案(根據微軟對ScottG的paid support request的評論 - 謝謝Scott)。顯然,2010年以後Visual Studio的默認調試器不處理VB6的DLL,但有一個複選框,使用舊的調試引擎,它的作用:

enter image description here

我並不需要啓用本機編輯並繼續。

+4

也適用於Visual Studio 2015 – 2016-04-18 15:34:03

+0

是的,我可以證實這是我在VS2015和VB6 COM DLL中的解決方案。 – scipilot 2017-02-27 04:50:41

+0

Visual Studio 2015可能是該行的結尾。我還沒有找到使用Visual Studio 2017調試VB6代碼的方法。 – 2017-07-20 13:37:30

0

在VS 2015工具 - >選項 - >調試 - >常規中,選擇'使用本地兼容模式'。它很糟糕,我仍然需要調試VB6,但我很感激,我仍然能夠。

+0

需要注意的是,當我使用「使用本機兼容模式」時,確實遇到了我的斷點問題。取消選中「使用本機兼容模式」更正了這些問題。所以這個設置並非沒有問題。 – 2017-04-26 23:09:15