2009-10-13 7 views
5

WindowsサービスでMicrosoft Log Parserを使用しています。プログラムは通常のWebページで動作しますが、コードをWindowsサービスに入れても機能しません。私はBreakpontsをWindowsサービスに入れましたが、コードを実行するとプログラムはブレークポイントで停止しません。だから私のトラブルシューティングを通して、私はLog ParserソフトウェアとLinqに問題を絞り込んだ。したがって、Linqまたはログパーサーソフトウェアが問題を作り出しています。皆さんは何か考えていますか?Visual Studio 2008でWindowsサービスプログラムをデバッグする最も良い方法は何ですか

答えて

2

私はこれまで、プログラムの実行方法に応じてこれまで多くの方法を行ってきました。 Debugger.Launch()呼び出しが最適化されたプロジェクトをビルドしたときに、Debugger.Launch()のif #DEBUGプリプロセッサディレクティブを使って最も簡単な方法を実行すると、アセンブリにコンパイルされません。

このタスクは、System.Windows.Forms.MessageBox.Show( "attach")を使用して行いました。これにより、「attach」ダイアログが表示されたときに手動でデバッガにアタッチすることができました。

私が好まない最後の方法は、渡されたコマンドラインパラメータに基づいてサービスの動作を変更することです。基本的には、特定のパラメータが起動されたときにServiceBase.Runを使用してサービスを開始しないことを選択しますサービスの動作/主機能をカプセル化します。

+1

最後の点 - 私はこのために 'Environment.UserInteractive'もチェックできると思います。 –

2

OnStartメソッドをデバッグしますか?その場合は、System.Diagnostics.Debugger.Launch() またはSystem.Diagnostics.Debugger.Break()メソッドを使用して、起動メソッドが実行されている間にデバッガをアタッチする機会を得ることができます。それ以外の場合は、デバッガをアタッチすることで常に遅れることになります。

2

私は、あなたのデバッガをサービスプロセスにアタッチするというファットキャットの提案が正しいと思います。それでも問題が解決しない場合は、Debug.WriteLineDebugViewをお試しください。

関連する問題