2011年6月14日火曜日

[C#]サービス作成時、デバッグするときにデバッガを立ち上げる。

C#でWindowsサービスを作成するにあたって、ステップ実行でのデバッグがしたかったので、以下のようにちょっと工夫をしてみた。
Debugモードでビルドされているときに限り、デバッガ選択画面を立ち上がり、アタッチできます。

/// <summary>
/// サービス起動
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
    //デバッグ時のみデバッガを起動します。
    DebuggingProcess();

    //以降サービス起動時に行う処理
}

/// <summary>
/// [デバッグ属性メソッド]デバッガ起動
/// </summary>
[Conditional("DEBUG")]
private void DebuggingProcess()
{
    System.Diagnostics.Debugger.Launch();
}

メソッドにデバッグ時のみ実行される属性を付けます。
[Conditional("DEBUG")]

この属性の付いたメソッドは、Relaseモードで実行された場合には実行されません。
処理自体空振りします。

実行すると、デバッガはどれでデバッグしますか?的なウィンドウが現れ、指定したツールでアタッチできます。
ビルドしてインストールしてサービス立ち上げてデバッガ立ち上げてなんて…サービスのデバッグはホント面倒ですね。

0 件のコメント:

コメントを投稿