13

同じソリューションに 2 つの C# WinForm プロジェクトがあり、それらを A と B と呼びます。プロジェクト A は、以下のような呼び出しでプロセス B を開始します。

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Task.EXEFilename;
psi.WorkingDirectory = Path.GetDirectoryName(Data.EXEFilename);
Process.Start(psi);

プロセス B は正しく開始されます。A のデバッグ中にプロセス B をデバッグしたかったのですが、B にブレークポイントを置けば十分だと思いましたが、ヒットすることはありません。開始されたプロセスが B の bin/debug フォルダーにあることを確認しました。この場合、デバッグを A から B に切り替えるために、プロセスに接続するべきではありませんか?

4

5 に答える 5

7

デバッグ中に作成されたすべての子プロセスに Visual Studio を自動的にアタッチしたいようです。windbg などの他のデバッガーにはこの動作がありますが、残念ながら Visual Studio にはありません。ただし、このリクエストを追跡しているユーザーの声の項目があります

短期的には、最良のオプションは、子プロセスが生成された時点で単純に中断し、デバッガーを手動でアタッチすることです。

var proc = Process.Start(psi);
Debugger.Break();  
于 2013-08-29T20:07:37.720 に答える
1

次のように、プログラム B からプロセス ID を取得してみてください。

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Task.EXEFilename;
psi.WorkingDirectory = Path.GetDirectoryName(Data.EXEFilename);
var proc = Process.Start(psi);

Debug.WriteLine(proc.Id);

次に、プロジェクトを Visual Studio の別のインスタンスにロードし、[デバッグ] > [アタッチして処理] を使用して、プログラム B にアタッチします。

于 2013-08-29T09:24:24.990 に答える