Команда разработчиков объявила (http://sourceware.org/gdb/download/ANNOUNCEMENT) о выходе новой версии отладчика GDB 7.2 (http://www.gnu.org/software/gdb/), поддерживающего отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, Objective-C,
Pascal и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc и т.д.) и программных платформах (GNU/Linux, Unix, Microsoft Windows).
Список изменений (http://sourceware.org/cgi-bin/cvsweb.cgi/~checkout~/src/gdb/...):
- Добавлена поддержка языка D;
- Улучшена поддержка C++: реализован режим поиска зависимых аргументов (ADL, Argument Dependent Lookup), улучшены возможности по использованию определенных пользователем операторов и обеспечена поддержка неизменных членов статических классов;
- Улучшена поддержка языка Python: появился доступ к точкам останова, экспортируемым символам, таблицам символов, потокам; добавлена возможность создания G...URL: http://sourceware.org/gdb/download/ANNOUNCEMENT
Новость: http://www.opennet.me/opennews/art.shtml?num=27863
лучше бы над стабильностью поработали. предыдущая версия замучала падать постоянно
Не знаю кто виноват, но у меня с GDB две основные беды - под Linux у меня регулярно систему вешает (не иксы), а под виндами и падает, и тупит, и Code::Blocks не хочет нормально работать...
P.S.: это касательно предыдущих версий GDB
вешает систему?! круто. ни разу такого не было. правда я всегда сам его собираю а не беру из репозиториев
Программа пользователя не может завесить систему, у Вас конкретно что-то не то либо с ядром либо с оборудованием.
>Программа пользователя не может завесить систему, у Вас конкретно что-то не то
>либо с ядром либо с оборудованием.Я догадываюсь, но только происходит ЭТО почему-то именно при попытках дебаггинга (не постоянно конечно). Без GDB программа НИ РАЗУ не приводила систему к зависанию. Смею предположить что GDB пытается приостановить работу модуля ядра видеокарты, когда он лажает :P.
>>Программа пользователя не может завесить систему, у Вас конкретно что-то не то
>>либо с ядром либо с оборудованием.
>
>Я догадываюсь, но только происходит ЭТО почему-то именно при попытках дебаггинга (не
>постоянно конечно). Без GDB программа НИ РАЗУ не приводила систему к
>зависанию. Смею предположить что GDB пытается приостановить работу модуля ядра видеокарты,
>когда он лажает :P.а из сетки залогиниться и /etc/init.d/gdm restart не судьба?
>>>Программа пользователя не может завесить систему, у Вас конкретно что-то не то
>>>либо с ядром либо с оборудованием.
>>
>>Я догадываюсь, но только происходит ЭТО почему-то именно при попытках дебаггинга (не
>>постоянно конечно). Без GDB программа НИ РАЗУ не приводила систему к
>>зависанию. Смею предположить что GDB пытается приостановить работу модуля ядра видеокарты,
>>когда он лажает :P.
>
>а из сетки залогиниться и /etc/init.d/gdm restart не судьба?Нет не судьба, лишних рабочих станций у меня под рукой нету. Кстати клавиши переключения консолей перестают работать.
alt+sysrq+K ?
>alt+sysrq+K ?Надо будет попробовать... В любом случае это не поможет дебаггингу ;).
если дебажить, выясняя вывал программы - проще использовать команду backtrace, а не брекпоинты. может поэтому никаких странностей у меня с gdb не было.
>если дебажить, выясняя вывал программы - проще использовать команду backtrace, а не
>брекпоинты. может поэтому никаких странностей у меня с gdb не было.
>Я предпочитаю графическую среду программирования и использую мультиплатформенный Code::Blocks. Интерфес привязки к дебаггеру у него к сожалению не ахти, но backtrace, локальные переменные и прочее добро (иногда приходиться просить) он показывать умеет ;).
Breakpoin'ы полезны когда дебажишь вывал шаг за шагом в известной окрестности, а когда падает непойми где - ставить их попросту некуда (соответственно вся надежда как раз на backtrace).
дебажить через gui можеть быть чревато боком. ;) тем более, если речь идет об отладке на уровне графики. в одних случаях я просто отлавливаю входные параметры и промежуточные результаты, выдачей в текстовом виде: сначала локализировав проблематичный участок. несколько сложных случаях, или когда времени очень - бэктрейс. эти два метода помогают в 100% моих случаев, в том числе - отлавливать баги в классах Qt. ну это так, из личного опыта. он, конечно же, не может быть всегда применен у других.
>дебажить через gui можеть быть чревато боком. ;) тем более, если речь
>идет об отладке на уровне графики. в одних случаях я просто
>отлавливаю входные параметры и промежуточные результаты, выдачей в текстовом виде: сначала
>локализировав проблематичный участок. несколько сложных случаях, или когда времени очень -
>бэктрейс. эти два метода помогают в 100% моих случаев, в том
>числе - отлавливать баги в классах Qt. ну это так, из
>личного опыта. он, конечно же, не может быть всегда применен у
>других.Когда проблемы возникают 'на стороне' или при использовании стороннего софта, тебе уже всё равно каким дебаггером пользоваться и в каком режиме его заряжать - лишь бы откопать хотя бы тоооненькую веточку, ведущую к корню проблемы, в куче непонятных тебе системных вызовов...
А если говорить о графике - то моя графика OpenGL 2.0 и GLSL и никакой GDB не поможет тебе найти причины проблем с визуализацией ;).
Вобщем каждый дебажит как может, во многих случаях лучше std::cerr ничего не найти :P. Иной раз хочется похвалить дебаггер в Visual Studio, если бы эта дрянь не теряла регулярно backtrace после exception'ов. И ищешь потом бог знает сколько, где же этот эксепшен вывалился...
вполне себе. как раз, когда я писал свой курсовик с экспортированными моделями из 3DSMax, обходилось все профайлером и текстовой выдачей. была это версия 1.3 OpenGL
> Смею предположить что GDB пытается приостановить работу модуля ядра видеокарты, когда он лажает :P.У gdb нет таких прав, он не может «войти» в ядро. Или Вы ядро пытаетесь отлаживать? Тогда для этого в любом случае нужно два компьютера, управляющий и отлаживаемый.
>> Смею предположить что GDB пытается приостановить работу модуля ядра видеокарты, когда он лажает :P.
>
>У gdb нет таких прав, он не может «войти» в ядро. Или
>Вы ядро пытаетесь отлаживать? Тогда для этого в любом случае нужно
>два компьютера, управляющий и отлаживаемый.Отлаживаю я обычное OpenGL приложение. Намучился я уже с ошибками Xlib - долго пытался понять, то ли я что-то не так делаю, то ли OpenGL-драйверы, то ли Xorg... А всего делов то - пытаюсь менять параметры окна на декорирование/без, да менять его позицию/размеры соответствующим образом.
Ан нет, в Xlib всё не так просто - позиция окна не слушается, и до кучи время от времени кидает ошибки X-сов, которые если не перехватывать вообще вырубают приложение (а если перехватывать, то в большинстве случаев прилолжение нормально работает). Прияём количество и частота этих ошибок магическим образом зависит от драйвера видеокарты и его версии...
> Не знаю кто виноват, но у меня с GDB две основные беды - под Linux у меня регулярно систему вешает (не иксы),Если вы не дебажите ядро - тогда по идее это у вас с системой проблема какая-то?! Или какого хрена пользовательский процесс что-то там вешает вообще? Это похоже на баг системы для начала.
> а под виндами и падает, и тупит,
А под виндами работать с гнутыми утилитами конечно можно но это почему-то напоминает удаление гланд через зад автогеном.
>> Не знаю кто виноват, но у меня с GDB две основные беды - под Linux у меня регулярно систему вешает (не иксы),
>Если вы не дебажите ядро - тогда по идее это у вас
>с системой проблема какая-то?! Или какого хрена пользовательский процесс что-то там
>вешает вообще? Это похоже на баг системы для начала.Чем бросать предположения, прочитали бы сначала другие вопросы/ответы. Разумеется я дебажу не ядро, а то что пользовательские процессы при багах в ядре могут творить чудеса - дело итак ясное.
>> а под виндами и падает, и тупит,
>А под виндами работать с гнутыми утилитами конечно можно но это почему-то
>напоминает удаление гланд через зад автогеном.А может быть вы ещё и знаете как собрать FFmpeg без GNU'шных утилит???
> режим поиска зависимых аргументов (ADL, Argument Dependent Lookup)М.б., "аргументо-зависимый поиск"?
Порекомендуйте нормальный графический фрондэнд, pls. Раньше использовал DDD, но он уже давно не развивается.
Nemiver