Как стать автором
Поиск
Написать публикацию
Обновить
24.5

Отладка *

Поиск и устранение ошибок в коде

Сначала показывать
Порог рейтинга

А ты такой холодный: представим технологии Rust-дебаггеров в виде айсберга

На верхушке айсберга видим технологии DWARF, PTRACE и ELF, а внизу — набор более редких технологий. 

Сегодня будем говорить только о верхушке. Хорошая новость: чтобы понять большинство возможностей дебаггера, достаточно иметь представление об этих трех технологиях:

PTRACE — системный вызов, который позволяет одному процессу (tracer) управлять и исследовать другой процесс (tracee).  

ELF (Executable and Linkable Format) — формат исполняемых двоичных файлов. 

DWARF (Debugging With Arbitrary Record Formats) — стандарт, описывающий формат .debug_xxx секций в ELF.

Что касается «подводных» технологий, упомянутых на картинке: применяя закон Парето, можно смело сказать что 80% знаний необходимы, чтобы реализовать только 20% функционала (и не самого важного). Но если хотите узнать о них больше, напишите в комментариях.

Подробнее о PTRACE, ELF и DWARF, а также о функциях, которые они реализуют в отладчиках на Rust, читайте в статье.

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

Впечатлился случайно найденным ресурсом и убил час, чтобы(, несмотря на кривое юзабилити,) найти оглавление. Вот оно:

https://opendsa-server.cs.vt.edu/home/books
(Sample OpenDSA eTextbooks)

Это один из (потенциально многих) несвязанных инстансов открытого движка для прохождения курсов по Computer Science и создания новых. Крутая его фишка: визуализация алгоритмов, структур данных и концепций, таких как стили вызовов функций - ещё и с упражнениями для закрепления.

Контента бездна, рекомендую прокликать ссылки.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

[Отладка] git bisect

Сегодня хочу рассказать об инструменте Git, который может очень помочь при отладке. Этот инструмент называется git bisect.

Возможно, ты уже сталкивался с ситуацией, когда нужно выяснить, после какого изменения в коде проекта появилась ошибка. Перебирать все коммиты вручную — не самое приятное занятие. Особенно, если ошибка была допущена давно. Именно здесь на помощь приходит git bisect.

Принцип работы git bisect основан на методе бинарного поиска. Тебе лишь нужно указать «хороший» коммит, в котором ошибка точно отсутствует, и «плохой» коммит, в котором ошибка уже есть. Git bisect автоматически проведет тебя через процесс бинарного поиска между этими двумя точками, поможет постепенно сузить круг «подозреваемых» и найти коммит, начиная с которого стал проявляться баг.

Использование git bisect начинается с запуска команды git bisect start, после чего ты помечаешь известные «хороший» и «плохой» коммиты соответствующими командами. Git затем предложит тебе проверить определенный коммит, и ты сообщишь, есть ли в нем данная ошибка. Процесс повторяется, пока не будет найден коммит, который послужил причиной появления бага.

Ссылка на доку здесь.

А тут мой тг-канал со свежими новостями из мира мобильной разработки.

Теги:
Всего голосов 13: ↑10 и ↓3+7
Комментарии1

Состоялся релиз отладчика GDB 14.1 (первый выпуск серии 14.x, ветка 14.0 использовалась для разработки). GDB поддерживает отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).

Ключевые улучшения в проекте:

  • кодовая база переведена на использование стандарта C++17. Для сборки GDB теперь необходим компилятор, поддерживающий C++17 (как минимум GCC 9);

  • в индекс добавлена информация о функции main, что позволяет ускорить запуск при использовании с некоторыми большими исполняемыми файлами;

  • прекращена поддержка ОС AIX 4.x, 5.x и 6.x (в качестве минимально поддерживаемой версии AIX заявлен выпуск 7.1);

  • добавлена начальная встроенная поддержка протокола DAP (Debugger Adapter Protocol);

  • добавлена поддержка переменной окружения NO_COLOR;

  • добавлена начальная поддержка целочисленных типов размером больше 64 битов;

  • внесены улучшения в Python API;

  • добавлена поддержка точек остановки, привязанных к отдельным объектам отладки (при отладке нескольких процессов);

  • добавлена функция "$_shell" для запуска команды в командной оболочке и возвращения результата;

  • улучшена поддержка архитектуры AArch64. Добавлена поддержка расширений SME (Scalable Matrix Extension) и SME2;

  • улучшена поддержка языка Ada и спецификации Ada 2022.

Источник: OpenNET.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0