Я пытаюсь выяснить, почему GDB ведет себя не так, как ожидалось.Не уверен, что вызвало это.Увидев эту проблему, я написал минимальную версию основной функции.Он закончил последнюю строку и вышел правильно.После добавления еще одной функции, прыжки вернулись.Даже после комментирования добавленной строки переход назад не исчезает.
Я не уверен, что это связано со ссылками на мою собственную библиотеку, даже после комментирования большей части кода (ни одна строка не ссылается на мойсобственной библиотеки), в процессе сборки все еще используется ссылка (automake):
LDADD = ../libmyown.la
Эта строка использовалась для добавления библиотек ко многим другим программам, встроенным в этот каталог.Я тестировал разные версии GDB и GCC, последняя версия 8.2 для обеих программ.Использовали опцию -g -O0, -ggdb -O0.Я видел сообщения в Stackoverflow об этом типе поведения.Не уверен, что у меня такое поведение, или это была какая-то ошибка в моей собственной библиотеке, чьи ссылки вызвали такое поведение.Хотя эта публикация представляется излишней, но я пытаюсь предоставить больше контекстной информации.Надеюсь, что некоторые из меня найдут решение и помогут другим.
За исключением проблемы с переходом в gdb, двоичная программа выполняется правильно.
Вот несколько расширенная версия основного кода, демонстрирующая проблему с переходом:
Breakpoint 1, main (argc=1, argv=0x7fffffffdeb8) at alnlocalmany.cpp:66
66 if (isDNA(reffile)) {
(gdb) n
67 alignDNAMany(reffile, dbfile, outfile);
(gdb)
68 return 0;
(gdb) s
39 string reffile, dbfile, outfile;
(gdb) s
73 }
(gdb) s
0x00007ffff6d97b97 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) s
Single stepping until exit from function __libc_start_main,
which has no line number information.
[Inferior 1 (process 15621) exited normally]
Примечаниеон прыгает с 68 до 39 (первая строка в основном), затем 73 (заканчивающийся фигурной скобкой основного)