URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 135807
[ Назад ]

Исходное сообщение
"Выпуск отладчика GDB 16"

Отправлено opennews , 18-Янв-25 21:47 
Представлен релиз отладчика GDB 16.1 (первый выпуск серии 16.x, ветка 16.0 использовалась для разработки). GDB поддерживает отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, D, Fortran,  Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch   и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS)...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62582


Содержание

Сообщения в этом обсуждении
"Выпуск отладчика GDB 16"
Отправлено Аноним , 18-Янв-25 21:47 
одно из основополагающих опенсорс творений, как линукс, куему, иксы и файрфокс

всем присесть и три раза ку


"Выпуск отладчика GDB 16"
Отправлено Аноним , 18-Янв-25 21:50 
Дебажу принтами зачем нужен сабж ума не приложу. Есть подробное зачем оно надо?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 18-Янв-25 22:08 
Ношу воду коромыслом с реки, зачем мне водопровод, ума не приложу.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 18-Янв-25 22:35 
А так деблохатор - это как раз таки воду коромыслом. Водопровод - это языки, которым оно не нужно как класс.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 18-Янв-25 22:53 
> А так деблохатор - это как раз таки воду коромыслом. Водопровод - это языки,
> которым оно не нужно как класс.

А что за языки такие волшебные, что на них программы - без багов?! Я б взял парочку.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 00:01 
Кто же его не знает? Швятой Rust.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 11:32 
> Кто же его не знает? Швятой Rust.

Не, вот на минутку. На нем не то что просто баги, на нем даже CVE бывают. При том даже прямо в его стдлибе.

И вот что хрустики делают если например сложное многопоточное месиво через неделю работы ловит из незабвенный panic? Или как они на ходу состояние программы смотрят, если она начинает вытворять что-то не то?


"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 02:28 
> как они на ходу состояние программы смотрят

Звучит как "на ходу быстренько остановить ракету и перепроверить деталь". Лечится юнит-тестированием, дисциплиной и прочими практиками. Но сишники привыкли дебажить уже пост-фактум в связи с тем, что компилятор не дает ценных компайл-тайм проверок.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 14:00 
>дисциплиной и прочими практиками

Ага, значит, тоже, что и на других языках приходится делать.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 23-Янв-25 14:55 
Кто о чем, а веб-камаки о своих юнит тестах. Как ты напишешь юнит тест для драйвера, к-й размазан в ядре по разным подсистемам и дергается асинхронно прерываниями?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 11:01 
Если tokio то берут tokio-console и смотрят что там... А что?

"Выпуск отладчика GDB 16"
Отправлено Витюшка , 19-Янв-25 01:12 
Вообще есть один такой (дебаггер ему пока не нужен в практическом смысле слова, да его и нет 🤷‍♀️) - это язык Nu.

И это единственный из 30 языков программирования, которому "не нужен" дебагер. И скажу честно - я в шоке.

Ты просто берёшь кусок кода и вставляешь его в оболочку NuShell - и видишь результат. Настолько атомарны конструкции языка.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 03:45 
Предыдущие попытки создать структурированные пайплайны тебя ничему не научили?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 11:47 
> Вообще есть один такой (дебаггер ему пока не нужен в практическом смысле
> слова, да его и нет 🤷‍♀️) - это язык Nu.

А, ну если дебагера нет - он, конечно "не нужен".

> И это единственный из 30 языков программирования, которому "не нужен" дебагер. И
> скажу честно - я в шоке.
> Ты просто берёшь кусок кода и вставляешь его в оболочку NuShell -
> и видишь результат. Настолько атомарны конструкции языка.

Ага, а большие, сложне программы, с нетривиальными взаимодействиями между компонентами - как? Или они просто это не практикуют - и тогда и проблемы нет? В простых вещах мне и на сишке дебагер - нахрен не упал.

Теперь возьмем жирный плюсатый проект с многопоточностью, бинарем 10 мегз и проч, и когда он через неделю упадет по фиг знает какой причине - призадумаемся что иногда и дебагер не такая уж плохая штука.

Вот прямо сейчас у меня есть кордамп с багом который я видел 1 раз за всю мою жизнь. И, конечно, я понятия не имею - как такое вообще сделать можно было. Но я более-менее вижу состояние программы на момент отвала - целиком - и понимаю в каком именно месте она споткнулась. Это дает шанс этот баг - зарулить.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 15:54 
> Ношу воду коромыслом с реки, зачем мне водопровод, ума не приложу.

Раз уж взялись метафорами говорить ... У нас в деревне зимой проще воду в баню по субботам ведром принести. Т.к. в -30 водопровод однозначно порвет, а шланг потом невозможно обратно свернуть, не сломав. Это я к тому, что ненужно скоропалительно отвергать что бы то ни было.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 16:56 
А я и не отвергаю. Но вот сверху водопровод однозначон отвергают.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 16:58 
P.S. Впрочем, жить в деревне, да в –30° в баню бегать… такое себе.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 18-Янв-25 22:52 
> Дебажу принтами зачем нужен сабж ума не приложу. Есть подробное зачем оно надо?

Если у тебя раз в неделю грохается здоровая многопоточная программа... то вот это может быть несколько несподручно.

Т.е. одно дело если ты получил неведомый трейс выполнения который фиг знает как воспроизвести - не говоря о хзкаком внутреннем состоянии, и другое - если вот тебе core dump и изучай себе наздоровье. И так уже бывает гораздо понятнее в чем дело. Хотя тоже без гарантий.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 01:29 
>> Дебажу принтами зачем нужен сабж ума не приложу. Есть подробное зачем оно надо?
> Если у тебя раз в неделю грохается здоровая многопоточная программа...

... то и дебажить ее тоже такое себе удовольствие.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 13:20 
>>> Дебажу принтами зачем нужен сабж ума не приложу. Есть подробное зачем оно надо?
>> Если у тебя раз в неделю грохается здоровая многопоточная программа...
> ... то и дебажить ее тоже такое себе удовольствие.

См выше про кордамп который я 1 раз в жизни видел. По другому такое особо и не получится.


"Выпуск отладчика GDB 16"
Отправлено Аноним другой , 19-Янв-25 09:29 
Как-то в голову не пришло, что отладчиком можно дампы отлаживать.

Со своей стороны про отладку больших систем могу сказать, что после того как современные девопсы стали всё деплоить контейнерами, отобрав возможность заходить на прод и производить какие-то действия (типа подправил код, добавил принтов, перезапустил, увидел результат), приходится в систему вставлять тонны логов и логировать всё подряд. По сути при возникновении проблемы оказывается, что "принты" уже есть и результат уже лежит в графане.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 18-Янв-25 22:56 
ты забыл добавить префиксом await к своему посту

"Выпуск отладчика GDB 16"
Отправлено _kp , 19-Янв-25 01:21 
>>Дебажу принтами

Одно другому не мешает, дополняет, и более того, где то уместней логи, а где то без отладчика ад.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 13:01 
Я когда пишу под DOS, там тоже нет поддержки нормальный дебаггеров. Только TD32, который не поддерживается HX, и WD. Оба не умеют в современные форматы отладочной информации. Т.е. средства разработки тоже нужно юзать древние. Дебагать принтами конечно классно, но все равно не удобно. Другие классные лудитские медоды дебагинга - юзать волшебный макрос #define Breakpoint asm volatile inline ("int 3":::). Метод исключения - комментить куски кода, пока не найдешь тот, который вызывает ошибку. Какие еще извращения вы знаете?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 14:55 
Это на чём вы пишете под DOS, что отладочная информация у вас в современном формате, а отладчика нет?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 16:33 
Вроде Free Pascal умеет для Dos

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 18:32 
Да не только он умеет, вопрос в другом — что сейчас умеет собирать под DOS, но не имеет нормального отладчика?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 21:02 
В Open Watcom есть свой отладчик , который понимает dwarf, а Free pascal , bruce's c и Djgpp и nasm не делают свои отладчики

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 21:08 
> Free pascal

Прямо нет отладчика? Что-то не верится.

> Djgpp

Вроде ж всегда там GDB был.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 16:59 
> Дебагать принтами конечно классно, но все равно не удобно.

В досе конечно неудобно. Нужен PAGER с возможностью скролла и поиска. И конечно же редирекция вывода в пайп. В запущенных случаях можно в текстовый редактор засунуть, но досовый текстовый редактор не вытащит больше 64Kb текста.

А, ну и сверху, если мы говорим о C, я б написал препроцессор к C, который бы добавлял няшные конструкции для отладочной печати. Чтоб без printf("%d") и тп. Нужно что-нибудь попроще, типа dbgprint("my_struc is {my_struc} now"). Плюс нужен аналог лисповой функции print, которая выводит значение ей переданное и возвращает это значение, то есть имея что-нибудь типа:

int result = foo() + bar();

можно было бы преобразоваь это в:

int result = dbg(foo()) + dbg(bar());

и узнат что там foo с bar возвращают.

Но лучше это делать не функцией, а препроцессором, чтобы тот выводил бы не просто значение, а что-то такое:

my_source.c:42: foo() == 3.14
my_source.c:42: bar() == "Hello world"

> волшебный макрос #define Breakpoint asm volatile inline ("int 3":::).

Чем это отличается от printf(/* all locals */)? Если ты знаешь все локальные переменные, то ты вполне можешь рассуждать о том, что делает код без помощи отладчика. Бывают ситуации, когда это не так, но они все делятся на два класса: 1. смотрящему в код следует сменить профессию; 2. тому кто написал код следует сменить профессию, причём принудительно и с применением избыточной жестокости.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 15:56 
Последнее время так же делаю. Отлаживаю проект весьма небольшими фрагментами. И тестовая печать, выданная в файл, может быть удобнее для анализа.

"Выпуск отладчика GDB 16"
Отправлено Андрей , 20-Янв-25 07:59 
Так это совершенно разные подходы в отладке - о чём там спор выше вообще не понятно, т.к. инъекция функций печати это банально примитивное встраивание в поток отладочных конструкций, но сложное состояние таким образом отловить сложно, поэтому и берётся отладчик, который и сразу покажет где произошёл сегфолт и более сложные инъекции и контроль позволяет осуществить, причём как с печатью, так и целиком показывая состояние локальных переменных. Другой вопрос, что не всегда чистый gdb удобен из коробки, ввиду чего удобно брать его обёртки, вроде `гитхаб/nakst/gf` или подобных.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 19:00 
Удачи дебажить принтами типичную легасятину десятилетнюю на 600К+ строк кода, где библы вперемешку с фреймворком и все на коллбэках, при этом их код может совершенно неочевидным образом обрабатывать как выхлоп твоей процедуры, так и нечто неочевидное передавать на вход (а документировано это может быть крайне криво). Так что тут только отладчик и по стеку вызовов гулять, изучать всю цепочку.

"Выпуск отладчика GDB 16"
Отправлено Александр , 20-Янв-25 18:32 
ПО установлено у заказчика. Отладка отключена или по минимуму, чтобы не ломать производительность. Процесс падает, но редко. Повторить у себя за конечное время - не получается.

Всё что есть - дамп памяти.

Ищи без отладчика, ага.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 04:54 
Вот интересно... Как там нынче lldb по сравнению с gdb? Кто-нить юзает?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 09:56 
в VSCode и Neovim для Rust юзают lldb

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 16:23 
В прошлом году немного поработал с lldb - не понравился, gdb лучше. Да и глюков в нём больше.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 09:29 
>     Прекращена поддержка QNX Neutrino

И как теперь жить?


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 18:58 
Если речь об отладке математики, то можно это делать в поддерживаемой отладчиком системе - предполагается, что работать она должна одинаково, а в неподдерживаемой делать сборку. Ну к примеру, я делаю отладку расчетных алгоритмов в Ubuntu, а для Haiku делаю сборку, и всё в ней работает.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 14:06 
О, нашёлся уникальный человек, который математические расчёты делает непременно на Haiku.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 12:56 
GDB то может быть и хорош сам по себе. Другое дело его поддержка в средах разработки. Я никогда не работал с голым GDB. Но подозреваю, что это что то уровня работы с debug.com под DOS. Конечно можно, но не удобно. А в средах его реализация крайне кривейшая.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 14:27 
Я работаю, вроде норм. Переключаюсь между окном с терминалом и кодом, когда расставляю брейкпоинты, а потом уже только в терминале.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 16:31 
Неудобно, но в Gdb можно исходный текст просмотреть. Можно прямо во время исполнения изменить любой участок памяти. А многопоточные программы иногда только в нём получается отладить, когда точку останова на модификацию области памяти делать.

"Выпуск отладчика GDB 16"
Отправлено adolfus , 03-Фев-25 15:00 
Просто нужно использовать те среды разработки, где поддержка хорошая. Например, slickedit.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 13:07 
Принтфы, языки, не требующие дебаггера, «писать нужно без ошибок»… а вы не пробовали не свой код отлаживать, а чужой? да не в исходниках, а в виде готовых бинарников?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 13:33 
Да чаще всего вопросы типа "А зачем мне ООП? У меня и так все работает" возникают у товарищей, которые ничего кроме школьных задачек и не решали. Дело в масштабируемости. Чем сложнее проект, тем круче нужны инструменты для его разработки. Благо у меня например опыта много в разработке почти без отладчика. Но корячится каждый раз с мелкими ошибками - это тоже не подарок. Однажды может не повезти и ты словишь сложную ошибку, которую трудно будет найти. Я тут недавно курьез словил. Дебагал ошибку три дня. Все было 100% ок, но не работало. Оказалось это баг в DOSBox. И я его нашел)))

"Выпуск отладчика GDB 16"
Отправлено Anonymmm , 20-Янв-25 15:17 
И как ядро Linux без ООП живёт)

"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 16:21 
Всё тяжелее.

"Выпуск отладчика GDB 16"
Отправлено Andrey , 20-Янв-25 16:41 
Там своя кустарная реализация ООП на C.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 16:28 
>не свой код отлаживать, а чужой

А зачем? Это же что-то вроде наказания


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 16:54 
Во-первых, есть такое понятие «надо».
Во-вторых, есть такое понятие «реверс-инженеринг». И это куда интереснее, чем принтфы в своём коде расставлять, чтобы очередной унылый выход за границы массива искать.

"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 23:06 
"Во-вторых" -- это не про gdb от слова вообще. gdb крайне неудобен для отладки бинарей без отладочной информации. И в целом обратная разработка -- это не разработка, там очень много чего по другому. Некоторые скиллы разработки оказываются полезными для обратной разработки, но большинство бесполезно. Некоторые инструменты для разработки, оказываются полезными для обратной разработки, но всё же основные инструменты обратной разработки уникальны для неё. Не надо путать тёплое с мягким.

А "во-первых" это твои проблемы. Ты всегда можешь сменить место работы так, чтобы не было "надо". То есть, выходит что не надо, но ты сознательно на это идёшь.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 19-Янв-25 19:03 
> а чужой? да не в исходниках, а в виде готовых бинарников?

Это самая большая проблема - отлаживать чужой код. На кривой и убогий Qt у меня было убито 80% времени, потраченного на проект в целом. Впрочем, полгода назад нашел лучшее решение, забыв о нем, как о кошмарном сне.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 12:06 
Что за решение, если не секрет?

"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 12:23 
> Что за решение, если не секрет?

Электрон, разумеется!
Все просто работает.


"Выпуск отладчика GDB 16"
Отправлено Аноним , 20-Янв-25 04:01 
Мы же на OPEN net. У нас код открытый.