Тип работы:
Предмет:
Язык работы:


Поддержка лямбда-выражений в отладчике IDE Rider

Работа №138434

Тип работы

Дипломные работы, ВКР

Предмет

программирование

Объем работы18
Год сдачи2018
Стоимость4315 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
18
Не подходит работа?

Узнай цену на написание


Введение 4
1. Постановка задачи 6
2. Обзор 7
2.1. Существующие механизмы изменения и добавления кода
«на лету»
2.1.1. Edit And Continue
2.1.2. Динамическая загрузка сборок в платформе .Net 7
2.1.3. Динамическая генерация сборок в платформе .Net 7
2.1.4. Загрузка классов в Java
2.2. Существующие реализации поддержки лямбда-выражений
в отладчиках
2.2.1. Отладчик Microsoft Visual Studio для .Net приложений
2.2.2. Отладчик Intellij Idea
3. Архитектура решения 9
4. Реализация решения 11
4.1. Компиляция лямбда-выражения . . . . . . . . . . . . . . 11
4.2. Загрузка скомпилированного лямбда-выражения в отлаживаемый процесс
4.3. Вызов загруженного лямбда-выражения со стороны отладчика
4.4. Захват контекста
5. Апробация 15
Заключение 16
Список литературы

На сегодняшний день существует огромное количество программ,
многие из которых разрабатываются и поддерживаются на протяжении многих лет. К тому же очень часто в разработке участвует не один
человек, а целая команда. Порой даже просто разобраться как работает чужой код бывает непросто, не говоря уже о том, чтобы исправить
ошибки в этом коде. Для облегчения поиска ошибок существуют специальные программы — отладчики. Отладчик позволяет пошагово исполнять программу, устанавливать и убирать точки останова, просматривать и изменять значения переменных прямо в процессе отладки, а также многое другое [11]. Помимо этого большинство отладчиков, позволяют вызывать методы из пользовательского (target) процесса и получать
их результат. Благодаря всему вышеперечисленному на основе данных,
доступных отладчику, можно реализовать вычисление произвольных
выражений, написанных на языке программирования. Большинство интегрированных сред разработки (Integrated Development Environment,
IDE) [12] уже включают в себя отладчик и имеют специальные отладочные окна (Watches), с помощью которых и реализуется эта функциональность. Однако, чаще всего отладчики ничего не знают про языки программирования, поэтому вычисление выражений во время отладки
реализует среда разработки поверх API отладчика.
Во многих современных языках программирования поддерживаются лямбда-выражения. Они бывают очень удобны, так как позволяют
разработчику не тратить время на создание нового метода. А в случаях, когда лямбда-выражение захватывает внешний контекст, и вовсе
избавляет разработчика от сложностей, связанных с передачей этого
контекста в тело метода. За разработчика это делает компилятор. Однако для отладчика при вычислении значения выражения, которое содержит лямбда-выражение возникают проблемы, так как в пользовательском процессе не существует этого лямбда-выражения и, соответственно, отладчику просто нечего вызывать. Кроме того, специального
API, которое по тексту лямбда-выражения создаст в пользовательском
4процессе метод, чаще всего нет, так как отладчики обычно к языкам программирования не привязаны.
Наиболее частые случаи использования лямбда-выражений во время отладки: фильтрация коллекций, преобразование элементов коллекции, комбинирование предыдущих случаев.
JetBrains Rider IDE [3] — это кроссплатформенная интегрированная среда разработки для .Net приложений на базе JetBrains IntelliJ
Platform [1] и JetBrains ReSharper [2].
На данный момент существует несколько платформ для .Net приложений.
• .Net Full Framework [6].
• .Net Core [5].
• Mono [13].
Разные платформы предоставляют разные отладочные интерфейсы.
• ICorDebug [4] — отладочный интерфейс для приложений работающий под .Net Full Framework и .Net Core.
• Soft-Debugger [8] — отладочный интерфейс для приложений работающий под Mono.
Оба этих интерфейса позволяют подписаться на получение событий,
произошедших в отлаживаемом процессе, а также дают возможность повлиять на него.
Так как Rider поддерживает разработку приложений как под .Net/.Net
Core, так и под Mono, он имеет два отладчика CorDebugger и SoftDebugger,
работающих поверх отладочных интерфейсов ICorDebug и Soft-Debugger соответственно.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


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


[1] JetBrains. Idea. –– URL: https://www.jetbrains.com/idea/.
[2] JetBrains. ReSharper. –– URL: https://www.jetbrains.com/
resharper/.
[3] JetBrains. Rider. –– URL: https://www.jetbrains.com/rider/.
[4] Microsoft. ICorDebug. –– URL: https://docs.microsoft.
com/en-us/dotnet/framework/unmanaged-api/debugging/
icordebug-interface/.
[5] Microsoft. .Net Core. –– URL: https://docs.microsoft.com/ru-ru/
dotnet/core/.
[6] Microsoft. .Net Full framework. –– URL: https://en.wikipedia.org/
wiki/.NET_Framework.
[7] Microsoft. Roslyn. –– URL: https://github.com/dotnet/roslyn/.
[8] Mono. SoftDebugger. –– URL: http://www.mono-project.com/docs/
advanced/runtime/docs/soft-debugger/.
[9] Nelson Patrick. Support for debugging lambda expressions with Visual Studio. –– URL: https:
//blogs.msdn.microsoft.com/devops/2014/11/12/
support-for-debugging-lambda-expressions-with-visual-studio-2015
[10] Varty Josh. Edit And Continue. –– URL: https://joshvarty.com/
2016/04/18/edit-and-continue-part-1-introduction/.
[11] Wikipedia. Debugger. –– URL: https://en.wikipedia.org/wiki/
Debugger.
[12] Wikipedia. IDE. –– URL: https://en.wikipedia.org/wiki/
Integrated_development_environment.
17[13] Xamarin. Mono. –– URL: https://https://www.mono-project.
com/.
[14] Алиевский Даниил. ClassLoader. –– URL: http://samag.ru/
archive/article/68

Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ