Используете стандартные символы отладки библиотеки C ++? Ubuntu / Linux / libstdc ++ 6-8-dbg? - PullRequest
1 голос
/ 17 апреля 2019

В Ubuntu Linux есть пакет libstdc++6-8-dbg (последняя версия на момент написания).

Это описывается как:

Стандартная библиотека GNU C ++ v3 (файлы отладки) Этот пакет содержит общую библиотеку libstdc ++, скомпилированную с символы отладки.

Среди прочего он содержит следующие файлы:

/usr/lib/x86_64-linux-gnu/debug/libstdc++.a
/usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6.0.25
/usr/lib/x86_64-linux-gnu/debug/libstdc++fs.a

Обычно для компиляции программы C ++ (с единичным переводом) с помощью gcc вы можете написать:

$ g++ myprogram.cc

Чтобы добавить генерацию отладочных символов кода пользователя, вы передаете -g:

$ g++ -g myprogram.cc

Но это не относится к отладочным версиям стандартной библиотеки.

Какие дополнительные опции вам нужно передать g++, чтобы указать ему использовать отладочные версии стандартной библиотеки, предоставляемой libstdc++6-8-dbg?

1 Ответ

0 голосов
/ 17 апреля 2019

GDB автоматически считывает символы отладки после установки пакета.Вам не нужно компилировать вашу программу по-другому.

Если вы хотите, чтобы ваша программа загружала отладочную версию, лучше всего настроитьПуть поиска в библиотеке.Вы можете сделать это, установив LD_LIBRARY_PATH временно:

$ LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/debug/ ldd test
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6 (0x00007efcef670000)
        ...

Или навсегда:

$ export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/debug/
$ ldd test
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6 (0x00007efcef670000)
        ...

Или вы можете сделать это общесистемным изменением.Вы можете сделать это в Ubuntu, добавив запись конфигурации в /etc/ld.so.conf.d/ и запустив ldconfig для обновления кэша.

$ sudoedit /etc/ld.so.conf.d/debug.conf
$ cat /etc/ld.so.conf.d/debug.conf
/usr/lib/x86_64-linux-gnu/debug
$ sudo ldconfig
$ ldd test
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6 (0x00007f3aced53000)
        ...

Файлы конфигурации ищутся в алфавитном порядке, поэтому просто убедитесь, что вы пишете (debug.conf выше) приходит раньше, чем значение по умолчанию (x86_64-linux-gnu.conf в моей системе).

...