2009-12-06 94 views
0

我有一個WCF主機應用程序,它由具有某些動態參數的可執行文件啓動。如何以調試模式在解決方案中啓動另一個項目

現在我想調試這個應用程序,但由於它是由其他工具開始的VS.NET不會加載它在調試模式。

是否可以寫一些DEBUG唯一的代碼來強制它在DEBUG模式下執行這個過程,所以它會觸發斷點。

目前它使用Process.Start()來啓動主機應用程序。

每次將它附加到調試器不是一個選項,我正在尋找一個更實用的解決方案。

+0

請不要使用'vs.net'標記。你一直在這裏已經足夠了解更多。 – 2010-02-14 20:43:12

+0

對不起剛纔注意到visual-studio標籤現在會用到它,不知道它。 – 2010-02-15 15:16:16

回答

1

嘗試在WCF應用程序中添加這一行:

System.Diagnostics.Debugger.Launch(); 

如果應用程序不是在調試器下運行,你會得到一個窗口,詢問您是否要調試應用程序。

+1

儘管它並沒有加載源代碼和相關項目,但它的工作原理就像附加了非常困難的調試器一樣。也不知何故,我不能選擇當前的VS.NET實例來調試哪個可以解決問題。 – 2009-12-06 21:36:09

+0

您是否使用調試符號編譯它們,並且它們是否可用於WCF應用程序的dll? – jvilalta 2009-12-06 21:40:41

+0

是的,我願意。 1234567890 – 2009-12-06 21:48:21

0

VS.NET宏非常強大。我認爲你可以很容易地編寫附件。

1

您可以在不修改源代碼的情況下執行此操作。在Visual Studio中打開自動啓動的項目並設置一個斷點。啓動Regedit.exe並添加一個密鑰到「HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options」,其名稱與您的.exe完全相同。添加一個名爲「Debugger」的新字符串值,將其設置爲「c:\ Windows \ system32 \ vsjitdebugger.exe」。一個示例.reg文件:

REGEDIT4 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ConsoleApplication1.exe] 
"Debugger"="\"c:\\Windows\\system32\\vsjitdebugger.exe\"" 

現在,當您的應用程序啓動進程時,JIT調試器提示將顯示出來。選擇加載了自動啓動項目的Visual Studio實例。執行將停止在斷點處。請注意,您通常必須自己將焦點改回VS。

Mike Stall警告說這個技巧不適用於託管調試。我無法重現,它在VS2008 SP1中正常工作。

+0

+1您也可以使用gflags.exe切換此註冊表設置。請參閱http://stackoverflow.com/questions/2053724/how-to-debug-with-external-program-launched-from-bat-not-an-exe-in-vs2005/2053865#2053865 – 2010-01-13 13:09:38

0
#if debug 

// Do stuff 
if(!System.Diagnostics.Debugger.IsAttached) 
{ 
System.Diagnostics.Debugger.Launch(); 
} 
System.Diagnostics.Debugger.Break(); 

#endif 
相關問題