LINUX.ORG.RU

Правильное использование связки GCC + GDB


0

0

Драсте!

Кто-нибудь может мне разъяснить ситуацию:

Компилирование проходит без всяких оптимизаций, но при отладки GDB не переходит на некоторые строки... то есть, не как обычно при оптимизации - пропуск простецких инструкций типа:

int b = 1;

a = b + 2;

а пропуск целых вызовов. Уточню: допустим имеется код:

1 int main () {

2 class_foo t;

3 t.foo ();

4 return 0;

5 }

...

6 void foo () {

7 this->init ();

8 this->read_file ();

9 this->boo ();

10 }

...

Код с foo () {...} содержится в динамической библиотеке (хотя, я думаю, это не важно), а main, естественно в приложении использующем эту либу.

Допустим, я ставлю брекпойнт на строку 7, запускаю gdb, делаю run и жду. На этой строке отладчик останавливается и дальше, когда я делаю next или step и until, отладчик не переходит на 8ю строку, а просто напросто продолжает выполнение программы до конца (то есть, выполняет return 0 в итоге (что, надо сказать жутко раздражает)). Хочу заметить, что методы read_file и boo нетривиальные и не inline, оптимизация не используется.

Итак, вопрос: Что я не так делаю. Может нужно при компиляции с помощью g++ подключать какие-нибудь флаги?

мне хвататло -ggdb -O0 . Может, твоя система сборки не так собирает? И ты не путаешь next со step? :)

true_admin ★★★★★
()

> Код с foo () {...} содержится в динамической библиотеке (хотя, я думаю, это не важно)

если динамическая либа не содержит debug символов, то важно.

anonymous
()
Ответ на: комментарий от dont

Нет, всё собрано с отладочной информацией. Сейчас заметил ещё одну особенность - по next, until и step всё работает нормально, однако брэкпойнты в библиотеке пропускаются, что нельзя сказать про исполняемы файл!

no_NaMe
() автор топика
Ответ на: комментарий от true_admin

> мне хвататло -ggdb -O0 . Может, твоя система сборки не так собирает? И ты не путаешь next со step? :)

Неа, не путаю :) -ggdb... хммм надо попробовать. Я пишу мэйкфайлы сам.

no_NaMe
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.