Visual Studio - отлаживает по сравнению с выпуском

Я создал сервис окон, предназначенный для.NET 2.0 в VS 2008. Я выполняю его как консольное приложение для отладки его.

Консольное приложение работает отлично. Я поместил его на свой локальный компьютер как услуга, скомпилированный в режиме отладки, все еще работая отлично. Я готов выпустить теперь, и внезапно, когда я установил его для выпуска режима, сервисных компиляций и установок, но ничего не происходит. (Никакой код в обслуживании не работает вообще).

Я понимаю, что выпуск по сравнению с режимом отладки является параметрами конфигурации свойства, но кажется, что в режиме выпуска, даже когда я проверяю, определяют постоянную ОТЛАДКУ, снятие флажка Оптимизируют код и устанавливают Информацию об отладке на 'полный', он ничего все еще не делает.

Задержите его для отладки, и это работает как очарование снова.

(Как заметка на полях, я пытался сбросить целевую платформу к 3,5, чтобы удостовериться, что это не было проблемой, также),

Таким образом, мои вопросы (в порядке важности) являются ими:

  1. Будет использование моей версии "отладки", всегда когда-либо вызывают какие-либо проблемы?

  2. Какие настройки отличаются между отладкой и выпуском помимо трех, которые я пытался уже изменить?

  3. Это походит на странную ошибку мне и вызвало мое любопытство. Какая-либо идея, что вызвало бы это?

Править: Должен упомянуть, я уже использую пользовательский установщик. В основном я компилирую программу (или в отладке или в выпуске) и затем устанавливаю его с соответствующим установщиком.

15
задан Brandi 29 June 2010 в 18:03
поделиться

2 ответа

1) Возможно, если не прямо, то косвенно, замедляя работу приложения и заставляя его использовать больше памяти.

2) Когда он работает в режиме отладки, есть определенные вещи, которые работают по-другому, например:

  • Код компилируется с некоторыми дополнительными инструкциями NOP, так что есть по крайней мере одна инструкция в начале каждого кода line, чтобы можно было поставить точку останова на любой строке.

  • Инструкции можно переставлять в режиме выпуска, но не в режиме отладки, так что код может быть одношаговым, а результат будет соответствовать точному порядку исходного кода.

  • Сборщик мусора работает по-другому, позволяя ссылкам существовать во всей их области видимости, а не только на время их использования, так что переменные можно просматривать в режиме отладки, не уходя до окончания области.

  • Исключения содержат больше информации и требуют намного больше времени для обработки при возникновении.

Все эти различия относительно невелики, но это настоящие различия, и в некоторых случаях они могут иметь значение.

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

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

17
ответ дан 1 December 2019 в 04:08
поделиться

Я не уверен, что смогу поговорить с №1 или №2, но когда у меня возникали подобные проблемы, это было из-за неправильной потоковой передачи / параллелизма . Я не уверен, насколько велико ваше приложение, но это может быть хорошим началом.

0
ответ дан 1 December 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: