繁体   English   中英

如何在调试模式下在解决方案中启动另一个项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM