Насколько сложнее отладить код Release, чем код Debug для развертывания. NET 2.1? - PullRequest
0 голосов
/ 20 февраля 2020

В рамках перехода к другому облачному провайдеру мы обнаружили необходимость отладки нашего приложения. NET 2.1 в модуле Kubernetes (работает на mcr.microsoft.com/dotnet/core/aspnet: 2.1), который мне поручено изучить.

Наш движок CI в настоящее время собирается с "- c Release", но я заметил следующую формулировку https://devblogs.microsoft.com/devops/debugging-net-core-on-unix-over-ssh/ :

Для отладки есть два важных замечания. Во-первых, отладка кода, скомпилированного в розницу, намного сложнее, чем отладки, поэтому настоятельно рекомендуется использовать конфигурацию «Отладка». Если вам нужно использовать конфигурацию «Release», убедитесь, что вы отключили Tool-> Options-> Debugging-> Just My Code.

Я сделал Java дольше, чем хочу подумайте (где большая часть оптимизации происходит внутри JVM во время выполнения), но я незнаком с. NET, поэтому мне было интересно точно почему скомпилированный код выпуска сложнее отлаживать.

Это просто потому, что компилятор выполняет обычные трюки, такие как развертывание циклов, вычисление строковых выражений и т. Д., Или же под обложками происходят более глубокие преобразования? (Такие вещи, как я читал, что компилятор Intel C ++ может обмениваться двумя циклами, если это означает, что обход массива, выполняемый с ними, происходит с большей эффективностью кеша)

...