Visual Basic 5.0 偵錯工具可讓您在設計階段之前編譯成.exe、.dll 或.ocx 偵錯程式碼。如果您正在偵錯的 Visual Basic 建立 COM 元件,您可以偵錯它們程序外執行多個專案的 Visual Basic 5.0 相同的執行個體中,或以在其中一個和執行在其他的 COM 元件中執行用戶端執行的 Visual Basic 5.0 的個別執行個體。
如果要偵錯您的元件,它們編譯之後您無法使用 Visual Basic 5.0 偵錯工具,因為它將只它們在設計階段偵錯。若要偵錯已編譯的 Visual Basic 元件,您必須使用 Visual C++ 5.0 偵錯工具的功能。以下是您可能需要偵錯已編譯的 Visual Basic 元件的情況下:
- 如果您正在建立 ActiveX 控制項使用 Visual Basic 5.0 以外的其他容器中。
- 在這類的 Microsoft 交易的應用程式的執行環境中伺服器位置只允許您執行已編譯的.dll 檔。
- 如果您懷疑您的 Visual Basic 元件以不同方式比設計階段行為,它會編譯。
本文將告訴您如何執行這項操作在 Microsoft 開發 o 人 h 員 ? 工 u 具 ? Studio 環境中。您必須擁有 Visual Basic 5.0 及開發電腦上安裝的 Visual C++ 5.0 遵循本範例。
下列步驟假設您已經有 Visual Basic 5.0 建立標準執行檔 (.exe)、 ActiveX DLL (.dll)、 ActiveX 執行檔 (.exe) 或您想要偵錯的 ActiveX 控制項 (.ocx)。
- 在 Visual Basic 5.0 開啟您要偵錯的 Visual Basic 專案。從檔案] 功能表中,選擇產生 <yourproject>.exe。按一下 [選項] 按鈕,然後選取 [編譯] 標籤,選擇編譯原生程式碼,並建立符號偵錯資訊。然後選取 [確定],並 [確定] 重新編譯您的元件。
- 從 Visual C++ 5.0 檔案] 功能表中,選擇 [開啟舊檔的工作區]。在 [開啟舊檔的工作區] 對話方塊中設定為全部 files(*.*) 的檔案類型,然後選取 [已編譯的元件。
- 再次在 [Visual C++ 5.0 檔案] 功能表選擇 [開啟工作 (不開啟區),然後開啟 Visual Basic 模組 (.bas)、 表單 (.frm) 或類別 (.cls) 您想要偵錯。設定中斷點 (F9)]、 [監看]、 [步驟透過指示]、 [正常的程式中一樣的等等。 您也可能要顯示在偵錯環境中的變數資訊] 移至 Visual C++ 5.0 工具] 功能表,選取 [選項],然後選取 [偵錯] 索引標籤。在 [偵錯] 索引標籤放置一個檢查旁邊顯示 Unicode 字串。
無法保存在個別執行緒上的變數。就會具有一個.ocx 的背景執行緒或隱藏的 vb 背景執行緒。Visual Basic 全域變數都是每個公寓或單一執行緒,因此您將不會看到它們在堆疊上是否位於另一個執行緒上。 - 標準 EXE: 從 Visual C++ 5.0 中的 [建置] 功能表選取開始偵錯,然後移至,或按下 F5 鍵。當 Visual Basic 編譯的元件達到設定中斷點的該行時,它將會在 Visual C++ 5.0 中停止,並可讓您執行一般的偵錯作業。
- ActiveX 執行檔、 的 DLL 或 OCX: 它是稍有不同的 DLL,因為您必須指定一個 exe 與偵錯。若要執行此動作從 [專案] 功能表中選取 [設定],然後按一下 [偵錯] 索引標籤。在偵錯工作階段的可執行檔文字方塊指定.exe 檔案會參考您的.dll。 現在請依照步驟 4a 這會啟動您的可執行檔和您.dll 和 Visual C++ 5.0 偵錯工具會變成您的.dll 中設定中斷點。
- 在 Microsoft 交易伺服器 (MTS) [執行 ActiveX DLL: 若要設定這向上選取的設定從 Visual C++ 5.0 [專案] 功能表,然後按一下 [偵錯] 索引標籤。在 [偵錯工作階段] 文字方塊中的可執行檔,指定 MTX.EXE。然後,在 [程式引數] 文字方塊中放置 /p: {00000000-0000-0000-0000-000000000000} 您會使用實際的 MTS 封裝識別碼。 取代 0您可以藉由檢查您的封裝交易伺服器總管中的屬性取得封裝識別碼。下列步驟 4a 其上方將會啟動 MTX.EXE 和您的.dll。現在執行會呼叫基底的用戶端.exe 到您的 COM MTS 和 Visual C++ 5.0 偵錯工具下執行的元件會變成您的.dll 中設定中斷點。
- 是 dll 呼叫系統路徑上??
- 重新有您不小心註冊 COM 物件的 dll 因而清掃出 MTS 修改登錄??
- 您可能有多份周圍,以 COM 物件的 dll 配置而在不會被載入的圖案中,於設定中斷點嗎?
- 同樣地為 3,可能您有多份您配置周圍的非 com dll ??
- 時發生一個表面上很愚蠢的技巧是您應該將您的 DLL 與符號資訊複製到 [MTS 目錄及從該處新增要在 MTS 封裝成 DLL 檔案總管。如果您執行一項不執行這項操作,[MTS 內的符號偵錯元件無法運作。
此外,請確定開始向上您在偵錯工具中的複本之前,先殺掉所有正在執行 mtx.exe。當您啟動時,它不會執行,或它不會立即關機?請注意由 MTS.記錄任何事件日誌訊息若要從安全的起始點啟動,您可能要完全刪除您的應用程式,然後重新建立它,重新安裝您的元件 dll 等等。
- 在網際網路資訊伺服器 (IIS) [執行 ActiveX DLL: 因為 IIS 會執行當作 NT 服務,您必須給予您自己扮演的操作系統一部分的使用權限。如果要執行此動作前往 [NT 系統管理工具] 和 [選取的使用者管理員 」。如果使用 NT Server 中的網域使用者管理員,確定您已選取的電腦名稱作為網域從 [檔案] 功能表。然後,使用者權限從 [原則] 功能表選擇 []。在 [使用者權限] 對話方塊放置顯示進階使用者權限] 旁邊的核取,然後從下拉式方塊中選取 ["作為作業系統的一部分 」]。按一下 [新增] 按鈕及文字] 區域中的"domainxxx\userxxx 」 中的型別或從清單方塊中選取您的使用者名稱。按一下 [確定],您現在應該有正確的權限。在 Visual C++ 5.0 中啟動偵錯工作階段,請到 [建置] 功能表,選取開始偵錯,然後附加至處理序]。放置一個檢查旁邊顯示系統處理程序然後選取 inetinfo,再按 [確定]。現在載入付到您的 ActiveX 元件呼叫一個用戶端.htm 或.asp 檔案。如果您遵循上述步驟 3 中的指示,您現在應該要能夠逐步解說 Visual Basic 程式碼。
附註 具有下列步驟 4d 本文中方針,叫用中斷點時不被記錄。某些嘗試後您可能發現,要被叫用中斷點,它是載入其他 DLL 專案設定中進行偵錯的 DLL 所需。此外,中斷點不會叫用呼叫 HTML 網頁的第一次,除非您設定中斷點之後將附加至處理序進行。它已在對等的 Web 服務與 Visual Studio SP2 的 Windows NT 4.0 工作站 SP3 下進行測試。
另一個的 Visual C++ 功能是能夠執行跨處理序和跨電腦偵錯。如果您在偵錯工具中執行,並且呼叫已經偵錯資訊的.dll,它會自動啟動偵錯工具和來源的另一個執行個體,使您可以偵錯到該。
請注意是否針對大小或速度最佳化編譯.exe,無作用程式碼行數就會編譯專案中。