The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск отладчика GDB 16"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск отладчика 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 18-Янв-25, 21:47   +12 +/
одно из основополагающих опенсорс творений, как линукс, куему, иксы и файрфокс

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2

2. Сообщение от Аноним (2), 18-Янв-25, 21:50   –12 +/
Дебажу принтами зачем нужен сабж ума не приложу. Есть подробное зачем оно надо?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #5, #9, #11, #15, #26, #33, #44, #60

5. Сообщение от Аноним (5), 18-Янв-25, 22:08   +23 +/
Ношу воду коромыслом с реки, зачем мне водопровод, ума не приложу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #8, #32

8. Сообщение от Аноним (8), 18-Янв-25, 22:35   –9 +/
А так деблохатор - это как раз таки воду коромыслом. Водопровод - это языки, которым оно не нужно как класс.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #10

9. Сообщение от Аноним (-), 18-Янв-25, 22:52   +/
> Дебажу принтами зачем нужен сабж ума не приложу. Есть подробное зачем оно надо?

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #16, #20

10. Сообщение от Аноним (-), 18-Янв-25, 22:53   +1 +/
> А так деблохатор - это как раз таки воду коромыслом. Водопровод - это языки,
> которым оно не нужно как класс.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #12, #14

11. Сообщение от Аноним (11), 18-Янв-25, 22:56   +/
ты забыл добавить префиксом await к своему посту
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

12. Сообщение от Аноним (12), 19-Янв-25, 00:01   –3 +/
Кто же его не знает? Швятой Rust.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #22

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #17, #23

15. Сообщение от _kp (ok), 19-Янв-25, 01:21   +/
>>Дебажу принтами

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

16. Сообщение от Аноним (-), 19-Янв-25, 01:29   +2 +/
>> Дебажу принтами зачем нужен сабж ума не приложу. Есть подробное зачем оно надо?
> Если у тебя раз в неделю грохается здоровая многопоточная программа...

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #28

17. Сообщение от Аноним (17), 19-Янв-25, 03:45   +1 +/
Предыдущие попытки создать структурированные пайплайны тебя ничему не научили?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

18. Сообщение от Аноним (18), 19-Янв-25, 04:54   +/
Вот интересно... Как там нынче lldb по сравнению с gdb? Кто-нить юзает?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #21, #34

19. Сообщение от Аноним (19), 19-Янв-25, 09:29   +1 +/
>     Прекращена поддержка QNX Neutrino

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #43

20. Сообщение от Аноним другой (?), 19-Янв-25, 09:29   +1 +/
Как-то в голову не пришло, что отладчиком можно дампы отлаживать.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

21. Сообщение от Аноним (21), 19-Янв-25, 09:56   –2 +/
в VSCode и Neovim для Rust юзают lldb
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

22. Сообщение от Аноним (22), 19-Янв-25, 11:32   –1 +/
> Кто же его не знает? Швятой Rust.

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #49, #52

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

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

25. Сообщение от Аноним (26), 19-Янв-25, 12:56   +/
GDB то может быть и хорош сам по себе. Другое дело его поддержка в средах разработки. Я никогда не работал с голым GDB. Но подозреваю, что это что то уровня работы с debug.com под DOS. Конечно можно, но не удобно. А в средах его реализация крайне кривейшая.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #30, #36, #64

26. Сообщение от Аноним (26), 19-Янв-25, 13:01   +/
Я когда пишу под DOS, там тоже нет поддержки нормальный дебаггеров. Только TD32, который не поддерживается HX, и WD. Оба не умеют в современные форматы отладочной информации. Т.е. средства разработки тоже нужно юзать древние. Дебагать принтами конечно классно, но все равно не удобно. Другие классные лудитские медоды дебагинга - юзать волшебный макрос #define Breakpoint asm volatile inline ("int 3":::). Метод исключения - комментить куски кода, пока не найдешь тот, который вызывает ошибку. Какие еще извращения вы знаете?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #31, #41

27. Сообщение от Аноним (5), 19-Янв-25, 13:07   +/
Принтфы, языки, не требующие дебаггера, «писать нужно без ошибок»… а вы не пробовали не свой код отлаживать, а чужой? да не в исходниках, а в виде готовых бинарников?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #29, #35, #45, #50

28. Сообщение от Аноним (-), 19-Янв-25, 13:20   +/
>>> Дебажу принтами зачем нужен сабж ума не приложу. Есть подробное зачем оно надо?
>> Если у тебя раз в неделю грохается здоровая многопоточная программа...
> ... то и дебажить ее тоже такое себе удовольствие.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

29. Сообщение от Аноним (26), 19-Янв-25, 13:33   +/
Да чаще всего вопросы типа "А зачем мне ООП? У меня и так все работает" возникают у товарищей, которые ничего кроме школьных задачек и не решали. Дело в масштабируемости. Чем сложнее проект, тем круче нужны инструменты для его разработки. Благо у меня например опыта много в разработке почти без отладчика. Но корячится каждый раз с мелкими ошибками - это тоже не подарок. Однажды может не повезти и ты словишь сложную ошибку, которую трудно будет найти. Я тут недавно курьез словил. Дебагал ошибку три дня. Все было 100% ок, но не работало. Оказалось это баг в DOSBox. И я его нашел)))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #57

30. Сообщение от Аноним (30), 19-Янв-25, 14:27   +1 +/
Я работаю, вроде норм. Переключаюсь между окном с терминалом и кодом, когда расставляю брейкпоинты, а потом уже только в терминале.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

31. Сообщение от Аноним (5), 19-Янв-25, 14:55   +/
Это на чём вы пишете под DOS, что отладочная информация у вас в современном формате, а отладчика нет?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #37

32. Сообщение от Аноним (32), 19-Янв-25, 15:54   +/
> Ношу воду коромыслом с реки, зачем мне водопровод, ума не приложу.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #39

33. Сообщение от Аноним (32), 19-Янв-25, 15:56   +/
Последнее время так же делаю. Отлаживаю проект весьма небольшими фрагментами. И тестовая печать, выданная в файл, может быть удобнее для анализа.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #51

34. Сообщение от Аноним (37), 19-Янв-25, 16:23   +/
В прошлом году немного поработал с lldb - не понравился, gdb лучше. Да и глюков в нём больше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

35. Сообщение от Аноним (30), 19-Янв-25, 16:28   +/
>не свой код отлаживать, а чужой

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #38

36. Сообщение от Аноним (37), 19-Янв-25, 16:31   +/
Неудобно, но в Gdb можно исходный текст просмотреть. Можно прямо во время исполнения изменить любой участок памяти. А многопоточные программы иногда только в нём получается отладить, когда точку останова на модификацию области памяти делать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

37. Сообщение от Аноним (37), 19-Янв-25, 16:33   +/
Вроде Free Pascal умеет для Dos
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #42

38. Сообщение от Аноним (39), 19-Янв-25, 16:54   +/
Во-первых, есть такое понятие «надо».
Во-вторых, есть такое понятие «реверс-инженеринг». И это куда интереснее, чем принтфы в своём коде расставлять, чтобы очередной унылый выход за границы массива искать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #61

39. Сообщение от Аноним (39), 19-Янв-25, 16:56   +/
А я и не отвергаю. Но вот сверху водопровод однозначон отвергают.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #40

40. Сообщение от Аноним (39), 19-Янв-25, 16:58   +/
P.S. Впрочем, жить в деревне, да в –30° в баню бегать… такое себе.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

41. Сообщение от Аноним (-), 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. тому кто написал код следует сменить профессию, причём принудительно и с применением избыточной жестокости.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

42. Сообщение от Аноним (39), 19-Янв-25, 18:32   +/
Да не только он умеет, вопрос в другом — что сейчас умеет собирать под DOS, но не имеет нормального отладчика?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #47

43. Сообщение от Аноним (32), 19-Янв-25, 18:58   +/
Если речь об отладке математики, то можно это делать в поддерживаемой отладчиком системе - предполагается, что работать она должна одинаково, а в неподдерживаемой делать сборку. Ну к примеру, я делаю отладку расчетных алгоритмов в Ubuntu, а для Haiku делаю сборку, и всё в ней работает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #56

44. Сообщение от Аноним (44), 19-Янв-25, 19:00   +/
Удачи дебажить принтами типичную легасятину десятилетнюю на 600К+ строк кода, где библы вперемешку с фреймворком и все на коллбэках, при этом их код может совершенно неочевидным образом обрабатывать как выхлоп твоей процедуры, так и нечто неочевидное передавать на вход (а документировано это может быть крайне криво). Так что тут только отладчик и по стеку вызовов гулять, изучать всю цепочку.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

45. Сообщение от Аноним (32), 19-Янв-25, 19:03   +/
> а чужой? да не в исходниках, а в виде готовых бинарников?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #53

47. Сообщение от Аноним (37), 19-Янв-25, 21:02   +/
В Open Watcom есть свой отладчик , который понимает dwarf, а Free pascal , bruce's c и Djgpp и nasm не делают свои отладчики
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #48

48. Сообщение от Аноним (5), 19-Янв-25, 21:08   +/
> Free pascal

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

> Djgpp

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47

49. Сообщение от Аноним (49), 20-Янв-25, 02:28   +/
> как они на ходу состояние программы смотрят

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #55, #63

50. Сообщение от Аноним (19), 20-Янв-25, 04:01   +1 +/
Мы же на OPEN net. У нас код открытый.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

51. Сообщение от Андрей (??), 20-Янв-25, 07:59   –1 +/
Так это совершенно разные подходы в отладке - о чём там спор выше вообще не понятно, т.к. инъекция функций печати это банально примитивное встраивание в поток отладочных конструкций, но сложное состояние таким образом отловить сложно, поэтому и берётся отладчик, который и сразу покажет где произошёл сегфолт и более сложные инъекции и контроль позволяет осуществить, причём как с печатью, так и целиком показывая состояние локальных переменных. Другой вопрос, что не всегда чистый gdb удобен из коробки, ввиду чего удобно брать его обёртки, вроде `гитхаб/nakst/gf` или подобных.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

52. Сообщение от Аноним (52), 20-Янв-25, 11:01   +/
Если tokio то берут tokio-console и смотрят что там... А что?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

53. Сообщение от Аноним (53), 20-Янв-25, 12:06   +/
Что за решение, если не секрет?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #54

54. Сообщение от Аноним (-), 20-Янв-25, 12:23   –1 +/
> Что за решение, если не секрет?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53

55. Сообщение от Аноним (55), 20-Янв-25, 14:00   +/
>дисциплиной и прочими практиками

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49

56. Сообщение от Аноним (55), 20-Янв-25, 14:06   +1 +/
О, нашёлся уникальный человек, который математические расчёты делает непременно на Haiku.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

57. Сообщение от Anonymmm (?), 20-Янв-25, 15:17   +/
И как ядро Linux без ООП живёт)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #58, #59

58. Сообщение от Аноним (55), 20-Янв-25, 16:21   +1 +/
Всё тяжелее.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

59. Сообщение от Andrey (??), 20-Янв-25, 16:41   +/
Там своя кустарная реализация ООП на C.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

60. Сообщение от Александр (??), 20-Янв-25, 18:32   +1 +/
ПО установлено у заказчика. Отладка отключена или по минимуму, чтобы не ломать производительность. Процесс падает, но редко. Повторить у себя за конечное время - не получается.

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

63. Сообщение от Аноним (63), 23-Янв-25, 14:55   +/
Кто о чем, а веб-камаки о своих юнит тестах. Как ты напишешь юнит тест для драйвера, к-й размазан в ядре по разным подсистемам и дергается асинхронно прерываниями?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49

64. Сообщение от adolfus (ok), 03-Фев-25, 15:00   +/
Просто нужно использовать те среды разработки, где поддержка хорошая. Например, slickedit.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру