2009-09-09 2 views
3

Я пытаюсь отладить службу Windows с помощью VS2008 на 64-разрядном Win7. Проблема, с которой я сталкиваюсь, заключается в том, что ни одна из моих точек останова не попадает, независимо от того, какую конфигурацию сборки я выбираю: x86, x64 или AnyCPU.VS2008 на Win7 64-разрядный: отладка службы Windows

Использование «Присоединение к процессу» после запуска службы ни одна из точек останова не попала - однако среда IDE не сообщает мне, что они не будут удалены (например, сделав сплошной красный круг и контур) - это просто кажется, что точки останова даже не существуют.

Может ли кто-нибудь указать мне правильное направление здесь?

Thanks

/Richard.

ответ

2

Очевидные вопросы первым ...

  • Вы компиляции в режиме отладки или режиме выпуска?
  • Являются ли файлы .pdb, на которых установлена ​​ваша служба?
  • Вы уверены, что код, на котором установлены ваши контрольные точки, фактически выполняется?

Если ни одна из этих проблем не возникает, попробуйте вставить следующую строку в конструктор для вашей службы.

System.Diagnostics.Debugger.Break(); 

При запуске службы вам должно быть предложено выбрать отладчик. Когда отладчик откроется, он остановится на программной точке останова, и вы сможете продолжить оттуда. Я не работаю с Windows 7, но я не ожидаю, что этот аспект Visual Studio 2008 сильно изменился с Windows XP. Я все время использую этот программный метод для ввода сеанса отладки для моей службы Windows.

+0

Скомпилированный в режиме отладки файлы PDB расположены там, где это ожидалось, на 100% уверены, что код, в котором установлены точки останова, выполняется. Я использовал метод Debugger.Break(), и это не сработало. Все равно не сломается! – Richard

+2

Я поставил этот вопрос в качестве ответа, потому что, хотя это не прямо действие, которое привело к разрешению, вы начали меня на правильном пути с вашего комментария о режимах компиляции. В конечном итоге проблема заключалась в попытке отладки приложения в смешанном решении x86/x64, которое, по-видимому, IDE не нравится на Win7 x64. Перекомпилировать все, как x86 сделал трюк. Благодарю. – Richard

+0

Спасибо, что голосовали. Просто примечание ... Я думаю, вы все еще можете ответить на свой вопрос, а затем принять этот ответ. –

-1

Вы работаете в Visual Studio в качестве администратора (включая запуск под UAC)?

+0

Да, с использованием и без. – Richard

0

Я знаю, что это не отвечает на ваш прямой вопрос, но мы, found this approach от Eric De Carufel, будем очень полезны при разработке и тестировании Window Services.

Это неинтрузивный и избавиться от утомительного шага «приложить к процессу».

Способность откладывать его при отладке при развертывании в качестве службы Windows также ценна. Например, чтобы увидеть трассировку стека вместо службы, просто умирающей на вас.