Представлен релиз отладчика GDB 15.1 (первый выпуск серии 15.x, ветка 15.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)...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=61507
Очень сложный отладчик. Пытался к нему прикрутить свой текст. Немного не разобрался
А надо было прикручивать код.
Код каждый прикрутить может, а текст прикрутить это не фунт изюма.
Какой то тупой вас диалог... вы статьёй не ошиблись? Лучше бы подумали о содержимом статьи
- первый же пункт - просто жесть:
> Ключевые улучшения:
> * Для сборки GDB и GDBserver теперь необходим компилятор, поддерживающий C++17 (как минимум GCC 9).- Речь то про повышение (условно говоря)системных-требований у рассматриваемого ПО
и ведь даже серьёзно в ущерб совмстимости - с другими ОС и форками линуксов,
да даже просто у условно-рассматриваемой - со всеми предыдущими версиями...
Улучшение?!
И почему то мне навеваеются воспоминания о методологиях MS (в ч.н.по принуждению их пользователей - обновляться обновлять и так всю жизнь стать их придатком для обновлений)...Я тут не к автору статьи придираюсь - а, к тому как хуцпистки авторы даже OSC ПО подают свою тут явно скрыто проплаченную Intel/AMD и прочими производителями аппаратуры - маркетинговую фактически же деградацию их ПО, ничем не уступая в этом проприетарам из таких же ушлых, и значит в т.ч.полюблении взяток от перечисленных компаний; но, ведь это ПО системного уровня - с сопутствующими запросами привелегий у ОС и пользователя...
Ну так код и есть текст. Для того чтобы соединить с программой текст на вашем языке и нужен отладчик. Ахаха, как смешно и остроумно - нужно было код. На чемодан поставь себе код.
Он ищет отладочные символы в файле. Форматы разные есть. DWARF, например. Возможно ты не добавил опцию -g
Текст еще любит когда добавляют -О0.
Не, тут ситуация сложнее - просто любитель, поэтому лапки вместо ручек. Сам формат не освоил. Времени не особо на это, но просто интересно. Обыкновенная лень разбираться. Как только это преодолеть, все будет норм. Спасибо хоть на добром слове и желании помочь! Не то что другие - явно ничего не знают, а что-то умное сказать хочется.
Чего там рзабираться, все же программистские редакторы с gdb без проблем работают. Кнопку тиснул и редактор переключился в режим отладки. Может вы в нотепаде текст печатаете?
Ну в том и дело, что работа типо в прослойке к GDB. А не в самом. И вот там, в лучших линуховых традициях, чёрт ногу сломит
Как раз наоборот. attach pid и готово.Кроме консольного gdb нет ни одной работающей прослойки.
Они поддерживают дай бог 5% от возможностей gdb вроде самых самых примитивных и разваливаются на ходу.
Например VS Code прямо пишет что команды которые вбиваются напрямую в vs code не поддерживаются и могут нарушить работоспособность.
Подобных инструментов более чем один. Например, был тот же WinDbg. В общем-то, неплохо помог, когда разгребал, почему виндовый ноут хз почему регулярно вырубался с синим экраном. Штука та неплохо и дампы разбирала.
Но в настоящее время это проблема, что посоны не могут запилить норм интерфейс или хотя бы возможности для того чтобы это сделал кто-то другой, а не заморачивались лепкой консольных команд и разбором выхлопа консоли
Ну вот и напиши программистский редактор без отладчика. Ахаха, как смешно, нотепад! Почему не vi? Так ещё смешнее будет! Тоже мне пользователи - напиши Яндекс за час, там же только одна строчка поиска!
> Очень сложный отладчик. Пытался к нему прикрутить свой текст. Немного не разобралсяНеужели кто-то повелся на совет редактить объектники текстовым редактором? :)
>Продолжена реализация протокола DAP (Debugger Adapter Protocol).Microsoft всегда делает своё. А могли бы просто написать пару библиотек + спецификацию для существующего протокола gdb, которому и так дофига отладчиков следовало.
>http
>json
>процессыВсё та же грёбанная модель, что и в LSP.
LSP гениален, не сметь на него наезжать, или будешь иметь дело со мной.
Аж трясёт.
Разумеется они делают свое.
Иначе будут зависить от какого-то гнутого поделия и его безумных адептов, для которых stable is nonsense. Ну и поддержка больше нужна GDB, а не майкам.
> спецификацию для существующего протокола gdbНу там протокол... Я не знаю, что сейчас у них, но лет двадцать назад я пытался сделать простейшую систему для программирования для детей и прикрутить туда отладчик, и я переплевался из-за того, что во всех тех протоколах gdb ты с одного файлового дескриптора читаешь выхлопы программы и gdb и отличить одно от другого возможно только если программа кооперирует. Например, что она выводит строку (line) целиком, вплоть до и вместе с \n. Если же программа делает что-нибудь в стиле printf("!"); fflush(stdin); то всё, приехали.
Это может и ничего так для вменяемых программ, но мне нужна была среда для невменяемых, в частности, чтобы вывод в консоль не буферизировался бы от слова совсем, чтобы если ты делаешь printf, то ты получаешь вывод, без всех этих "странностей" когда ты написал printf("hello world"), встал на бряке, а на экране пусто, и чтобы понять почему, надо понять что такое буферизация и зачем она нужна.
Протокол gdb, как и всё гнутое, сделан тяп-ляп, в том стиле который Эрик Раймонд потом пытался героизировать, в стиле "хакинга", то есть взять сделать костыль который работает в моём случае, а потом по мере выявления новых случаев добавлять костыли до тех пор, пока это возможно. А когда стало невозможно, про все остальные случаи сказать "ненужно".
То есть, при всём при том, что MS скорее всего в любом случае выпилила бы свой собственный протокол, но в данном случае у MS были очень хорошие причины для этого.
Разрабы gdb вроде работали над следующими версиями протокола, и может там они отделили ввод/вывод программы от ввода/вывода отладчика, но я уже не интересовался абсолютно. Это был для меня первый звоночек, что gnu отстой, а столлман позёр.
Интересны у тебя наброс. Сначала описал свои горести, видимо чтобы тебе посочувствовали, хотя хм... скорей всего ты таким образом готовил высер в сторону GNU и Столлмана. Пройдя через грабли можно уже с чистой совестью хамить. Так ведь.
Проблемы негров фермера не волнуют.
>переплевался из-за того, что во всех тех протоколах gdb ты с одного файлового дескриптора читаешь выхлопы программы и gdbЭто необходимо было бы пофиксить, но зачем же систему команд и парсер менять? Что всем теперь новые парсеры и сериализаторы написать и свою систему переделать из-за того, что у M$ NIH-синдром? Все просто забили на этот протокол, из IDE его поддерживают только поделки на основе VSCode. Который не нужен.
Называется это добро gdb/mi (machine interface). Я писал для него клиент. Такого и врагу не пожелаешь.
Наоборот нужно больше. Например, прикрутить реализацию natvis для более структурированной визуализации данных, а не эти питонии костыли в принтерах.
Ну и сам DAP допиливать. А то пацаны из Ghidra говорят, что для нормального системного отладчика там функционала не хватает.
Отлажмваем Модула-2 всем офисом. Полет нормальный.
Не куда вы не летите, только топчетесь на месте.
Никуда. Извините )
Зависть.
На Modula-2 написан код систем космического модуля "Буран". Жаль, не все поймут... ;-)
НПО Решетнёва до сих пор его использует. Только не гццшный.
Компилятор от VAX'a? Т.к., советских спутниках использовался, может, и сейчас используется, ЦПУ 1839ВМ1.
У самурая нет цели только путь.
А какое состояние у Modula-2? Как у Бурана?
Только где он тот Буран...
> Только где он тот Буран...В парке развлечений стоял. Но и оттуда зачем-то убрали. Видимо по принципу "так не доставайся ж ты никому!"
Исходники бы глянуть.
Хорошая попытка, наш китайский друг, но нет.
А на Драконе тогда что написано?
CrewDragon
>На Modula-2 написан код систем космического модуля "Буран". Жаль, не все поймут... ;-)Отчего же, всё как раз понятно...
Быстрее всего ты - очередной мимокрокодил (трепло по простому).
Нам тут неоднократно пели о том что там был Дракон, а ты поёшь не в ногу :-)PS: А Буран всё же жаль. Артефакт исчезнувшей супер-цивилизации итить .... :(
>А Буран всё же жаль. Артефакт исчезнувшей супер-цивилизации итить .... :(Наоборот же. Списали оверзатратный проект раньше конкурентов. "Шаттлы" же тоже закрыли, только при этом похоронив в них кучу денег.
Настоящий реюз ракет -- это как у владельца Твиттера.
> Наоборот же. Списали оверзатратный проект раньше конкурентов. "Шаттлы" же тоже закрыли,
> только при этом похоронив в них кучу денег.Что, прям похоронив?
В где была бы МКС без шатлов? Как бы притащили на нужную орбиту тот же Рассвет, у которого своих движком нету?
Кто бы отремонтировал Хабл?
Чем бы ты закинули на орбиту больше тысячи тонн грузов, особенно крупногабаритных?
Да получилось дорого, но "я использовал технологии своего времени"> Настоящий реюз ракет -- это как у владельца Твиттера.
Да, вот только во времена шатлов не было такой микроэлектроники, которая бы позволяла провернуть фокус "у нас есть десяток-два движков, и мы будем ими всеми управлять с приемлимой точность".
Попытка Н-1 хорошо показала, насколько это сложно.
Ещё есть графический интерфейс https://cutter.re
А ещё есть Ида про.
К чему здесь упоминать проприетарь?
Потому что это вообще единственная рабочая вещь.
> Потому что это вообще единственная рабочая вещь.Экий даунппей анбшной гидры. И да, иметь дело с IllF*ck'ом - таки хреновая затея.
Не имей дело с ильфаком, имей дело с 6.1.
Оно денюх стоит. Поэтому ненужно
6.1 денег стоит?!
Пф-ф-ф, gdb -tui
А толку то, ретдек всё равно как был говном, так и остался, все продолжают юзать айду + хекс рэйс.
Ну и как? Кто пользовался? Нормально отлаживает?
Показывает позицию в коде программы, значение регистров проца, ячеек памяти (куча/стек/data/bss), ассемблерный вид. А что ещё надо, чтобы понять когда и почему значение переменной изменилось?
Можно дебажить принтами.
> Можно дебажить принтами.Можно. Но если раз в месяц вон та онлайн штука упала и сделала core dump, так несподручно будет. В таком случае проще core dump поковырять в сабже бывает.
> А что ещё надо, чтобы понять когда и почему
> значение переменной изменилось?Для отлова ошибок второго порядка (use-after-free и т.п.) -- аппаратная точка останова на чтение-запись адреса переменной, либо трасировка с остановом по условию (долго). Понимать "че же я там понаписал в исходниках", пошагово отлаживая - так себе идея.
Это когда у тебя огромный монолит. Сейчас модно дробить на более отлаживаемые модули.
Я догадываюсь, что ныне не у всех в моде понимать, что там понаписано в исходниках, глядя на исходники, и проверять это отладочным выводом и тестами. Если же так интересно, что там у меня, то мне отладчик необходим, когда исходников нет. Или когда значение регистров процессора волшебным образом меняется, потому что я не настроил альтернативный стек для обработчика сигналов и при неудачном положении звёзд перезаписывается uc_mcontext - это как раз подпадает под случай "не понял, что написал". Такого рода ошибку ты никак не отладишь, усердно нажимая F5.
Отлаживает нормально, но после OllyDbg и подобного может порвать шаблон или ещё что.
Коллеги, поделитесь успехами. Удалось ли отладить код на Modula-2?
Это же OSC, а главный его плюс: лопата есть - вперед расширять проход самому...