RPM/debuginfo: различия между версиями
м (→Отключение: учтено письмо glebfm@ в devel@) |
Vt (обсуждение | вклад) (обновление информации) |
||
Строка 3: | Строка 3: | ||
== Цель == | == Цель == | ||
Поддержка автоматической генерации подпакетов с дополнительной отладочной информацией<ref>[https://bugzilla.altlinux.org/19707 #19707]</ref>. | Поддержка автоматической генерации подпакетов с дополнительной отладочной информацией<ref>[https://bugzilla.altlinux.org/19707 #19707]</ref>. По использованию см. страницу [[Debuginfo]]. | ||
== Реализация == | == Реализация == | ||
Доступна начиная с 4.0.4-alt100.14<ref>позднее доводилась, к использованию рекомендуется начиная с 4.0.4-alt100.21</ref>. Обучена автоматически проставлять зависимости между подпакетами {{pkg|*-debuginfo}}. | Доступна начиная с 4.0.4-alt100.14<ref>позднее доводилась, к использованию рекомендуется начиная с 4.0.4-alt100.21</ref>. Обучена автоматически проставлять зависимости между подпакетами {{pkg|*-debuginfo}}. | ||
Результаты для Sisyphus и стабильных веток, начиная с t6/p6, складываются в отдельный RPMS.debuginfo. | Результаты для Sisyphus и стабильных веток, начиная с t6/p6, складываются в отдельный компонент <tt>debuginfo</tt> (<tt>RPMS.debuginfo</tt>). | ||
== Использование == | == Использование == | ||
При сборке пакета с помощью {{pkg|rpm-build}} >= 4.0.4-alt100.15 будут автоматически порождаться подпакеты {{pkg|*-debuginfo}}, содержащие {{path|/usr/{lib,src}/debug/ | При сборке пакета с помощью {{pkg|rpm-build}} >= 4.0.4-alt100.15 будут автоматически порождаться подпакеты {{pkg|*-debuginfo}}, содержащие файлы в {{path|/usr/{lib,src}/debug/}}. На x86_64 с ними работает {{pkg|gdb}} >= 7.2-alt1. | ||
В секции <tt>%files</tt> следует избегать обобщений вида | |||
%files | %files | ||
%_libdir/* | %_libdir/* | ||
— | |||
— так как на 32-битных архитектурах, где макрос <tt>%_libdir</tt> равен <tt>/usr/lib</tt>, файлы {{path|/usr/lib/debug/*.debug}} могут попасть в обычный пакет, о чём можно судить по ошибке вида<ref>[http://lists.altlinux.org/pipermail/devel/2011-March/189232.html at@ в devel@]</ref> | |||
ldd: ERROR: /usr/src/tmp/paraview-buildroot/usr/lib/debug/usr/bin/pvserver.debug: trace failed | ldd: ERROR: /usr/src/tmp/paraview-buildroot/usr/lib/debug/usr/bin/pvserver.debug: trace failed | ||
== Диагностика == | |||
Обращайте внимание на сообщения от <tt>debuginfo.brp</tt>! Примеры: | |||
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), вероятно, где-то при компиляции добавилась опция <tt>-s</tt> (в <tt>CFLAGS</tt>, в <tt>install -s</tt>), выполнился <tt>strip</tt>, потерялась опция <tt>-g</tt>. | |||
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: | |||
— обнаружены <tt>not stripped</tt> бинарники (т.е. с секций <tt>.symtab</tt>), но без секций <tt>.debug_*</tt> (или <tt>.zdebug_*</tt>). Это не полная отладочная информация. Причины могут быть те же. | |||
056-debuginfo.brp: Please enable CONFIG_DEBUG_INFO=y in the kernel package! | |||
— Ядро собрано без <tt>CONFIG_DEBUG_INFO=y</tt> из-за этого модули тоже не будут содержать отладочной информации. | |||
056-debuginfo.brp: WARNING: debuginfo without debug sources. | |||
— есть DWARF бинарники (<tt>*.debug</tt> файлы в дереве {{path|/usr/lib/debug}}), но нет соответствующих им исходников (в дереве {{path|/usr/src/debug}}). | |||
== Отключение == | == Отключение == | ||
Отключать отладочную информацию настоятельно '''не рекомендуется''', но если необхоимо, чтобы отладочных данных было меньше или вообще не было можно добавлять в <tt>%optflags -g1</tt> (обычный -g включает -g2), а | |||
для отключения — -g0 (убирания -g из <tt>%optflags</tt> может быть недостаточно, | |||
для отключения | |||
если в проекте принято добавлять свой -g). [https://lists.altlinux.org/pipermail/devel/2019-May/207855.html] | если в проекте принято добавлять свой -g). [https://lists.altlinux.org/pipermail/devel/2019-May/207855.html] | ||
{{note|макрос <tt>%add_debuginfo_skiplist</tt> определяет (не)отделение отладочной информации от ELF-файлов (т.е. при его задействовании она ''останется'' в соответствующих файлах основного пакета)}} | {{note|макрос <tt>%add_debuginfo_skiplist</tt> определяет (не)отделение отладочной информации от ELF-файлов (т.е. при его задействовании она ''останется'' в соответствующих файлах основного пакета)}} | ||
Если | Если {{pkg|*-debuginfo}} нежелательны вообще, отключение [https://lists.altlinux.org/pipermail/devel/2019-May/207852.html производится] посредством глобальной переменной <tt>__find_debuginfo_files</tt>: | ||
%global __find_debuginfo_files %nil | %global __find_debuginfo_files %nil |
Версия от 03:10, 8 февраля 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), вероятно, где-то при компиляции добавилась опция -s (в CFLAGS, в 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]
Если *-debuginfo нежелательны вообще, отключение производится посредством глобальной переменной __find_debuginfo_files:
%global __find_debuginfo_files %nil
См. тж. обсуждение %brp_strip_debug и %brp_strip_none вместо ранее использовавшегося %set_strip_method.
%brp_strip_none %_bindir/*
Примечания
- ↑ #19707
- ↑ позднее доводилась, к использованию рекомендуется начиная с 4.0.4-alt100.21
- ↑ at@ в devel@