Драсте!
Кто-нибудь может мне разъяснить ситуацию:
Компилирование проходит без всяких оптимизаций, но при отладки 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++ подключать какие-нибудь флаги?