我寫了一個小的VSIX插件,它可以將調試器附加到特定的進程。這個過程是用c#和C++代碼編寫的,所以我需要使用託管引擎和本地引擎來連接它。從Visual Studio可以通過選擇由DEBUG打開的窗口中這些發動機簡單地實現 - >附加到進程 - >選擇...:鍵盤快捷鍵不工作後進程附加(調試過程中的Visual Studio 2013錯誤)
下面,我已經證明了這基本上做同樣的事情,用Process2.Attach2
(MSDN)代碼示例:
EnvDTE80.DTE2 dte = GetService(typeof(SDTE)) as EnvDTE80.DTE2;
EnvDTE80.Debugger2 dteDebugger = dte.Debugger as EnvDTE80.Debugger2;
EnvDTE80.Transport transport = dteDebugger.Transports.Item("default");
EnvDTE80.Engine[] engines = new[] { transport.Engines.Item("managed/native") };
process.Attach2(engines);
不幸的是,同樣的代碼作品VS2012,不會爲VS2013工作(更新一)。
我注意到的是鍵盤問題。 Visual Studio不對按鍵快捷鍵作出反應。例如,如果我按F10,則調試器不執行任何操作。如果我想跨越任何斷點,我需要用鼠標代替並訪問上下文菜單:調試 - >跳過等
這很煩人,我需要鍵盤來控制調試器。有沒有人注意到這個問題並已經解決了?
BTW:如果我使用管理僅發動機(transport.Engines.Item("managed")
),鍵盤開始正常工作。但因爲我需要通過非託管代碼進行調試,所以我需要額外的引擎 - 本機之一。
編輯:我也有reported it微軟連接網絡。