2009-06-19 47 views
1

使用VB6,我創建了一個Outlook插件,它有一個屬性頁面。屬性頁面是一個OCX控件。如何在Outlook屬性頁OCX上使用VB6調試器?

當我將項目編譯爲OCX文件,然後運行OUTLOOK時,情況正常:我可以在Outlook選項中看到我的OCX作爲選項卡。

但是,當我嘗試通過在VB6中運行OCX進行調試時,出現錯誤。我的調試如下啓動: 1)調試選項設置爲等待組件創建「 2)VB6中的F5-RUN項目 3)啓動Outlook 4)獲取錯誤:」無法顯示「MyOcx」頁。此頁面將保持可見狀態,但不可用。發生OLE註冊錯誤。該程序未正確安裝。爲綱」

再次運行安裝程序我懷疑這是因爲,在調試時,正在創建OCX外的proc和Outlook不會這樣。

是否有使用的好方法在OCX VB6調試器在這種情況下?

回答

2

VB6調試器在調試DLL或OCX時有時會出現碎片。

  • 您可以嘗試Windbg,這是一款來自Microsoft的免費獨立調試器。將您的VB6 OCX編譯爲本機代碼,不進行優化,並「創建符號化調試信息」(即創建PDB文件),並且您將能夠在Outlook中調試您的OCX進程。下面是微軟一位關於在VB6中使用Windbg的2006 blog post,以及另一位微軟傢伙對溫伯格的簡要介紹2004 blog post
  • 您也可以使用帶有VB6和PDB文件的Visual Studio 2008調試程序,例如與Visual C++ Express Edition(這是免費的)。有關更多詳細信息,請參閱Kris's answer
  • 編輯:Windbg和Visual Studio expect源代碼在調試機器上與構建OCX時在構建機器上的路徑完全相同。最簡單的方法是在同一臺機器上構建和調試。否則,您可能需要fiddleSUBST來創建虛擬驅動器 - 或者我被告知認真的方法是使用Symbol Server
  • (Les認真)你可以做到沒有那些新穎的交互式調試器,只需登錄到一個文件或DebugMessage calls from your VB6
+0

請注意,Mike Taulty在WinDbg上發佈的2004博客文章的鏈接已損壞,但該頁面當前仍存在於http://mtaulty.com/2004/08/03/m_4656/。 – Gavin 2016-01-07 06:16:48

0

我沒有太多想法的OCX。

但是,你可以使用一個工具,它是一個名爲類似「ActiveX控件測試工具」 Visual Studio中的一部分。

據我所知(基於m y對文檔的理解),OCX是在進程中創建的。

+0

謝謝。不過,我想在Outlook中進行調試。 – 2009-06-19 17:43:19

2

你真的要能夠調試這個的唯一方法是在過程中,因爲MarkJ說。使用免費的Visual Studio 2008 C++ Express Edition(或者更好,如果您擁有Visual Studio 2008 Professional,並且它可用於90 day trial)和PDB。

要確保你所創建的PDB,進入Visual Basic中,檢查P)roject/P)roperties並點擊編譯標籤。確保選中「創建符號調試信息」。

接着啓動Outlook,並連接到從Visual Studio(T)這一過程ools/附加到進程。確保您的Ocx顯示在模塊窗口中,然後加載PDB(右鍵單擊模塊窗口中的Ocx)。您可能必須在解決方案屬性中添加源代碼(有關如何執行此操作的更多詳細信息,請參見read this post)。

這是第一次碰撞,但一旦你可以做到這一點,它變得非常容易,而且比試圖確定日誌中發生的事情要容易得多。

+0

+1。爲避免在解決方案屬性中添加源代碼,請注意Visual Studio在構建OCX時在調試機器上查找源代碼與構建機器上的源代碼完全相同。最簡單的方法是在同一臺機器上構建和調試。否則,您可能需要擺弄SUBST才能創建虛擬驅動器 - 或者認真使用Symbol Server。我已經在這個問題上添加了一些關於我的答案的鏈接,感謝你提出這個問題。 – MarkJ 2009-06-22 20:52:26