libtool замедляет gdb

У меня есть более крупная программа на C ++ с множеством шаблонов, которые я хочу отлаживать. К сожалению, для чтения символов GDB требуется несколько минут.

http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html содержит множество опций для отладки.

Какие варианты вы бы предложили, чтобы сделать GDB быстрее / удобнее.

Обновление: похоже, что замедление вызвано libtool. Если gdb запускается через libtool --mode execute, он работает медленно. Если запускается gdb gdb .libs / foo, это разумно быстро. Есть идеи, почему намного медленнее?

Обновление. Другое предложение было -fvisibility = hidden, см. http://gcc.gnu.org/wiki/Visibility


person arved    schedule 04.03.2014    source источник
comment
Я удивлен индексами GDB (sourceware.org/gdb/onlinedocs/gdb/Index -Files.html) не упоминались? Ваша первая загрузка отладочного символа будет такой же медленной, как обычно, но с помощью команды save gdb-index и некоторого objcopy волшебства вы можете значительно ускорить последующие время загрузки отладочного символа. В вашей сборке после создания двоичного файла с отладочными символами я бы запустил GDB в пакетном режиме, чтобы сгенерировать и включить в него указанный индекс, и предварительно создать быстро загружаемый отлаживаемый двоичный файл. Это особенно полезно включать в машины для сборки.   -  person Iwillnotexist Idonotexist    schedule 05.03.2014


Ответы (1)


Иногда использование -fdebug-types-section может немного ускорить работу. Однако это не гарантируется.

Несколько минут на загрузку ... Интересно, насколько велик этот исполняемый файл. Если бы я был в отчаянии, я мог бы попробовать скомпилировать только выбранные модули с отладочной информацией. Или, возможно, посмотрите, не ошибка ли это gdb. Если он разделен на исполняемый файл и некоторые общие библиотеки, а некоторые части не меняются очень часто, вы также можете изучить возможность использования функции «gdb index» (см. Руководство), чтобы ускорить загрузку debuginfo для этих модулей.

person Tom Tromey    schedule 05.03.2014
comment
-fdebug-types-section не имеет значения. Исполняемый файл - это ca. 18 МБ без обрезки и 3,2 МБ без обрезки. версия gdb - 7.7, я попытаюсь перейти на версию с git, чтобы увидеть, имеет ли это значение - person arved; 05.03.2014
comment
7,7 достаточно новый, поэтому вы, вероятно, не увидите большой разницы. Мне это кажется не таким уж большим, я удивлен, что это занимает несколько минут. - person Tom Tromey; 06.03.2014
comment
Похоже, что медлительность вызвана запуском gdb через libtool --mode execute. (см. Обновление) - person arved; 06.03.2014