5

両方のインスタンスにアタッチして、実行中の 2 つのインスタンスを持つ Windows サービスをデバッグしています。ブレークポイントにヒットするのは 1 つのインスタンスだけだとわかっているため、これを行っていますが、今後両方にアタッチする必要がないように、それがどのインスタンスかを知りたいのです。

複数のプロセスにアタッチされている場合、どのプロセスがブレークポイントに到達したかを知る方法はありますか? 試行錯誤の解決策は、一度に 1 つアタッチしてブレークポイントに到達するかどうかを確認するか、(services.msc を介して) サービスの 1 つを停止し、どのプロセス ID が消えるかを確認することですが、どちらのソリューションもスケーラブルではないようです。私に。もっとエレガントな方法はありますか?

ありがとう!

4

3 に答える 3

8

次のステートメントにウォッチを追加できます。

System.Diagnostics.Process.GetCurrentProcess().Id

これにより、関連付けられている PID (プロセス ID) が得られます。Windowsタスクマネージャーでpidを探すことができます(メニュービュー->列の選択とPIDのチェック)。

お役に立てれば

于 2013-01-21T16:22:06.917 に答える
5

ブレークポイントで利用可能な "When Hit..." オプションを試すことができます (ブレークポイントを右クリックすると、ポップアップするコンテキスト メニューにあります)。次に、次のような他の多くの情報とともに、変数の値を含むメッセージを出力できます。

$ADDRESS - 現在の命令

$CALLER - 以前の関数名

$CALLSTACK - コール スタック

$FUNCTION - 現在の関数名

$PID - プロセス ID

$PNAME - プロセス名

$TID - スレッド ID

$TNAME - スレッド名

http://msdn.microsoft.com/en-us/library/232dxah7(v=vs.110).aspx

于 2013-01-21T16:22:08.903 に答える
4

これがプロセス ウィンドウの目的です ([デバッグ] -> [ウィンドウ] -> [プロセス]、または Ctrl+Alt+Z)。

于 2013-02-05T12:10:36.483 に答える