Debuginfo: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
м (чуть причесал, добавил ссылку на RPM/debuginfo)
Строка 1: Строка 1:
= debuginfo пакеты =
{{DISPLAYTITLE:debuginfo}}


Для отладки или получения информативной трассировки стека (stack trace) необходима отладочная информация ([https://en.wikipedia.org/wiki/DWARF DWARF]). В Альте™ отладочная информация отделена от основных пакетов в <tt>debuginfo</tt> пакеты. Для установки пакетов с отладочной информацией ''к нужному вам приложению'' необходимо добавить ''компонент'' <tt>debuginfo</tt> в <tt>/etc/apt/sources.list</tt>. Пример для Сизифа на x86_64:
= отладочные пакеты =
 
Для отладки или получения информативной трассировки стека (stack trace) необходима отладочная информация ([https://en.wikipedia.org/wiki/DWARF DWARF]). В Альте отладочная информация отделена от основных пакетов в <tt>debuginfo</tt>-пакеты. Для установки пакетов с отладочной информацией ''к нужному приложению'' необходимо добавить ''компонент'' <tt>debuginfo</tt> в <tt>/etc/apt/sources.list</tt>. Пример для Сизифа на x86_64:


     rpm [alt] <nowiki>http://ftp.altlinux.org/pub/distributions</nowiki> ALTLinux/Sisyphus/x86_64 classic '''debuginfo'''
     rpm [alt] <nowiki>http://ftp.altlinux.org/pub/distributions</nowiki> ALTLinux/Sisyphus/x86_64 classic '''debuginfo'''
Строка 12: Строка 14:
     rpm [alt] <nowiki>http://ftp.altlinux.org/pub/distributions</nowiki> ALTLinux/Sisyphus/noarch classic
     rpm [alt] <nowiki>http://ftp.altlinux.org/pub/distributions</nowiki> ALTLinux/Sisyphus/noarch classic


После <tt>apt-get update</tt> нужно установить <tt>-debuigifo</tt> пакет соответствующий основному пакету. Например, определяем в каком пакете лежит бинарник <tt>/bin/ls</tt>:
После <tt>apt-get update</tt> нужно установить пакет <tt>*-debuginfo</tt>, соответствующий основному пакету. Например, определяем, в каком пакете лежит бинарник <tt>/bin/ls</tt>:


     <span style="color:blue">#</span> '''rpm -qf /bin/ls'''
     <span style="color:blue">#</span> '''rpm -qf /bin/ls'''
Строка 49: Строка 51:
Файлы с отладочной информацией хранятся в дереве <tt>/usr/lib/debug</tt>.
Файлы с отладочной информацией хранятся в дереве <tt>/usr/lib/debug</tt>.


= debuginfod сервер =
= debuginfod-сервер =


Для облегчения доступа существует [https://sourceware.org/elfutils/Debuginfod.html debuginfod] сервер — <tt>debuginfod.altlinux.org</tt> — который предоставляет отладочную информацию без установки <tt>-debuginfo</tt> пакетов. Минимально требуемые версии пакетов для доступа к нему — <tt>elfutils 0.182-alt2</tt> и <tt>gdb 10.1-alt1</tt>. Пример работы:
Для облегчения доступа существует [https://sourceware.org/elfutils/Debuginfod.html debuginfod]-сервер — <tt>debuginfod.altlinux.org</tt> — который предоставляет отладочную информацию без установки <tt>-debuginfo</tt> пакетов. Минимально требуемые версии пакетов для доступа к нему — <tt>elfutils 0.182-alt2</tt> и <tt>gdb 10.1-alt1</tt>. Пример работы:


     <span style="color:blue">$</span> export DEBUGINFOD_URLS=<nowiki>https://debuginfod.altlinux.org/</nowiki>
     <span style="color:blue">$</span> export DEBUGINFOD_URLS=<nowiki>https://debuginfod.altlinux.org/</nowiki>
Строка 57: Строка 59:
     <span style="color:blue">$</span> gdb ...
     <span style="color:blue">$</span> gdb ...


= Ссылки =
* [[RPM/debuginfo]]


[[Категория:Руководства]] [[Категория:debuginfo]]
[[Категория:Руководства]]
[[Категория:debuginfo]]

Версия от 14:42, 5 апреля 2023


отладочные пакеты

Для отладки или получения информативной трассировки стека (stack trace) необходима отладочная информация (DWARF). В Альте отладочная информация отделена от основных пакетов в debuginfo-пакеты. Для установки пакетов с отладочной информацией к нужному приложению необходимо добавить компонент debuginfo в /etc/apt/sources.list. Пример для Сизифа на x86_64:

   rpm [alt] http://ftp.altlinux.org/pub/distributions ALTLinux/Sisyphus/x86_64 classic debuginfo
   rpm [alt] http://ftp.altlinux.org/pub/distributions ALTLinux/Sisyphus/noarch classic

либо

   rpm [alt] http://ftp.altlinux.org/pub/distributions ALTLinux/Sisyphus/x86_64 classic
   rpm [alt] http://ftp.altlinux.org/pub/distributions ALTLinux/Sisyphus/x86_64 debuginfo
   rpm [alt] http://ftp.altlinux.org/pub/distributions ALTLinux/Sisyphus/noarch classic

После apt-get update нужно установить пакет *-debuginfo, соответствующий основному пакету. Например, определяем, в каком пакете лежит бинарник /bin/ls:

   # rpm -qf /bin/ls
   coreutils-8.31.0.3.6bd78-alt2.x86_64

Следовательно, отладочный пакет будет называться coreutils-debuginfo. Устанавливаем:

   # apt-get install coreutils-debuginfo

далее /bin/ls можно полноценно отлаживать в gdb:

   $ gdb -q /bin/ls
   Reading symbols from /bin/ls...
   Reading symbols from /usr/lib/debug/bin/ls.debug...
   (gdb) b main
   Breakpoint 1 at 0x403770: file src/ls.c, line 1452.
   (gdb) run
   Starting program: /bin/ls
   
   Breakpoint 1, main (argc=1, argv=0x7fffffffe3b8) at src/ls.c:1452
   1452    {
   (gdb) list
   1447      signal_setup (false);
   1448    }
   1449
   1450    int
   1451    main (int argc, char **argv)
   1452    {
   1453      int i;
   1454      struct pending *thispend;
   1455      int n_files;
   1456
   (gdb)

Обратите внимание, что отладочная информация для /bin/ls загрузилась также из /usr/lib/debug/bin/ls.debug. Файлы с отладочной информацией хранятся в дереве /usr/lib/debug.

debuginfod-сервер

Для облегчения доступа существует debuginfod-сервер — debuginfod.altlinux.org — который предоставляет отладочную информацию без установки -debuginfo пакетов. Минимально требуемые версии пакетов для доступа к нему — elfutils 0.182-alt2 и gdb 10.1-alt1. Пример работы:

   $ export DEBUGINFOD_URLS=https://debuginfod.altlinux.org/
   $ eu-stack -v -p $$
   $ gdb ...

Ссылки