Объявлено (https://sourceware.org/ml/gdb-announce/2014/msg00001.html) о выходе новой версии отладчика GDB 7.7 (http://www.gnu.org/software/gdb/), поддерживающего отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, Objective-C, Pascal, Go и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc и т.д.) и программных платформах (GNU/Linux, Unix, Windows).Ключевые улучшения:
- Поддержка платформ Nios II ELF (nios2*-*-elf), Nios II GNU/Linux (nios2*-*-linux) и Texas Instruments MSP430 (msp430*-*-elf);
- Для C++ реализована поддержка оператора 'typeid' и возможность фильтрации по типу исключений при установке catchpoint (https://sourceware.org/gdb/onlinedocs/gdb/Set-Catchpoints.html) (catch exception);
- Улучшение поддержки средств для создания вспомогательных скриптов на языке Python: поддержка временных точек остановка, фильтров и декораторов фреймов (frame), возможность линейного представления таблиц, новый атрибут 'parent_type' для объектов gdb.Field и 'name' для gdb.Type;
- Новые команды:
- show configuration
- catch rethrow
- info exceptions [REGEXP]
- remove-symbol-file [FILENAME | -a ADDRESS]
- maint check-psymtabs
- maint check-symtabs
- maint expand-symtabs
- maint set|show per-command [space | time | symtab]
- Новые опции:- set|show debug symfile off|on
- set|show print raw frame-arguments
- set|show remote trace-status-packet
- set|show debug nios2
- set|show range-stepping
- set|show startup-with-shell
- set|show code-cache
- Новые вспомогательные переменные: $_exception, $_exitsignal и
$_isvoid;
- Улучшение программного интерфейса управления GDB/MI (https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html):
- Новые команды: "-catch-assert", "-catch-exceptions", "-info-ada-exceptions", "-info-gdb-mi-command", "-dprintf-insert", "-trace-frame-collected", "-trace-save CTF"; - Для всех команд добавлена опция "--language"; - Для команд "-data-list-register-values", "-stack-list-locals", "-stack-list-arguments" и "-stack-list-variables" добавлена поддержка опции"--skip-unavailable"; - В команду "-exec-run" добавлена опция "--start";
- Поддержка очистки стека (unwinding) на платформе Windows x64;
- Поддержка контрольных вызовов SystemTap SDT для архитектуры AArch64 GNU/Linux;
- В команду 'tsave' добавлена поддержка формата CTF (Common Trace Format);
- Добавлены новые скрипты gcore (создание core dump для работающего процесса без его остановки) и contrib/gdb-add-index.sh (добавление секции .gdb_index в исполняемые файлы);- Для платформ arm*-linux улучшена поддержка записи и повторного выполнения операций (record/replay);
- Удалена поддержка устаревших конфигураций NetBSD и OpenBSD с форматом a.out (поддержка ELF сохранена в полном объёме);
- Команда "set|show remotebaud" объявлена устаревшей, вместо неё следует использовать "show|show serial baud".URL: https://sourceware.org/ml/gdb-announce/2014/msg00001.html
Новость: http://www.opennet.me/opennews/art.shtml?num=39029
Удивительно, пользуюсь регулярно им уже лет 5-7, но за версиями не следил никогда.
Пока мне эта новость на глаза не попалась я и не знал, что он там уже 7.x
Вот что значит "просто работает"
Вот что значит, пользуешься только чтобы bt из корки забрать.
Нет, это значит что я не использую его напрямую, а через интерфейс, предоставляемый IDE.
Очень удобно, кстати.
это значит, что им практически не пользуешься
А ещё я вместо Генту Дебиан использую.
Я безнадёжен, да?
Активное использование отладчика - плохой признак.
если разбираться с чужим кодом - вполне даже. но для своего кода частое использование отладчика означает недопонимание своего же алгоритма, это да.
Бывают простые и понятные алгоритмы, конкретный рантайм которых в голову тупо не влезает.
Например, при небольшой оптимизации перебора с отходом назад прокрутить изменения в голове решительно невозможно, нужно смотреть, как "пропускаются повороты" в конкретных ситуациях.
как ни странно, мне именно в таких случаях помогает выдача в ключевых местах значений переменных, или структур. не обязательно их там центнерами выдавать в консоль, или в файл.
Просто для понимания всей картины рантайма требовалось довольно много данных, а для понимания, нужно ли сейчас эту картину вообще анализировать - немного. При этом повторяемость у алгоритма отсутствует в моем случае. Проще было работать с отладчиком, чем с простынями логов.
зависит от задачи, это да. простыни стараюсь не делать, только несколько примеров данных, т.к. быстро заблудиться можно и вообще нихрена не понять.
или вот интересно бывает, когда и сколько раз создаётся объект и сколько раз уничтожается. можно брекпоинт поставить конечно и ручками дальше, а можно и выдавать сообщение при запуске, или счётчик использовать. можно и valgrind'ом пройтись.
комбинировать надо, конечно. ни то, ни другое не является универсальным решением. кому как быстрее и эффективнее.
Кстати, какие удобные IDE для gdb можете посоветовать или какие-либо там надстройки для отладки в целом ? а то толком им не пользовался, но возможностей у него хватает..)
Я сишник-плюсовик, поэтому QtCreator "наше всё"...
А в отрыве от IDE всё грустно и ничем не лучше консольного варианта -- те интерфейсы, которые я видел, выглядели приветом из 90х.
И не потому, что дизайн такой, а потому, что они и есть родом из 90х.
emacs
Я использую cgdb.
Написан на ncurses, не требует X-ов.
Наиболее полнофункциональной считается Eclipse с CDT, но имейте в виду, что она на Java
gdb --tui
> Кстати, какие удобные IDE для gdb можете посоветовать или какие-либо там надстройки
> для отладки в целом ? а то толком им не пользовался,
> но возможностей у него хватает..)таки cgdb, как сказали выше. не без неудобств (подпилить которые у меня всё руки не доходят), но в итоге у тебя лучшее из обоих миров: и более-менее удобно бегать по коду, и вся мощь командной строки gdb под рукой.
я люблю использовать printf, cout, qDebug для отладки. до gdb с backtrace дело доходит редко, да и то, когда время сильно уж поджимает, или искать не очень хочется - использую. такие дела.
Вот если разок потратить время и научится этим пользоваться без всяких printf'ов, то здорово сэкономит время.
до вывалов программы дело доходит редко из-за прелюдий с printf'ами. меня это чаще заставляет думать заранее, как избежать аварийной ситуации. хотя, подходы у разных людей разные. gdb тоже позволяет распечатывать содержимое переменных и прочие интересности, но если выкрашивается релизная версия, без дебуг-инфы, что тогда?
Принтфы - поход в ядро (контекст меняют), а это значит, что есть влияние на многопоточность, что не всегда приемлемо.
Виноват, не увидел коммент в соседней ветке (ниже).
ну я же не писал, что printf - таблетка от всего ;) да и поток букаф из программы парсить - можно вспотеть. без фанатизма использую. ровно как и gdb. стараюсь избегать экстремальное программирование. конечно, от программиста зависит, какой метод лучше использовать в поиске ошибок, или стараться заранее исключить большинство критических ситуаций.
> Вот если разок потратить время и научится этим пользоваться без всяких printf'ов,
> то здорово сэкономит время.очень хорошо экономят время нормально написаные алгоритмы, грамотные логи, проверка соблюдения контрактов, регулярное использование valgrind и другие очевидные вещи. в большинстве случаев необходимость ползать в отладчике обозначает, что с кодом что-то не так на фундаментальном уровне.
ещё, кстати, круто рулят вещи типа командной консоли. или библиотеки — к сожалению, забыл название, — которая позволяет присоединиться к работающей софтине так, как будто это sql-сервер и простыми запросами смотреть на то, что внутри программы происходит. данная конкретная библиотека эмулировала postgres на уровне, достаточном, чтобы консольной постгресовской тулзой можно было подключаться.
> Вот что значит, пользуешься только чтобы bt из корки забрать.Как-то так. В асинхронных программах только это и остается. В ядрах и этого часто нет. А в линейных программах не очень и нужно.
Согласен. Не пользуюсь практически ничем из обозначенных нововведений. Использую от силы команд 5-10 и то в сокращенном до одной буквы виде. А код пишу в mcedit/far.
С одной стороны - гордиться нечем (собственно, я и сам такой), с другой - таки большее нужно, похоже, только узкому кругу. Но очень радует, что если понадобится - этот инструментарий под рукой.
edb есть
edb, кажется, не умеет source layout, только асм.
Ubuntu 12.04.4 вышла
Сообщи когда вернется
> Ubuntu 12.04.4 вышлаfglrx у одного меня сдох?
Там иксы до 0.15 случаем не обновили?
> Там иксы до 0.15 случаем не обновили?fglrx для xorg-server 1.15 уже дней десять как есть.
А, вы - тот единственный из обладателей Радеонов, кто еще не знает принципа "не обновляй Убунту сразу после анонса"?
Я, признаться, глянул на список обновленного и не нашел, зачем мне вообще обновляться.
> А, вы - тот единственный из обладателей Радеонов, кто еще не знает
> принципа "не обновляй Убунту сразу после анонса"?
> Я, признаться, глянул на список обновленного и не нашел, зачем мне вообще
> обновляться.Возможно. С прошлыми обновлениями всё нормально проходило, скажем так.
>Для C++ реализована поддержка оператора 'typeid'О, RTTI из каропки.
Здорово.
Valve развивает LLDB,GDB R.I.P
> GDB R.I.PА вот и putty.exe'шники подползли...
Конечно рип, кто ж спорит, только думаю твой раньше настанет, такими темпами, ггг
у фанатиков, как правило, наблюдается
brain R.I.P.
Ждйм lldb. gdb всегда можно было пользоваться только от безысходности.
> Ждйм lldb.ждйте, ждйте.