Как отладить установку пользовательского сервиса Windows? - PullRequest
2 голосов
/ 29 февраля 2012

Я создал службу Windows в C # (4.0) и пытаюсь установить ее с помощью инструмента installutil в командной строке. Однако я получаю исключение. Мне удалось выяснить, какая часть моего кода вызывает исключение - используя какую-то дерьмовую запись, но неважно - но теперь я хочу понять, почему. Поэтому я хочу отладить установку моей службы Windows.

Я знаю, как отлаживать сам сервис, но здесь я хочу отладить содержимое моего Installer.Install(IDictionary stateSaver) метода в сервисе.

Я пытался подключить отладчик к процессу cmd.exe, но он, очевидно, не работает. Я думал также присоединить отладчик к процессу installutil, но понятия не имею, как это сделать.

Я посмотрел этот пост: Как вы отлаживаете устанавливаемую службу Windows? и несколько других, но в этом случае, по какой-то причине, этот парень, похоже, уже имеет свою службу services.msc, который не является моим случаем.

Как мне этого добиться?

Ответы [ 2 ]

11 голосов
/ 29 февраля 2012

Вы можете поместить оператор Debugger.Break(); в код установщика, и он должен запустить отладчик для вас.

1 голос
/ 24 сентября 2015

Если вышеописанное не работает, я обнаружил, что этот процесс тоже работает. В основном вы компилируете в режиме отладки и устанавливаете службу (я использовал installutil.exe через командную строку). В коде вы всплываете окно сообщения с идентификатором процесса. Запустите второй экземпляр студии, присоедините его к этому процессу и отладьте. Окно сообщения приостанавливает его, чтобы разрешить настройку. Идентификатор процесса не важен, он называется InstallUtil.exe. Я обычно помещаю Debug.Break () после окна сообщения, чтобы гарантировать, что он вводит код.

using System.Windows.Forms;
using System.Diagnostics;

...

#if DEBUG 
int processId = Process.GetCurrentProcess().Id;
string message = string.Format("Please attach the debugger (elevated on Vista or Win 7) to process [{0}].", processId);
MessageBox.Show(message, "Debug");
#endif

....

Как отладить установку пользовательской службы Windows

...