Skip to content

Files

Latest commit

83e31b5 · Sep 22, 2022

History

History
130 lines (105 loc) · 10.4 KB

debug.md

File metadata and controls

130 lines (105 loc) · 10.4 KB

Основи debug процессу

Хід роботи.

Дана лабораторна спрямована на установку середовища для подальшої роботі з предмету "Програмування". Тому, ніякий код писати не треба та завдання одне на всіх.

Дії, що необхідно виконати:

  1. Зареєструватися (якщо треба) на однієї з загально-доступних систем (рекомендовано), таких як gitlab, github та створити там приватний репозиторій за допомогою веб інтерфейсу проекту. Репозиторій повинен мати наступну назву: programing-FNAME, де:
  • programing – Назва курсу (програмування);
  • FNAME – транслітероване прізвище студента, відповідно до правил згідно з постановою КМУ 2010р. Наприклад, Прізвище Давидов трансформується до Davydov. Таким чином, назва репозиторію буде "programing-davydov". Дії при наявності двох студентів з однаковим прізвищем оговорюються з викладачем окремо.

За умовчуванням, репозиторій публічний, тобто всі мають доступ до нього. Для того, щоб уникнути умисного витоку вашої інтелектуальної власності (коду, звіту, тощо), необхідно:

  • зробити ваш репозиторій приватним;
  • додати вашого викладача у співавтори, щоб він мав змогу перевіряти ваш репозиторій.
  1. Склонуватися з створеного репозиторія

  2. Створити наступні каталоги в своєму репозиторію: lab02, lab02/src. Таким чином, у вашому проекті повинні бути наступні елементи:

└── lab02
    └── src

Скопіювати наступні елементи:

  • файл .clang-format з проекта sample_project до кореня вашого репозиторія
  • файл .clang-tidy з проекта sample_project до кореня вашого репозиторія
  • файл .gitlab-ci.yml з проекта sample_project до кореня вашого репозиторія
  • файл Doxyfile з каталогу lab00 проекта sample_project до каталогу lab02 вашого репозиторія
  • файл Makefile з каталогу lab00 проекта sample_project до каталогу lab02 вашого репозиторія
  • файл README.md з каталогу lab00 проекта sample_project до каталогу lab02 вашого репозиторія
  • каталог src з каталогу lab00 проекта sample_project до каталогу lab02 вашого репозиторія

Таким чином, у вашому проекті повинні бути наступні елементи:

├── .clang-format
├── .clang-tidy
├── .gitlab-ci.yml
├── README.md
└── lab02
    ├── Doxyfile
    ├── Makefile
    ├── README.md
    └── src
        ├── lib.c
        ├── lib.h
        └── main.c
  1. Зафіксувати зміни (за допомогою команди git commit) під назвою "Initial copy of sample_project". Зверніть увагу,
  • при виконанні будь-яких git операцій, потрібно знаходитись в каталозі вашого проекта;
  • необхідно дослідити роботу команди git commit, та внести текст повідомлення у рамках цієї ж команди;
  • перед безпоседенім виконанням команди git commit необхідно додати файли до git індексу. Для цього необхідно дослідити команду git add
  1. Виконати зміни на розсуд викладача, зібрати проект (зкомпілувати) та продемонструвати зміни. За умовчуванням зміни рекомендується виконувати наступні:
  • на оцінку "задовільно" - всі ті ж зміни, що буди зроблені у коді у попередній роботі;
  • на оцінку "добре" та "відмінно" - додати новій тип Тварини "Людина", зробити так, щоб він був у списку елементів, що виводиться на екран.
  1. Відкрити в відлагоднику (debugger) lldb ваш виконуючий файл, зупинитися на будь-якій строці та визначити значення змінних (variables). Слід поекспериментувати з можливостями відлагодника "Step in", "Step over", "Step out". Посилання на офіційну документацію по роботі з додатком. В 90% випадків система команд ідентична до його "батька" gdb, тому рекомендується ознайомитись з його документацією з початку (див. інші посилання у розділі 04 посилань).
  2. Зафіксувати зміни за допомогою команди git commit.
  3. Дослідити режими компіляції з інформацією про відлагодження та без неї; описати різницю.
  4. Написати звіт о ході виконання роботи та отриманих результатах. Звіт не повинен мати зображення!
  5. Завантажити зміни за допомогою команди git push. На поточний час, структура репозиторію, що завантажується на видалений сервер, повинна виглядати наступним чином:
├── .git
├── .gitignore
├── .clang-format
├── .clang-tidy
├── .gitlab-ci.yml
├── README.md
├── lab01
│   └── doc
│       └── lab01.txt
└── lab02
    ├── Doxyfile
    ├── Makefile
    ├── README.md
    ├── doc
    │   └── lab02.txt
    └── src
        ├── lib.c
        ├── lib.h
        └── main.c

Пояснення до структури:

  • .gitignore - файл з переліком елементів, що не повинні бути добавлені до системи контролю версіями. До цього переліку належать бінарники та згенеровані файли. Створюється один раз та лежить у корені проекту;
  • .clang-format - файл коректного форматування коду;
  • .clang-tidy - файл коректної стилістики коду;
  • README.md файл загального присвячення всієї дисципліни. Файл повинен мати інформацію про дисципліну та автора роботи;
  • lab02/Doxyfile - файл конфігурації документування коду;
  • lab02/README.md файл загального присвячення лабораторної роботи. У рамках курсу повинен мати у собі ПІБ автора, номер лабораторної роботи, назву л/р, та завдання до л/р. Створюється для кожної лабораторної роботи;
  • lab02/dist - директорія з згенерованими даними. Не повинна бути в системі контролю версіями (та повинна бути додана до файлу .gitignore). Складається з скомпільованих бінарних файлів та doxygen документації (див. інформацію про файл Doxyfile);

Зверніть увагу на наявність звіту для лабораторної роботи 1.

Вимоги до оформлення та сдачі звіту

Правила оформлення звіту для цієї лабораторної роботи співпадає з правилами оформлення звіту попередньої л/р

Посилання на літературу

Контрольні питання.

  1. Що таке процес відлагодження (debug)?
  2. Чим відрізняється бінарний файл з та без інформацією про відлагодження?
  3. Які базові утиліти необхідні для можливості відлагодження додатків?
  4. Для чого необхідна утиліта lldb?
  5. Як дізнатися поточне значення змінної у відлагоднику?
  6. Що таке точка зупинки (breakpoint)? Як її поставити?
  7. Що таке стек виклику? Як його подивитися?
  8. Що роблять наступні команди: Step In, Step Out, Step Over?