Что такое лучший способ отладки программы службы Windows в Visual Studio 2008 - PullRequest
5 голосов
/ 14 октября 2009

Я использую Microsoft Log Parser в службе Windows. Программа работает на обычной веб-странице, но когда я помещаю код в службу Windows, она не работает. Я помещаю Breakponts в службу Windows, но когда я запускаю код, программа не останавливается на точке останова. Таким образом, в процессе устранения неполадок я сузил проблему до программного обеспечения Log Parser и Linq. Таким образом, проблема возникает либо в Linq, либо в программе анализа паролей. Ребята, у вас есть идеи?

Ответы [ 4 ]

5 голосов
/ 14 октября 2009

Вам необходимо подключить ваш отладчик напрямую к службам Windows. Это может помочь вам: http://msdn.microsoft.com/en-us/library/7a50syb3%28VS.80%29.aspx.

2 голосов
/ 14 октября 2009

В прошлом я делал это разными способами в зависимости от того, как работает программа. Я думаю, что самый простой способ сделать это с помощью директивы препроцессора #DEBUG, связанной с Debugger.Launch (), поэтому при сборке оптимизированного проекта вызов Debugger.Launch () не будет скомпилирован в сборку.

Один способ, которым мы также выполнили эту задачу, - это System.Windows.Forms.MessageBox.Show («attach»), который позволял нам вручную подключаться к отладчику при каждом отображении диалогового окна «attach».

Последний способ, который я не предпочитаю, - это изменить поведение вашего сервиса на основе переданных параметров командной строки. По сути, выбирая НЕ запускать сервисы с использованием ServiceBase.Run всякий раз, когда конкретный параметр запускается, но вызывая класс, который инкапсулирует поведение / основную функцию сервиса.

2 голосов
/ 14 октября 2009

Я думаю, что предложение толстого кота о подключении вашего отладчика к процессу обслуживания звучит правильно. Если это не помогло, попробуйте использовать Debug.WriteLine и DebugView .

2 голосов
/ 14 октября 2009

Хотите отладить метод OnStart? Если это так, вы можете использовать System.Diagnostics.Debugger.Launch() или System.Diagnostics.Debugger.Break() метод, чтобы получить возможность подключить отладчик во время работы метода при запуске, иначе вы всегда опоздаете с подключением отладчика.

...