Разница между Visual Studio, запускающим исполняемый файл и запускающим его самостоятельно? - PullRequest
5 голосов
/ 25 марта 2012

Я работаю над приложением в C # 4.0 (VS2010), и у меня очень странная ситуация. Мне сообщают об ошибке от всей команды, и я всегда не могу воспроизвести ее, пока один из других разработчиков не сказал мне дважды щелкнуть исполняемый файл и следовать сценарию ошибки вместо запуска с VS2010.

После некоторых исследований я обнаружил, что большинство комментариев по этой проблеме касаются неинициализированной кучи памяти и т. П., Но в контексте C ++. Я знаю, что C # выдает ошибку , а не предупреждение, если переменная остается неинициализированной, так что, скорее всего, это не проблема.

Обе сборки одинаковы как на моей машине, так и на пользователях, и теперь я знаю, что нажатие F5 (начать с отладки) не приводит к проблеме, тогда как Ctrl + F5 делает Таким образом, вопрос не в разнице между ними (другие вопросы уже рассмотрели это), а в том, как присоединение отладчика к процессу C # может повлиять на его поведение?!

Код создает соединение по сети.

1 Ответ

7 голосов
/ 25 марта 2012

Итак, вопрос: как присоединение отладчика к процессу C # может повлиять на его поведение?!

Всевозможными способами. Это влияет на оптимизацию JIT, сборку мусора, синхронизацию (например, условия гонки), все, что явно пытается определить, работает ли он в отладчике, и, возможно, порядок и время инициализации типа.

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

...