我不知道如何調試COM ATL C++進程外的exe服務器與Visual Studio 2015年如何調試COM C++ Out of Process Server? (客戶端:Excel中VBA)
對於COM ATL DLL是沒有問題的,斷點會自動觸發時我打電話給COM DLL。但是,當我嘗試調試EXE服務器時,調試器沒有中斷。事實上,exe服務器僅在需求時加載,並且客戶端啓動時不加載exe服務器的調試符號。
我的調用COM服務器的客戶端是Excel VBA(我已經通過Tools/References在VBA編輯器中添加了對com的引用)。爲了調試它,我將路徑設置爲Visual Studio Debug命令中的Excel.exe,並將參數設置爲我的xlsm文件的路徑。然後,我只是在Excel中調用VBA代碼。它適用於com DLL,但不適用於COM Exe。我也試着把VS附加到Excel中,但它不起作用。
我找到了這篇文章(Windows COM - how to debug a COM server),看起來這是由高程/權限問題引起的,但我嘗試了建議的答案,但它沒有奏效。
有沒有人可以幫助我呢?
如何調試進程外com服務器?
是否有必要將調試器附加到使用EXE服務器的客戶端(所以在我的情況下爲Excel)?
我這樣做完成調試時的一個訣竅就是進入註冊表並在註冊表項前加下劃線,如下所示:_YourExeName.exe。 它做兩件事... 1)停止提示調試器,2)如果我想再次調試EXE,它更容易找到,因爲它是第一個列在圖像文件執行選項鍵,我可以刪除下劃線以這種方式返回調試。 –
它的工作非常感謝喬,問題解決了!你剛剛救了我的一天:)網上幾乎沒有關於它的信息,你的回答是,迄今爲止,我讀過的最好的信息:)也謝謝你的訣竅。對於其他人:按照這個答案,只需要跳過對'/ RegServer'調用對應的調試器的第一個調用。只需構建COM服務器,跳過對JIT調試器的第一次調用,運行客戶端,調用服務器時就會彈出調試器。太好了,請注意超時問題 – Malick