[英]How to start another project in the solution in Debug mode
我有一个WCF主机应用程序,该应用程序由具有一些动态参数的可执行文件启动。
现在,我想调试该应用程序,但是由于它是由其他工具启动的,因此VS.NET不会以调试模式加载它。
是否可以编写一些仅DEBUG的代码以强制其在DEBUG模式下执行此过程,以使其达到断点。
当前,它正在使用Process.Start()
启动主机应用程序。
每次都无法将其附加到调试器,我正在寻找更实用的解决方案。
尝试在WCF应用程序中添加以下行:
System.Diagnostics.Debugger.Launch();
如果该应用程序未在调试器下运行,则会出现一个窗口,询问您是否要调试该应用程序。
您可以执行此操作而无需修改源代码。 在Visual Studio中打开自动启动的项目并设置一个断点。 启动Regedit.exe,并使用与.exe完全相同的名称向“ HKLM \\ Software \\ Microsoft \\ Windows NT \\ CurrentVersion \\ Image File Execution Options”添加一个密钥。 添加一个名为“ 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中可以正常工作。
VS.NET宏非常强大。 我认为您可以很轻松地编写附件脚本。
#if debug
// Do stuff
if(!System.Diagnostics.Debugger.IsAttached)
{
System.Diagnostics.Debugger.Launch();
}
System.Diagnostics.Debugger.Break();
#endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.