bai*_*rog 3 c# debugging external-process process.start
假设我有一个C#WinForms应用程序,它只是通过使用外部程序启动Process.Start(MyModule.exe).
我试图通过使用我的项目属性调试我的代码- > 调试 - > 启动操作 - > 启动外部程序(当然设置正确的工作目录).
我的另一个尝试是Debug - > Attach to process
更新:我的模块和外部程序都使用一个资源.所以外部程序释放它,然后调用Process.Start(),等待我的进程退出ans然后再次捕获资源.所以当你的程序已经运行时我无法附加.
它们都失败了 - Program.cs中的断点从未被击中.
那么,在这种情况下如何调试我的代码呢?
我知道有两种方法可以轻松解决这个问题.第一种方法是让你的程序请求一个调试器附加到它作为它在Main via中做的第一件事Debugger.Launch()
public static void Main(string[] args)
{
Debugger.Launch();
//Rest of your code here
}
Run Code Online (Sandbox Code Playgroud)
这将显示如下所示的对话框

这将允许您附加到正在运行的Visual Studio或启动新实例.
当你不能使用前面的方法时解决这个问题的另一种方法(例如我认为它在服务中不起作用)是在代码的开头放置一个循环,它将永远循环直到连接调试器,这给出了你有足够的时间来做你之前尝试过的"附加到进程"方法而不让程序进展.
public static void Main(string[] args)
{
while(!Debugger.IsAttached)
{
Thread.Sleep(1000); //Sleep 1 second and then check again.
}
//Rest of your code here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2660 次 |
| 最近记录: |