RPM/debuginfo: различия между версиями

Материал из ALT Linux Wiki
< RPM
Нет описания правки
Строка 65: Строка 65:
== Примечания ==
== Примечания ==
<references/>
<references/>
[[Категория:Отладка]]

Версия от 15:41, 9 октября 2021


Цель

Поддержка автоматической генерации подпакетов с дополнительной отладочной информацией[1]. По использованию см. страницу Debuginfo.

Реализация

Доступна начиная с 4.0.4-alt100.14[2]. Обучена автоматически проставлять зависимости между подпакетами *-debuginfo.

Результаты для Sisyphus и стабильных веток, начиная с t6/p6, складываются в отдельный компонент debuginfo (RPMS.debuginfo).

Использование

При сборке пакета с помощью rpm-build >= 4.0.4-alt100.15 будут автоматически порождаться подпакеты *-debuginfo, содержащие файлы в /usr/{lib,src}/debug/. На x86_64 с ними работает gdb >= 7.2-alt1.

В секции %files следует избегать обобщений вида

%files 
%_libdir/*

— так как на 32-битных архитектурах, где макрос %_libdir равен /usr/lib, файлы /usr/lib/debug/*.debug могут попасть в обычный пакет, о чём можно судить по ошибке вида[3]

ldd: ERROR: /usr/src/tmp/paraview-buildroot/usr/lib/debug/usr/bin/pvserver.debug: trace failed

Диагностика

Обращайте внимание на сообщения от debuginfo.brp! Примеры:

056-debuginfo.brp: WARNING: You have 3 stripped ELF objects. Please compile with debugging information!
056-debuginfo.brp: WARNING: An excerpt from the list of affected files follows:

— обнаружены ELF бинарники без отладочной информации (stripped), вероятно, где-то при компиляции добавилась опция -sCFLAGS, в install -s), выполнился strip, потерялась опция -g.

056-debuginfo.brp: WARNING: 9 non-stripped binaries don't contain .debug sections making -debuginfo
056-debuginfo.brp: WARNING: package less relevant. An excerpt from the list of affected files follows:

— обнаружены not stripped бинарники (т.е. с секций .symtab), но без секций .debug_* (или .zdebug_*). Это не полная отладочная информация. Причины могут быть те же.

056-debuginfo.brp: Please enable CONFIG_DEBUG_INFO=y in the kernel package!

— ядро собрано без CONFIG_DEBUG_INFO=y из-за этого модули тоже не будут содержать отладочной информации.

056-debuginfo.brp: WARNING: debuginfo without debug sources.

— есть DWARF бинарники (*.debug файлы в дереве /usr/lib/debug), но нет соответствующих им исходников (в дереве /usr/src/debug).

Отключение

Отключать отладочную информацию настоятельно не рекомендуется, но если необхоимо, чтобы отладочных данных было меньше или вообще не было можно добавлять в %optflags -g1 (обычный -g включает -g2), а для отключения — -g0 (убирания -g из %optflags может быть недостаточно, если в проекте принято добавлять свой -g). [1]

Примечание: макрос %add_debuginfo_skiplist определяет (не)отделение отладочной информации от ELF-файлов (т.е. при его задействовании она останется в соответствующих файлах основного пакета)


Если *-debuginfo нежелательны вообще, отключение производится посредством глобальной переменной __find_debuginfo_files:

%global __find_debuginfo_files %nil

См. тж. обсуждение %brp_strip_debug и %brp_strip_none вместо ранее использовавшегося %set_strip_method.

%brp_strip_none %_bindir/*

Примечания

  1. #19707
  2. позднее доводилась, к использованию рекомендуется начиная с 4.0.4-alt100.21
  3. at@ в devel@