Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

3 года назад
Открыть в
День 1644. #ЧтоНовенького JetBrains Представили Предиктивную Отладку Меня иногда спрашивают, почему я рассказываю о новинках или инструментах Visual Studio, но редко пишу про Rider или ReSharper. Ответ прост: «Я пользуюсь Visual Studio и не могу достоверно оценить инструменты от JetBrains, поэтому не хочу писать о том, чего сам не пробовал». Однако об этой новинке очень захотелось рассказать, потому что, на мой взгляд, это очень круто. С введением инструментов отладки разработчики ПО получили возможность интерактивно исследовать поток исполнения программ для поиска ошибок в реальных средах. Эти инструменты постоянно совершенствовались по мере того, как росла сложность создаваемого ПО. Тем не менее, разработчики часто оказываются в ситуации пошаговой отладки с множеством перезапусков и разбросанными по коду точками останова. Теперь в ReSharper 2023.2 появился предиктивный отладчик (в Rider появится позднее). Его можно включить в меню Tools > Debugger > Editor Integration > Predictive Debugger (Инструменты > Отладчик > Интеграция с Редактором > Предиктивный Отладчик), отметив флажок Show predicted values (beta) (Показывать прогнозируемые значения (бета)). Простой пример предиктивной отладки (см. анимацию ниже) Цвета дают представление о том, что происходит: - Выражения, выделенные зелёным или красным цветом, означают, что выражение было оценено как истинное или ложное соответственно. - Операторы, выделенные серым цветом, указывают на то, что этот путь кода не будет выполняться (подобно мертвому коду). - Значения в конце строк, выделенные синим цветом, показывают прогнозируемые значения после выполнения соответствующего оператора. - Жёлтые или красные подсказки показывают, где заканчивается предсказание; например, когда метод возвращает значение, выдаётся исключение (перехваченное или не перехваченное) или программа останавливается (Environment.Exit). Прогноз также может заканчиваться вызовом функции, которую отладчик не решается оценить. Поскольку во время предиктивной отладки код исполняется, отладчик должен быть уверен, что он вызывает только чистые функции и не приводит к изменению состояния приложения. В анимации ниже такая функция int.TryParse (изменяет состояние локальной переменной), поэтому при отладке вам будет предложено явно разрешить выполнение оценки таких функций. Также предполагается использование аннотаций (например, из JetBrains.Annotations) для тонкой настройки. Будущие улучшения и ограничения Планируется использовать внешние аннотации, чтобы пометить код, который будет разрешено оценивать, чтобы уменьшить количество возможных прерываний из-за нечистых вычислений. Например, объявить File.Exists или int.TryParse «чистыми» функциями. К сожалению, код async/await не поддерживается, поскольку отладчик не допускает многопоточных вычислений. Источник: https://blog.jetbrains.com/dotnet/2023/07/27/introducing-predictive-debugging-a-game-changing-look-into-the-future/