Metadata-Version: 2.4
Name: mse-task-generators
Version: 0.2
Summary: Набор генераторов программ для работы с отладчиками языка С
Description-Content-Type: text/markdown
Requires-Dist: cfile>=0.4.0
Requires-Dist: wonderwords>=2.2.0
Requires-Dist: yadisk>=3.2.0
Requires-Dist: requests>=2.32.3
Requires-Dist: python-dotenv>=1.1.0
Dynamic: description
Dynamic: description-content-type
Dynamic: requires-dist
Dynamic: summary

## Оглавление  
- [Инструкция по развертыванию проекта](#Инструкция-по-развертыванию-проекта)  
- [Функционал проекта](#Функционал-проекта)  
- [CodeRunner Moodle](#coderunner-moodle)  

## Инструкция по развертыванию проекта

### Требования к системе
- **ОС**: Linux (рекомендуется Ubuntu 20.04 LTS или выше)
- **Python**: версия 3.8 или выше
- **Компилятор**: GCC (GNU Compiler Collection)
- **Инструменты отладки и профилирования**:
  - Valgrind
  - GDB (GNU Debugger)
  - Gprof (GNU Profiler)

---

### 1. Установка зависимостей
#### Установка Python, PIP и venv
```bash
sudo apt update
sudo apt install python3 python3-pip python3-venv
```

#### Установка GCC, Valgrind, GDB, Gprof
```bash
sudo apt install gcc valgrind gdb binutils
```

#### Проверка версий
```bash
python3 --version
pip3 --version     
python3 -m venv --help 
gcc --version
valgrind --version
gdb --version
gprof --version
```

---

### 2. Клонирование репозитория
```bash
git clone https://github.com/moevm/mse1h2025-perf.git
cd mse1h2025-perf
```

---

### 3. Установка Python-зависимостей
```bash
python3 -m venv venv  
source venv/bin/activate  
(venv) pip install -r requirements.txt
```

---

## Функционал проекта
### Примеры использования генераторов задач
Проект поддерживает 3 генератора задач. Ниже приведены примеры их запуска.

#### Генератор 1:
#### Создание задач на профилирование
```bash
python3 -m generators.profiling1 1 init -o test.out
```
#### Проверка задач на профилирование
```bash
python3 -m generators.profiling1 1 check -b test.out -a f1
```
#### Параметры:
- `Первый параметр`: тип задачи (1, 2)
- `Второй параметр`: создание задачи или проверка ответа (init, check)
- С полным списком параметров можно ознакомиться в документации к генератору - [Документация](https://github.com/moevm/mse1h2025-perf/blob/main/generators/profiling1/README.md)

#### Генератор 2:
#### Создание задач на утечку памяти
```bash
python3 -m generators.leak_generator -m 1
```
#### Проверка задач на утечку памяти
```bash
python3 -m generators.leak_generator -m 2
```
#### Параметры:
- `--mode, -m`: создание задачи иили проверка ответа (1, 2)
- С полным списком параметров можно ознакомиться в документации к генератору - [Документация](https://github.com/moevm/mse1h2025-perf/blob/main/generators/leak_generator/README.md)

#### Генератор 3:
#### Создание задач на отладку
```bash
python3 -m generators.cycle_generator -m 1
```
#### Проверка задач на отладку
```bash
python3 -m generators.cycle_generator -m 2
```
#### Параметры:
- `--mode, -m`: создание задачи или проверка ответа (1, 2)
- С полным списком параметров можно ознакомиться в документации к генератору - [Документация](https://github.com/moevm/mse1h2025-perf/blob/main/generators/cycle_generator/README.md)
---


## CodeRunner Moodle
Для демонстрации функционала генераторов были созданы тестовые задачи на [Moodle](https://e.moevm.info/mod/quiz/view.php?id=3120).

### Задача на профилирование:
Условие задания предоставляет информацию о решении задачи, а также ссылку на исполняемый файл:

![1.1](images/1.1.png)

Скачав файл, можно провести над ним необходимые манипуляции:

![1.2](images/1.2.png)

Демонстрация неверного ответа:

![1.3](images/1.3.png)

Демонстрация верного ответа:

![1.4](images/1.4.png)

### Задача на утечку памяти:
Условие задания предоставляет информацию о решении задачи, а также ссылку на необходимые файлы:

![1.1](images/2.1.png)

Скачав файлы, можно провести над ними необходимые манипуляции:

![1.2](images/2.2.png)

Демонстрация неверного ответа:

![1.3](images/2.3.png)

Демонстрация верного ответа:

![1.4](images/2.4.png)

### Задача на выход за границы массива:
Условие задания предоставляет информацию о решении задачи, а также ссылку на исполняемый файл:

![1.1](images/3.1.png)

Скачав файл, можно провести над ним необходимые манипуляции:

![1.2](images/3.2.png)

Демонстрация неверного ответа:

![1.3](images/3.3.png)

Демонстрация верного ответа:

![1.4](images/3.4.png)
