Нужно ли устанавливать пакеты с символами отладки для использования Valgrind на моем C -компилированном исполняемом файле? - PullRequest
0 голосов
/ 29 февраля 2020

Я нахожусь в классе системного программирования, и тестовый драйвер на основе python для одного из наших назначений должен запускать Valgrind на C скомпилированном исполняемом файле.

Я пытаюсь положил Valgrind на мой ноутбук. Я использую Ubuntu 18.04.4 LTS. Я читал, хотя Ubuntu wiki и на странице в Valgrind сказано, что «есть пакеты с установленными символами отладки». Я проверил страницу , на которую они ссылаются , и до сих пор не знаю, какие пакеты мне нужно установить с символами отладки.

Я читал ответы на некоторые переполнения стека и в этом упоминается, что «Valgrind легко может использоваться для кода C / C ++, но может даже использоваться для других языков при настройке». Руководство по быстрому запуску Valgrind также не содержит предупреждений о символах отладки. Он просто говорит об использовании флага -g при компиляции.

Применяется ли предупреждение вики Ubuntu о символах отладки только к другим программам, которые не скомпилированы из C?

1 Ответ

1 голос
/ 01 марта 2020

Вики говорит о любых библиотеках, с которыми связан ваш код. Чтобы анализировать следы от valgrind, полезно связать с этими библиотеками отладочные версии. Что это за библиотеки, зависит только от вашего приложения.

Представьте, что вы разрабатываете какое-то приложение. Затем вы хотите отследить утечку памяти или ошибку сегментации. Итак, вы запускаете свою скомпилированную программу под valgrind. Вы компилируете свою программу с флагом -g, чтобы получать хорошие сообщения от valgrind, когда она выводит следы выделений из стека. Благодаря этому флагу вы видите больше информации в трассировке стека, например, точные имена функций закодированных вами функций.

Что говорит вики. В нем говорится о любых библиотеках, с которыми связан ваш код. Например, вы связываетесь с boost Stacktraces также может включать вызовы функций из boost . Чтобы в трассировке стека также было больше отладочной информации об именах функций из boost , вам нужно связать с boost , скомпилированным с символами отладки.

То, что вы нашли в вики, это совет, что если вы связываетесь, например, с какой-то библиотекой из xserver-xorg-core, то вам также может быть полезно установить xserver-xorg-core-dbg, связать ее и запустить такое связанное приложение под valgrind. Тогда ваши трассировки стека будут выглядеть лучше даже в тех частях, которые вы не закодировали, а использовали только из библиотек, предоставленных xserver-xorg-core(-dbg). Вот и все.

На странице, на которую они ссылаются, написано:

Если вы хотите отладить cra sh из приложения, предоставленного Ubuntu, вы разрабатываете сами, предоставленные третьей стороной. -party или очень часто нуждаются в символах отладки для определенных библиотек, полезно установить соответствующие пакеты отладки.

Для многих, но не для всех пакетов, можно просто добавить суффикс -dbg к имени пакета, чтобы установить его. Например:

sudo apt-get install xserver-xorg-core-dbg

Это означает то же самое, что я написал. Я просто попытался уточнить подробнее.

...