Отладка в GDB (пошаговая отладка)

IDE, VCS и прочее

Модератор: Модераторы разделов

Аватара пользователя
Mahoney
Сообщения: 200
ОС: Fedora

Отладка в GDB

Сообщение Mahoney »

Использую KDevelop как граф. среду. В качестве отладчика - стандартно GDB.
Есть проблема: при пошаговой отладке кода при нажатии <F10> (Step Over) при прохождении сложных объектов (объектов классов например) отладчик "ныряет" внутрь конструкторов, inline-функций и прочее. По логике вещей (как я привык в MS VS) когда я даю команду Step Over, отладчик должен выполнить текущую строку целиком (независимо от того, что под ней скрывается) и перейти на следующую строчку. Если мне нужны "внутренности", я скажу Step Into. А тут получается, что нет разницы между Step Over и Step Into. :(
Как бы настроить Step Over в KDevelop (gdb) на такое поведение? А то отладка простейшего кода превращается в ад. Плюс открывается уйма ненужных файлов с "внутренностями" Qt и проч. Закрывай их потом...
I code, therefore I am...
Спасибо сказали:
grub
Сообщения: 128
ОС: Slackware 12.0

Re: Отладка в GDB

Сообщение grub »

Mahoney писал(а):
03.09.2007 20:56
Использую KDevelop как граф. среду. В качестве отладчика - стандартно GDB.
Есть проблема: при пошаговой отладке кода при нажатии <F10> (Step Over) при прохождении сложных объектов (объектов классов например) отладчик "ныряет" внутрь конструкторов, inline-функций и прочее. По логике вещей (как я привык в MS VS) когда я даю команду Step Over, отладчик должен выполнить текущую строку целиком (независимо от того, что под ней скрывается) и перейти на следующую строчку. Если мне нужны "внутренности", я скажу Step Into. А тут получается, что нет разницы между Step Over и Step Into. :(
Как бы настроить Step Over в KDevelop (gdb) на такое поведение? А то отладка простейшего кода превращается в ад. Плюс открывается уйма ненужных файлов с "внутренностями" Qt и проч. Закрывай их потом...


вот в KDevelop я обычно тыкаю кнопочки мышкой и они всегда работали как надо. А непосредственно в gdb это команды step и next...
Спасибо сказали:
Аватара пользователя
Mahoney
Сообщения: 200
ОС: Fedora

Re: Отладка в GDB

Сообщение Mahoney »

grub писал(а):
04.09.2007 16:33
вот в KDevelop я обычно тыкаю кнопочки мышкой и они всегда работали как надо. А непосредственно в gdb это команды step и next...

Только что попробовал кнопочками - сразу оказался в конструкторе QString. Нафига он мне, если я Step Over жал?
I code, therefore I am...
Спасибо сказали:
dronord
Сообщения: 40
ОС: slackware

Re: Отладка в GDB

Сообщение dronord »

Попробуй в консоли эти же вещи.
KDevelop какой версии?
Спасибо сказали:
Аватара пользователя
Mahoney
Сообщения: 200
ОС: Fedora

Re: Отладка в GDB

Сообщение Mahoney »

dronord писал(а):
07.09.2007 17:41
Попробуй в консоли эти же вещи.
KDevelop какой версии?

KDevelop версии 3.4.1. В консоли - та же петрушка. Это фича gdb по ходу...
Ещё вопрос: как собрать debug-версию проги? Что-то в настройках проекта ничего не нашёл. Есть подозрение, что в этом дело...
I code, therefore I am...
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Отладка в GDB

Сообщение Denjs »

гм... если она у тебя отлаживается - значит она уже debug версия... по моему так...

_________________________________________
ЗЫ1: отлаживать в KDevelop или QDevelop так и не получилось... - ругается ("Failed to read a valid object file image from memory"
сейчас в тестовом режиме осваиваю kdbg... - пока заморочек с F10 не заметил...
(UPD: в QDevelop исправилось.. как и почему не понятно... вроде пути указал в натсройках проекта(?!)..
но суть не в том - все же kdbg удобнее в отладке чем QDevelop... (!) но ему(kdbg) бы редактор нормальный и дерево классов...^^)
_________________________________________
ЗЫ2: и по ходу вопрос - чем отличается "step over F10" и "step over by instruction Shift+F10"? в kdbg ? я пока не нашел разницы...
_________________________________________
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Mahoney
Сообщения: 200
ОС: Fedora

Re: Отладка в GDB

Сообщение Mahoney »

Denjs писал(а):
08.09.2007 02:27
гм... если она у тебя отлаживается - значит она уже debug версия... по моему так...

Не думаю. Вместо значений наблюдаемых переменных часто вижу надпись "value optimized away". Плюс иногда переход по строкам случается в странном порядке. В MSVC++ такое случалось как раз при попытке отлаживать release-версию.

Denjs писал(а):
08.09.2007 02:27
сейчас в тестовом режиме осваиваю kdbg... - пока заморочек с F10 не заметил...

Я пробовал KDbg и пришёл к выводу, что это тоже самое, что и отладчик в KDevelop. Просто оформлен как отдельная прога :)
I code, therefore I am...
Спасибо сказали:
dronord
Сообщения: 40
ОС: slackware

Re: Отладка в GDB

Сообщение dronord »

Доподлинно названия контролов не помню, но переключение debug-release было простым.
Можешь указать флаг компиляции "-g", получишь бинарь с отладочной информацией.
Спасибо сказали:
grub
Сообщения: 128
ОС: Slackware 12.0

Re: Отладка в GDB

Сообщение grub »

а когда проек собирается там есть дефайн NO_QT_DEBUG или что-то вэтом роде?

Mahoney писал(а):
08.09.2007 20:25
Не думаю. Вместо значений наблюдаемых переменных часто вижу надпись "value optimized away". Плюс иногда переход по строкам случается в странном порядке. В MSVC++ такое случалось как раз при попытке отлаживать release-версию.


В руководстве к gdb эта ситуация описана. Твоя программа собирается с опциями -g -O. Первая говорит о том что нужно оставлять отладочную информацию, вторая - надо оптимизировать код. "value optimized away" и "ереход по строкам случается в странном порядке" изза последнего флага. Убери его, если не нравится)
Спасибо сказали: