簡體   English   中英

如何在 Delphi 中調試通常從 MSC 應用程序運行的 Com+ DLL

[英]How to debug Com+ DLL in Delphi that normally gets run from MSC application

雖然我有多年的 Delphi 經驗,但這是我第一次接觸 Com+。 我的客戶有一個我必須維護的 Com+ 應用程序。 在最終用戶世界中,DLL 由 MSC(Microsoft 公共控制台文檔)應用程序運行。 我該如何調試這個 DLL? 我已將調試器選項下的主機應用程序設置為 C:\\WINDOWS\\SYSTEM32\\DLLHOST.EXE,並將參數設置為 /ProcessID:{Application ID from Component Services}。 DLL 運行,但它沒有給我任何暴露/訪問 DLL 的 GUI 方面的機會。 我所有的斷點也設置為綠色(無法訪問)。

您是否在組件服務的本地配置中找到了“來自組件服務的應用程序 ID”? 如果這樣做,請保持組件服務視圖打開,並切換到顯示當前進程的備用報告視圖。 在您啟動調試器(以及將連接到 COM+ 管理的DLLHOST.EXE之前,您的組件應該沒有正在運行的進程。 只有這樣,當對組件的對象發出第一個 COM+ 請求時,調試器才會看到 DLL 被加載並能夠捕獲異常和斷點。

最后,這解決了我的問題:在 Project -> Options -> Delphi Compiler -> Compiling: Change the Optimization to FALSE and the Stack frames to TRUE

在項目 -> 選項 -> Delphi 編譯器 -> 鏈接下:將包含遠程調試符號設置為 TRUE。

運行 -> 參數必須如下所示: 在此處輸入圖片說明

ProcessID 是組件服務中 COM+ 應用程序的應用程序 ID(右鍵單擊您的 COM+ 應用程序並選擇屬性): 在此處輸入圖片說明

請記住在完成所有更改后重建和注冊您的 DLL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM