26
1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat [email protected] [email protected] FOSDEM 2020-02-02 Mark Wielaard, Frank Ch. Eigler elfutils debuginfo-server

necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat [email protected] [email protected] FOSDEM

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

126

elfutils debuginfo-servernecessary non-evil

Mark Wielaard Frank Ch Eigler

Red Hatmarkklomporg fcheredhatcom

FOSDEM 2020-02-02

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

226

abstract

elfutils debuginfod is a web fileserver for debugging artifacts

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

326

Whatrsquos the matter Bugs got into your code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

426

No problem

Install prerequisites for debuggingthis is our topic today

Use debuggernot talking about this part today

But I use python or nodejs or not talking to you today

But I use golang or rust or relevant but not my focus today

Er whatrsquos a debuggerthere are many other debuginfo tools crash or systemtap orperf or dyninst or abrt or abigail or hpctoolkit and proceed

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

526

congratulations you need debuginfo

Compilers generate metadata about the object codeCFLAGS+=-g

Maps between source and object code for text and data

Quality quantity differ by compiler and by optimization level

GCC + DWARF is world-class(-fvar-tracking-assignments)

Tools can compress (semantic DWZ or zlib ELF compression)

Subset format also exist (CTF BTF minidebuginfo STABS)

Donrsquot forget about source code (might be partiallygenerated)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

626

debuginfo where is it now

What if debugging your own build tree rarr a-ok

What if ldquomakerdquo stripped your binaries rarr sad trombone

What if yoursquore using someone elsersquos build rarr depends

What if yoursquore debugging your distro rarr depends

What if yoursquore debugging a container rarr depends

What if yoursquore debugging remotely rarr depends

Wersquoll try to turn those ldquodependsrdquo into ldquoa-okrdquo

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

726

why is it not everywhere

SIZE 5-15x the size of the stripped executable

Fedora 30 x86-64program stripped unstripped

linux 5211 60309296 812269008cc1plus 921 28632168 176320528 + 29579791dwz

Donrsquot forget about source code

More statsdistro main repo debug repo

rhel 76 x86-64 34 GB 11 GBrhel 80 baseos x86-64 09 GB 25 GB

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

826

where is debuginfo - fedora

stripped after the build process

not lost packaged into -debuginfo and -debugsource

RPMs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

Missing separate debuginfos use

dnf debuginfo-install vim-minimal-811912-1fc30x86_64

available for easy downloading

if yoursquore root if you have disk space for whole package ifif if

httpsfedoraprojectorgwikiStackTraces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 2: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

226

abstract

elfutils debuginfod is a web fileserver for debugging artifacts

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

326

Whatrsquos the matter Bugs got into your code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

426

No problem

Install prerequisites for debuggingthis is our topic today

Use debuggernot talking about this part today

But I use python or nodejs or not talking to you today

But I use golang or rust or relevant but not my focus today

Er whatrsquos a debuggerthere are many other debuginfo tools crash or systemtap orperf or dyninst or abrt or abigail or hpctoolkit and proceed

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

526

congratulations you need debuginfo

Compilers generate metadata about the object codeCFLAGS+=-g

Maps between source and object code for text and data

Quality quantity differ by compiler and by optimization level

GCC + DWARF is world-class(-fvar-tracking-assignments)

Tools can compress (semantic DWZ or zlib ELF compression)

Subset format also exist (CTF BTF minidebuginfo STABS)

Donrsquot forget about source code (might be partiallygenerated)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

626

debuginfo where is it now

What if debugging your own build tree rarr a-ok

What if ldquomakerdquo stripped your binaries rarr sad trombone

What if yoursquore using someone elsersquos build rarr depends

What if yoursquore debugging your distro rarr depends

What if yoursquore debugging a container rarr depends

What if yoursquore debugging remotely rarr depends

Wersquoll try to turn those ldquodependsrdquo into ldquoa-okrdquo

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

726

why is it not everywhere

SIZE 5-15x the size of the stripped executable

Fedora 30 x86-64program stripped unstripped

linux 5211 60309296 812269008cc1plus 921 28632168 176320528 + 29579791dwz

Donrsquot forget about source code

More statsdistro main repo debug repo

rhel 76 x86-64 34 GB 11 GBrhel 80 baseos x86-64 09 GB 25 GB

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

826

where is debuginfo - fedora

stripped after the build process

not lost packaged into -debuginfo and -debugsource

RPMs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

Missing separate debuginfos use

dnf debuginfo-install vim-minimal-811912-1fc30x86_64

available for easy downloading

if yoursquore root if you have disk space for whole package ifif if

httpsfedoraprojectorgwikiStackTraces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 3: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

326

Whatrsquos the matter Bugs got into your code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

426

No problem

Install prerequisites for debuggingthis is our topic today

Use debuggernot talking about this part today

But I use python or nodejs or not talking to you today

But I use golang or rust or relevant but not my focus today

Er whatrsquos a debuggerthere are many other debuginfo tools crash or systemtap orperf or dyninst or abrt or abigail or hpctoolkit and proceed

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

526

congratulations you need debuginfo

Compilers generate metadata about the object codeCFLAGS+=-g

Maps between source and object code for text and data

Quality quantity differ by compiler and by optimization level

GCC + DWARF is world-class(-fvar-tracking-assignments)

Tools can compress (semantic DWZ or zlib ELF compression)

Subset format also exist (CTF BTF minidebuginfo STABS)

Donrsquot forget about source code (might be partiallygenerated)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

626

debuginfo where is it now

What if debugging your own build tree rarr a-ok

What if ldquomakerdquo stripped your binaries rarr sad trombone

What if yoursquore using someone elsersquos build rarr depends

What if yoursquore debugging your distro rarr depends

What if yoursquore debugging a container rarr depends

What if yoursquore debugging remotely rarr depends

Wersquoll try to turn those ldquodependsrdquo into ldquoa-okrdquo

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

726

why is it not everywhere

SIZE 5-15x the size of the stripped executable

Fedora 30 x86-64program stripped unstripped

linux 5211 60309296 812269008cc1plus 921 28632168 176320528 + 29579791dwz

Donrsquot forget about source code

More statsdistro main repo debug repo

rhel 76 x86-64 34 GB 11 GBrhel 80 baseos x86-64 09 GB 25 GB

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

826

where is debuginfo - fedora

stripped after the build process

not lost packaged into -debuginfo and -debugsource

RPMs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

Missing separate debuginfos use

dnf debuginfo-install vim-minimal-811912-1fc30x86_64

available for easy downloading

if yoursquore root if you have disk space for whole package ifif if

httpsfedoraprojectorgwikiStackTraces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 4: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

426

No problem

Install prerequisites for debuggingthis is our topic today

Use debuggernot talking about this part today

But I use python or nodejs or not talking to you today

But I use golang or rust or relevant but not my focus today

Er whatrsquos a debuggerthere are many other debuginfo tools crash or systemtap orperf or dyninst or abrt or abigail or hpctoolkit and proceed

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

526

congratulations you need debuginfo

Compilers generate metadata about the object codeCFLAGS+=-g

Maps between source and object code for text and data

Quality quantity differ by compiler and by optimization level

GCC + DWARF is world-class(-fvar-tracking-assignments)

Tools can compress (semantic DWZ or zlib ELF compression)

Subset format also exist (CTF BTF minidebuginfo STABS)

Donrsquot forget about source code (might be partiallygenerated)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

626

debuginfo where is it now

What if debugging your own build tree rarr a-ok

What if ldquomakerdquo stripped your binaries rarr sad trombone

What if yoursquore using someone elsersquos build rarr depends

What if yoursquore debugging your distro rarr depends

What if yoursquore debugging a container rarr depends

What if yoursquore debugging remotely rarr depends

Wersquoll try to turn those ldquodependsrdquo into ldquoa-okrdquo

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

726

why is it not everywhere

SIZE 5-15x the size of the stripped executable

Fedora 30 x86-64program stripped unstripped

linux 5211 60309296 812269008cc1plus 921 28632168 176320528 + 29579791dwz

Donrsquot forget about source code

More statsdistro main repo debug repo

rhel 76 x86-64 34 GB 11 GBrhel 80 baseos x86-64 09 GB 25 GB

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

826

where is debuginfo - fedora

stripped after the build process

not lost packaged into -debuginfo and -debugsource

RPMs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

Missing separate debuginfos use

dnf debuginfo-install vim-minimal-811912-1fc30x86_64

available for easy downloading

if yoursquore root if you have disk space for whole package ifif if

httpsfedoraprojectorgwikiStackTraces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 5: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

526

congratulations you need debuginfo

Compilers generate metadata about the object codeCFLAGS+=-g

Maps between source and object code for text and data

Quality quantity differ by compiler and by optimization level

GCC + DWARF is world-class(-fvar-tracking-assignments)

Tools can compress (semantic DWZ or zlib ELF compression)

Subset format also exist (CTF BTF minidebuginfo STABS)

Donrsquot forget about source code (might be partiallygenerated)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

626

debuginfo where is it now

What if debugging your own build tree rarr a-ok

What if ldquomakerdquo stripped your binaries rarr sad trombone

What if yoursquore using someone elsersquos build rarr depends

What if yoursquore debugging your distro rarr depends

What if yoursquore debugging a container rarr depends

What if yoursquore debugging remotely rarr depends

Wersquoll try to turn those ldquodependsrdquo into ldquoa-okrdquo

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

726

why is it not everywhere

SIZE 5-15x the size of the stripped executable

Fedora 30 x86-64program stripped unstripped

linux 5211 60309296 812269008cc1plus 921 28632168 176320528 + 29579791dwz

Donrsquot forget about source code

More statsdistro main repo debug repo

rhel 76 x86-64 34 GB 11 GBrhel 80 baseos x86-64 09 GB 25 GB

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

826

where is debuginfo - fedora

stripped after the build process

not lost packaged into -debuginfo and -debugsource

RPMs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

Missing separate debuginfos use

dnf debuginfo-install vim-minimal-811912-1fc30x86_64

available for easy downloading

if yoursquore root if you have disk space for whole package ifif if

httpsfedoraprojectorgwikiStackTraces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 6: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

626

debuginfo where is it now

What if debugging your own build tree rarr a-ok

What if ldquomakerdquo stripped your binaries rarr sad trombone

What if yoursquore using someone elsersquos build rarr depends

What if yoursquore debugging your distro rarr depends

What if yoursquore debugging a container rarr depends

What if yoursquore debugging remotely rarr depends

Wersquoll try to turn those ldquodependsrdquo into ldquoa-okrdquo

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

726

why is it not everywhere

SIZE 5-15x the size of the stripped executable

Fedora 30 x86-64program stripped unstripped

linux 5211 60309296 812269008cc1plus 921 28632168 176320528 + 29579791dwz

Donrsquot forget about source code

More statsdistro main repo debug repo

rhel 76 x86-64 34 GB 11 GBrhel 80 baseos x86-64 09 GB 25 GB

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

826

where is debuginfo - fedora

stripped after the build process

not lost packaged into -debuginfo and -debugsource

RPMs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

Missing separate debuginfos use

dnf debuginfo-install vim-minimal-811912-1fc30x86_64

available for easy downloading

if yoursquore root if you have disk space for whole package ifif if

httpsfedoraprojectorgwikiStackTraces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 7: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

726

why is it not everywhere

SIZE 5-15x the size of the stripped executable

Fedora 30 x86-64program stripped unstripped

linux 5211 60309296 812269008cc1plus 921 28632168 176320528 + 29579791dwz

Donrsquot forget about source code

More statsdistro main repo debug repo

rhel 76 x86-64 34 GB 11 GBrhel 80 baseos x86-64 09 GB 25 GB

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

826

where is debuginfo - fedora

stripped after the build process

not lost packaged into -debuginfo and -debugsource

RPMs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

Missing separate debuginfos use

dnf debuginfo-install vim-minimal-811912-1fc30x86_64

available for easy downloading

if yoursquore root if you have disk space for whole package ifif if

httpsfedoraprojectorgwikiStackTraces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 8: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

826

where is debuginfo - fedora

stripped after the build process

not lost packaged into -debuginfo and -debugsource

RPMs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

Missing separate debuginfos use

dnf debuginfo-install vim-minimal-811912-1fc30x86_64

available for easy downloading

if yoursquore root if you have disk space for whole package ifif if

httpsfedoraprojectorgwikiStackTraces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 9: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

926

where is debuginfo - ubuntu

stripped after the build process

not lost packaged into -dbgsym and -dbg ddebs gdb binvi

Reading symbols from binvi

(No debugging symbols found in binvi)

available for downloading - not as easy

if yoursquore root if you guess the right debsources if you havedisk space for whole package if if if

httpswikiubuntucomDebuggingProgramCrash

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 10: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1026

where is debuginfo - arch linux

never created during the build process

KKKHHHAAAAANNNNN

recompile with custom CFLAGS

if yoursquore root ndash heck yoursquore always root on arch

httpswikiarchlinuxorgindexphpDebug_-_Getting_Traces

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 11: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1126

where is debuginfo - nixos

Like Fedora many packages build debuginfo subpackages

Optional FUSE server maps local debuginfo paths to NixOSCDN via HTTP

httpsgithubcomedolstradwarffs

So close

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 12: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1226

addressing the depends and what-ifs

Need a way of quickly delivering the debuginfo needed

without user privilege

even from private non-distro build trees

even from non-distro package archives

ideally without unneeded debuginfo

able to federate servers

Donrsquot forget about source code

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 13: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1326

elfutils debuginfo-server

A simple HTTP fileserver of debuginfo to debugger-like tools

Server released as a component of elfutils

Numerous clients done or underway

Indexed by buildid

Trivial webapihttpserverportbuildidHEXCODEdebuginfo

Doesnrsquot forget about source codehttpserverportbuildidHEXCODEsourcePATHTOFOOc

No privilege required for running service

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 14: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1426

whatrsquos a buildid

Unique hash code embedded into object files as ELF note readelf -n binvi | grep -A4 build-id

Displaying notes found in notegnubuild-id

Owner Data size Description

GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID)

Build ID d153e961b07a044d66e523f03e00e7615ab56c4d

Default-on in GCCtoolchain for 10 years(--enable-linker-build-id)

httpsfedoraprojectorgwikiReleasesFeatureBuildId

Compatibly supported by llvm partly by golang

Identifies unique builds (reproducible build rarr same build-id)

Works best when using -g (capturesenvironmentflagssources)

Can be used to match separated debuginfo (build-id in bothmain and debug file)

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 15: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1526

how to use server

debuginfod -R -F vartmprpmbuild usrlibdebug

[] Opened database $HOMEdebuginfodsqlite

[] started http server on IPv4 IPv6 port=8002

[] search concurrency 8

[] file de 68

[] file s 3019

[] archive de 23

[] archive sref 48

[] archive sdef 2514

[] buildids 83

[] filenames 7835

[] files scanned () 1752

[] files scanned (mb) 269

[] index db size (mb) 1

or systemd service

or container

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 16: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1626

how to use client

export DEBUGINFOD_URLS=httpbuildhost8002

gdb $anything

or

debuginfod-find source hexcode pathtofooc

thatrsquos it

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 17: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1726

insert demo here

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 18: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1826

how debuginfo-server works

Given some directory names build trees or RPMDEBarchives

Periodically rescan all contents extract buildids

Only stream-process RPMsDEBs donrsquot store contents

Locate any referenced source files (not easy)

Store in persistent sqlite database groom periodically

To service a query stream data based on buildid record

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 19: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

1926

debuginfo-server internal database

Indexes from buildid to filenames or (packagecontent) tuples

Supports DWZ altdebug compression

Indexes source code references

Also stores file mtime to validate cache

Normalizes representation so strings not duplicated

Grooming involves compaction diagnosing duplication (maybehostile) garbage collection for removedupdated files

In principle transportable mergeable across cluster

ps SQLite is great use it for most of your database needs

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 20: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

2026

how debuginfo-server client works

Given buildid and artifact type (debuginfoexecutablesource)

Given one or more server URLs in $DEBUGINFOD_URLS

Performs one or more HTTP queries until timeout orconclusion

Caches resulting file in local cache directory

Returns file name andor descriptor to caller

Available as a library and a command line tool

Also built into server ergo federation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 21: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

2126

debuginfo-server federation

Databases can be large 1100 of RPM size

Indexing scan can be slow 10MBs

Fedora koji build system 77 TB of RPMs do the math

Good news embarrassingly parallel problem

Can merge databases after indexing

Can configure each server to delegate to others

Natural lines personalrarrteam frontendrarrreplicaslocalrarrremote privaterarrpublic shardrarrcomplete

Directed acyclic delegation graph

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 22: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

2226

I want it all and I want it now

Client cli amp library and server released with elfutils 0178

Elfutils-based tools automatically take advantage (systemtapdyninst eu-)

Prototype gdb client on a branch RFC posted

Work for other clients under way

Some public servers already available

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 23: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

2326

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 24: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

2426

httpssourcewareorgelfutilsDebuginfodhtml

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 25: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

2526

help wanted

Client support in all the tools

Improve server security posture

Continue improving gcc debuginfo quality

Run a server for your distro or ISV binaries

Investigate extending webapi for DWARF content queries tooffload search computation

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server

Page 26: necessary non-evil Mark Wielaard, Frank Ch. Eigler · 1/26 elfutils debuginfo-server necessary non-evil Mark Wielaard, Frank Ch. Eigler Red Hat mark@klomp.org fche@redhat.com FOSDEM

2626

see also

httpssourcewareorgelfutilsDebuginfodhtml

elfutils on ircfreenodenet

httpsdwarforg

httpssubmissionfosdemorgfeedback10308php

Mark Wielaard Frank Ch Eigler elfutils debuginfo-server