Введение 4
2. Постановка задачи 6
3. Обзор 7
3.1. Существующие отладчики 7
3.2. Хранение отладочной информации 8
3.3. Debug information entity 9
3.4. Транслятор РуСи 9
4. Метод 11
4.1. Создание файла отладочной информации 11
4.2. Остановка по точке останова и трассировка 12
4.3. Поиск переменных и функций 12
5. Тестирование и апробация 14
6. Заключение 15
Список литературы 16
Язык C — один из самых широко распространенных языков программирования. Он позволяет писать высокопроизводительные программы, он универсален и применяется в совершенно разных областях. Синтаксис языка С и структура программ на нем достаточно просты для
понимания, но, несмотря на это, язык не вполне подходит для начинающих программистов: вероятность ошибки высока, а обнаружить эту
ошибку с помощью стандартных средств разработки бывает очень трудно. Выход за границы массива, обращение к недоступной памяти или
разыменование нулевого указателя - одни из наиболее частых примеров
таких ошибок.
РуСи — язык, берущий за основу язык С и решающий некоторые из
вышеописанных проблем [10]. Первоначально язык создавался как инструмент для обучения программированию, но впоследствии им заинтересовались разработчики высоконадежных систем, например, в области
военной промышленности. Помимо стандартных (английских) ключевых слов языка C, были добавлены аналогичные им ключевые слова
на русском языке, а также возможность использования кириллицы в
именах идентификаторов и русскоязычные сообщения компилятора об
ошибках. Такие изменения помогут в обучении программированию учеников младшей и средней школы, которые еще не знают английский
язык достаточно хорошо.
Помимо этого, были добавлены некоторые ограничения, значительно повышающие безопасность программ и защищающие от типичных
ошибок. Так, в языке РуСи отсутствует арифметика указателей; добавлен новый тип указателя — Never Null Pointer, защищающий пользователя от ошибочного разыменования нулевого указателя; улучшены инструменты работы с массивами и добавлена проверка на выход
за границы массивов. Все эти изменения не только делают язык более
простым для изучения начинающими программистами, но и позволяют
использовать его в системах, где высокая надежность и защищенность
от ошибок является критически важной.
В ходе работы были выполнены следующие задачи:
1. Изучена архитектура транслятора и интерпретатора РуСи.
2. Внесены изменения в генератор кода и интерпретатор РуСи, необходимые для работы с отладочной информацией.
3. Реализована возможность остановки по точке останова и трассировка, а также просмотр значений переменных.
4. Выполнено тестирование отладчика.
5. Результаты работы загружены на GitHub [5] [6].