一旦產生它,我想要附加到進程(a.exe),是否可以使用VS?我只知道過程的名稱。其實我想完成的是在c#代碼中設置一個斷點,但代碼屬於另一個可執行文件,它將由當前正在運行的應用程序(c.exe)啓動。代碼在初始化期間內,因此我無法手動執行附加操作。Visual Studio:產生進程時自動附加到進程
回答
當我以前遇到過這種情況(並且我控制了兩個進程)時,我發現一個體面的解決方法是在產卵過程的入口點調用Debugger.Launch()。然後VS會彈出一個對話框,讓你重視這個過程。
只適用於.NET語言。不適用於C++,例如 – guilhermecgs 2015-04-16 20:52:53
如何:在VS開放項目a.exe
,設置斷點等,然後打開項目屬性爲A.EXE,調試選項卡,並設置命令到c.exe
。然後打到調試。
不幸的是,我從來沒有這樣做託管項目,所以我可以在這裏的標記。然而,這就是我如何處理非託管(C++)項目。我認爲託管調試器也應該支持它。
在我的情況下,我想調試的可執行文件作爲另一個可執行文件啓動的一部分啓動。我想這是問題背後的推動力。 – 2013-12-12 23:41:55
爲我工作。對於直接案例來說,快速且容易,但對於更復雜的案例可能不太好。 – AbstractDissonance 2016-01-10 08:43:26
如果C#代碼是由非託管代碼推出接着請務必檢查「非託管代碼調試」 @project屬性 - >調試選項..
MSDN有【如何:啓動調試器自動] [1] - 這將允許跳過繁忙的工作,點擊確認對話框[不關閉UAC或其他消息]。文章列出了以下步驟:
- 啓動註冊表編輯器(regedit)。
- 在註冊表編輯器中,打開HKEY_LOCAL_MACHINE文件夾。
- 導航到HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ currentversion \ image文件執行選項。
- 在圖像文件執行選項文件夾中,找到要調試的應用程序的名稱,如myapp.exe。如果您不能 找到您要調試的應用程序:
a。用鼠標右鍵單擊圖像文件執行選項文件夾,然後在快捷菜單上單擊新密鑰。 b。用鼠標右鍵單擊新的密鑰,然後在快捷菜單上,單擊重命名。 c。將密鑰名稱編輯爲應用程序的名稱; myapp.exe,在這個例子中。- 右鍵單擊MyApp.exe的文件夾,在彈出的快捷菜單上,單擊新的字符串值。
- 用鼠標右鍵單擊新的字符串值,然後在快捷菜單上單擊重命名。
- 將名稱更改爲調試器。
- 用鼠標右鍵單擊新的字符串值,然後在快捷菜單上單擊修改。出現編輯字符串對話框。
- 在數值數據框中,輸入vsjitdebugger.exe。
- Click OK。
- 從註冊表菜單中,單擊退出。
- 包含vsjitdebugger.exe的目錄必須位於系統路徑中。要將其添加到系統路徑,請按照下列步驟操作:
a。在經典視圖中打開控制面板,然後雙擊系統。 b。點擊高級系統設置。
c。在系統屬性中,單擊高級選項卡。 d。在高級選項卡上,單擊環境變量。 e。在環境變量對話框,在系統變量,選擇路徑,然後單擊編輯按鈕。 f。在編輯系統變量對話框中,將目錄添加到變量值框中。使用分號將其與 列表中的其他條目分開。 g。點擊確定關閉編輯系統變量對話框。 h。
h。點擊確定關閉環境變量對話框。 i。點擊確定關閉系統屬性對話框。現在,使用任何方法來啓動您的應用程序。 Visual Studio將啓動和加載應用程序
[1]:UTIL Windows自帶的調試工具http://msdn.microsoft.com/en-us/library/a329t4ed(v=vs.100).aspx
我喜歡這個答案,因爲如果你的代碼是建立在發佈模式下,PDB就可以工作。如果內置發佈模式,上述Debugger.Launch()方法不起作用。 – Pretzel 2013-04-04 17:14:54
您還可以使用gflags.exe,所有你需要做的就是打開GFLAGS。 exe然後去圖像文件輸入進程名稱(a.exe)按Tab鍵並檢查調試器複選框,在文本框中輸入帶有/ debugexe選項的vs路徑(即「C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe「/ debugexe)
自動visual studio會打開onc e進程正在運行,您可以添加斷點並按運行。
"Entrian Attach"是一個Visual Studio插件,它完全實現了這一點 - 您可以告訴它可執行文件的名稱,並且在進程啓動時將它附加到調試器上,不管它是如何在任何代碼運行之前啓動的。
(披露:我是作者,我建立了Attach,因爲我一直有這個問題!)
沒有爲我工作...我可以看到符號加載,但然後該過程將繼續運行並退出。也許是因爲我試圖附加一個我沒有的解決方案,因此沒有任何斷點。 – 2014-07-10 18:17:51
@NelsonRothermel:我想幫忙,但Stack Overflow不是Entrian Solutions技術支持的地方。 :-)如果你想讓我幫你解決問題,請給我發電子郵件([email protected]) - 有一些簡單的事情可以嘗試。 – RichieHindle 2014-07-10 20:29:53
我最終得到了它與gflags.exe一起工作,而我的關鍵是打破了某種異常類型,所以我認爲如果我將它正確設置,您的解決方案實際上會工作。我現在不需要它,但它是一個有趣的插件,我可能將來會使用它。 – 2014-07-11 21:59:10
我一直在尋找一些方法來做到這一點,當我在驗收測試中啓動控制檯應用程序。 https://blogs.msdn.microsoft.com/visualstudioalm/2014/11/24/introducing-the-child-process-debugging-power-tool/
這是一個附加到Visual Studio,以及它的工作原理治療 -
我今天這個發現。當我調試驗收測試(我使用resharper測試運行器)並在啓動的應用程序中放置一個斷點時,我現在可以在同一個Visual Studio實例中調試該應用程序。
這是我在這裏試過的所有解決方案中最簡單的。輕鬆安裝,即可使用。無需更改代碼。 – 2017-10-24 20:09:50
另一個不錯的解決方案是使用Visual Studio擴展「ReAttach」。可以發現here。
如果您的進程當前沒有運行,則ReAttach會要求您啓動它並在其可用時立即附加。
我真的很喜歡@RichieHindle建議的Entrian Attach,但我也發現這個免費的工具可以做類似的事情。它捕獲調試過程啓動的所有進程。
衍生進程的守望者: https://marketplace.visualstudio.com/items?itemName=Brubtsov.SpawnedProcessCatcher
該模塊不會安裝在VS 2013,2015或2017上。自2013年底以來尚未更新。 – 2017-10-24 19:20:20
由於VS 2013 SP2的,有來自微軟的免費工具,它做同樣如前面提到的「衍生進程的守望者」 - 將所有的進程,這是由一個進程啓動已經在調試。注意:我只用非託管C++測試了這個(這個工作完美無缺)。
- 1. Visual Studio - 附加到進程
- 2. Visual Studio 2010附加到進程失敗
- 3. Visual Studio 2010中自動附加到進程
- 4. 自動附加到在Visual Studio中的進程
- 5. 在Visual Studio 2012中自動執行「附加到進程」
- 6. Visual Studio:一旦進程啓動就自動附加調試器進程
- 7. 在Visual Studio中附加調試進程
- 8. 如何將Visual Studio附加到尚未啓動的進程?
- 9. 單擊「附加到進程」時,Visual Studio 2013崩潰
- 10. JNI - 自動將所有新產生的線程從進程附加到JVM?
- 11. 如何將visual studio附加到遠程機器上的進程的子進程?
- 12. Visual Studio 2012性能分析器附加到遠程進程
- 13. Visual Studio以編程方式附加到託管進程
- 14. Visual Studio附加到流程
- 15. Visual Studio WCF應用程序現在要求手動附加到進程
- 16. 將子進程自動附加到調試程序
- 17. 通過在Visual Studio中附加進程超時
- 18. 如何在Visual Studio中將進程附加到調試器?
- 19. Visual Studio的附加到進程IE插件COM
- 20. DLL版本和Visual Studio附加到進程
- 21. 在Visual Studio 2008中調試模式和附加到進程...
- 22. Visual Studio 2013不附加到JavaScript調試的瀏覽器進程
- 23. Visual Studio附加到進程並查看break上的代碼?
- 24. Visual Studio:配置調試以附加到進程
- 25. 爲什麼Visual Studio 2012中'附加到進程'對w3wp.exe太慢?
- 26. Visual Studio - 附加到進程快捷方式
- 27. Visual Studio F5調試比附加到進程慢
- 28. 無法附加到使用Visual Studio 2005創建的進程
- 29. 將w3wp進程附加到Visual Studio 2010調試器for IETester
- 30. Visual Studio - 「附加到進程的特定實例」宏
你能給我們更多的環境?你擁有這個過程 - 是你的代碼嗎?這個過程是否會調用您的代碼? – 2009-12-23 07:17:41
是的,我擁有所有的過程。 – 2009-12-23 07:39:03