Debuginfo: различия между версиями
Vt (обсуждение | вклад) Нет описания правки |
м (чуть причесал, добавил ссылку на RPM/debuginfo) |
||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:debuginfo}} | |||
Для отладки или получения информативной трассировки стека (stack trace) необходима отладочная информация ([https://en.wikipedia.org/wiki/DWARF DWARF]). В | = отладочные пакеты = | ||
Для отладки или получения информативной трассировки стека (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>- | После <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 ...