---
name: "find-debuginfo"
section: "1"
platform: "linux"
package: "debugedit"
version: "5.4-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/find-debuginfo"
---

# find-debuginfo(1)

finds debuginfo and processes it

## NAME

find-debuginfo - finds debuginfo and processes it

## SYNOPSIS

**find-debuginfo** \[*OPTION*\]... \[*builddir*\]

## DESCRIPTION

automagically generates debug info and file lists

## OPTIONS

\[--strict-build-id\] \[-g\] \[-r\] \[-m\] \[-i\] \[-n\] \[-q\] \[-v\] \[--keep-section SECTION\] \[--remove-section SECTION\] \[--g-libs\] \[--no-ar-files\] \[-j N\] \[--jobs N\] \[-o debugfiles.list\] \[-S debugsourcefiles.list\] \[-O PATH\] \[--output-dir PATH\] \[--run-dwz\] \[--dwz-low-mem-die-limit N\] \[--dwz-max-die-limit N\] \[--dwz-single-file-mode\] \[--build-id-seed SEED\] \[--unique-debug-suffix SUFFIX\] \[--unique-debug-src-base BASE\] \[\[-l filelist\]... \[-p 'pattern'\] **-o** debuginfo.list\] \[--check-elf\] \[--check-elf-strict\] \[builddir\]

The **-g** flag says to use strip **-g** instead of full strip on DSOs or EXEs. The **--g-libs** flag says to use strip **-g** instead of full strip ONLY on DSOs.  Options **-g** and **--g-libs** are mutually exclusive.

The **-r** flag says to use eu-strip **--reloc-debug-sections**.

Use **--keep-section** SECTION or **--remove-section** SECTION to explicitly keep a (non-allocated) section in the main executable or explicitly remove it into the .debug file. SECTION is an extended wildcard pattern.  Both options can be given more than once.

The **--strict-build-id** flag says to exit with failure status if any ELF binary processed fails to contain a build-id note.

The **-m** flag says to include a .gnu\_debugdata section (MiniDebugInfo) in the main binary.

The **-i** flag says to include a .gdb\_index section in the .debug file.

The **-n** flag says to not recompute the build-id.

The **-j**, **--jobs** N option will spawn N processes to do the debuginfo extraction in parallel.

A single **-o** switch before any **-l** or **-p** switches simply renames the primary output file from debugfiles.list to something else. A **-o** switch that follows a **-p** switch or some **-l** switches produces an additional output file with the debuginfo for the files in the **-l** filelist file, or whose names match the **-p** pattern. The **-p** argument is an grep **-E** **-style** regexp matching the a file name, and must not use anchors (^ or $).

The **-O** or **--output-dir** PATH flag instructs find-debuginfo to store all output files in the PATH directory. If not given, all output files will be stored in builddir.

The **--run-dwz** flag instructs find-debuginfo to run the dwz utility if available, and **--dwz-low-mem-die-limit** and **--dwz-max-die-limit** provide detailed limits.  See [dwz(1)](/dwz/1.md) **-l** and **-L** option for details. Use **--dwz-single-file-mode** to disable multi-file mode, see [dwz(1)](/dwz/1.md) **-m** for more details.

If **--build-id-seed** SEED is given then debugedit is called to update the build-ids it finds adding the SEED as seed to recalculate the build-id hash.  This makes sure the build-ids in the ELF files are unique between versions and releases of the same package. (Use **--build-id-seed** "%{VERSION}-%{RELEASE}".)

If **--unique-debug-suffix** SUFFIX is given then the debug files created for \<FILE\> will be named \<FILE\>-\<SUFFIX\>.debug.  This makes sure .debug are unique between package version, release and architecture. (Use **--unique-debug-suffix** "-%{VERSION}-%{RELEASE}.%{\_arch}".)

If **--unique-debug-src-base** BASE is given then the source directory will be called /usr/debug/src/\<BASE\>.  This makes sure the debug source dirs are unique between package version, release and achitecture (Use **--unique-debug-src-base** "%{name}-%{VERSION}-%{RELEASE}.%{\_arch}")

If **--no-ar-files** is given, then static libraries will be ignored.  Otherwise, they receive only with source-path rewriting and collection.  They are not stripped, since they have no persistent build-ids to accommodate eventual reunification.

The **-q** or **--quiet** flag silences all non-error output from the script. The **-v** or **--verbose** flag add more output for all files processed. When neither **-q** or **-v** is given then only output for each pass is given.

The **--check-elf** and **--check-elf-strict** flags will run eu-elflint **--gnu** on the ELF and AR files before and after processing the files. Including on the generated separate .debug files. When **--check-elf-strict** is given then if eu-elflint reports any errors find-debuginfo will exit with a failure status. With just **--check-elf** given any eu-elflint output will be logged but not change the exit status.

All file names in switches are relative to builddir ('.' if not given).
