C# 调试辅助项目作为进程从VS中的另一个项目运行
我有两个项目。其中之一是一个工作者应用程序,它可以做一些事情。另一个是工人的GUI(GUI运行作为工人实例的异步进程)。因此,worker项目输出是GUI使用的C# 调试辅助项目作为进程从VS中的另一个项目运行,c#,visual-studio-2010,visual-studio,debugging,C#,Visual Studio 2010,Visual Studio,Debugging,我有两个项目。其中之一是一个工作者应用程序,它可以做一些事情。另一个是工人的GUI(GUI运行作为工人实例的异步进程)。因此,worker项目输出是GUI使用的.exe文件 如何调试worker?有可能这样做吗?令人恼火的是,我可以为worker创建一个命令行界面,并为它生成某种引用参数以单独运行它,但问题是当我想对多个实例执行此操作时(我有一个程序生成一些异步数据,因此我必须在代码中找到一个错误,该错误在一个进程中运行良好,但在多个进程中出现错误)。关于gui和辅助进程之间的交互,您没有给出太
.exe
文件
如何调试worker?有可能这样做吗?令人恼火的是,我可以为worker创建一个命令行界面,并为它生成某种引用参数以单独运行它,但问题是当我想对多个实例执行此操作时(我有一个程序生成一些异步数据,因此我必须在代码中找到一个错误,该错误在一个进程中运行良好,但在多个进程中出现错误)。关于gui和辅助进程之间的交互,您没有给出太多信息,但如果附加到进程太难(通常是因为辅助进程只运行很短),一个更有用的场景是向gui添加一个配置选项,以向worker命令行添加一个额外的参数,在该命令行上,worker使用DebugBreak进行响应
var args = ParseArguments(); //check if string 'WaitForDeugger' is on command line
if( args.RequestsDebug )
System.Diagnostics.Debugger.Break();
....
gui调用worker的方式如下:
var args = GetArgumentsForWorker();
if( someSpecialDebugOptionEnabled )
args += " WaitForDeugger";
Process.Start( "worker.exe", args );
你不能直接将调试器附加到工作进程上吗?怎么做?你能告诉我一些方法吗?在VS、Ctrl-Alt-P或Debug->attach to process中我不明白。我应该附加到什么?我的GUI运行exe文件异步几次,当它们启动时,我应该将这些进程附加到我的GUI上吗我的工作人员中的
Thread.Sleep(10000);
?只是为那个案例键入了一个答案。。