簡體   English   中英

如何將調試器附加到除我在Visual Studio 2017中啟動的其他進程之外?

[英]How do I attach a debugger to other process than I start in Visual Studio 2017?

我必須處理的架構非常復雜:本機C ++ Windows服務創建一個進程外COM對象(本機C ++,帶有context = CLSCTX_LOCAL_SERVER的CoCreateInstance),它動態加載(AfxLoadLibrary)我的C#DLL。

當我單擊Debug - > Start Debugging時,我想調試我的DLL。

我知道當我使用Debug - > Attach to process附加到COM對象進程時我可以調試它我可以在我的DLL代碼中使用System.Diagnostics.Debugger.Launch()如果我需要調試啟動但這些選項都不起作用自動。

我也試過這個技術: https//docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/a329t4ed(v=vs.100)但是COM進程作為SYSTEM用戶運行所以我無法選擇我的現有Visual Studio解決方案與我的C#項目用作調試器,我只能啟動一個只加載EXE的新實例。

我也嘗試了“啟動外部程序”,但我需要啟動的是一個不是我想要調試的進程的服務,因為我的DLL在另一個進程(COM-one)中運行。 因此,一旦服務啟動,調試就會停止(因為我使用腳本運行它,這可能是一個問題)。

我沒有看到完全使用標准Visual Studio功能自動完成它的選項。 所以我建議你寫一個簡單的Visual Studio擴展 只需使用模板並在菜單或某個自定義窗口中添加一個按鈕,點擊該按鈕即可:

  • 遍歷正在運行的進程並等待,直到命令行上帶有COM類guid的dllhost.exe實例出現
  • 當您找到該進程時,使用Process2接口連接到它(VB中的代碼可用)

我不確定它是否會有所幫助,但你可以查看我的簡單VS擴展 我前段時間寫過它來配置調試器中的符號

暫無
暫無

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

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