FIND-DEBUGINFO(1)

πŸ’– NAME πŸ’–

find-debuginfo β€” finds debuginfo and processes it πŸ’… (yes bestie, that's the whole job description, and she does it)


πŸ¦‹ SYNOPSIS πŸ¦‹

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

🌸 DESCRIPTION 🌸

automagically generates debug info and file lists ✨

Like, automagically. That's the word. She just does it. No cap. πŸͺ„


πŸ‘‘ OPTIONS πŸ‘‘

Here's the whole roster, in all her flag-draped glory:

[--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]

Now let's actually break it down, one flag at a time, because you deserve to know. πŸŽ€

  • -g β€” says to use strip -g instead of full strip on DSOs or EXEs.
  • --g-libs β€” says to use strip -g instead of full strip ONLY on DSOs.
⚠️ Major tea: options -g and --g-libs are mutually exclusive. Pick one, you cannot have both, that's the rule. πŸ’€
  • -r β€” says to use eu-strip --reloc-debug-sections.
  • --keep-section SECTION, --remove-section SECTION β€” use these 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, so go off. 🌈
  • --strict-build-id β€” says to exit with failure status if any ELF binary processed fails to contain a build-id note. She's not playing around. 😀
  • -m β€” says to include a .gnu_debugdata section (MiniDebugInfo) in the main binary. Cute little extra data, slay.
  • -i β€” says to include a .gdb_index section in the .debug file.
  • -n β€” says to not recompute the build-id.
  • -j, --jobs N β€” will spawn N processes to do the debuginfo extraction in parallel. Multitasking queen. πŸ”₯
  • -o β€” 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. And heads up: the -p argument is an grep -E-style regexp matching the file name, and it must not use anchors (^ or $). No anchors, bestie, she said what she said. 🚫
  • -O PATH, --output-dir PATH β€” instructs find-debuginfo to store all output files in the PATH directory. If not given, all output files will be stored in builddir.
  • --run-dwz β€” 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) -l and -L option for details. Use --dwz-single-file-mode to disable multi-file mode, see dwz(1) -m for more details.
  • --build-id-seed SEED β€” if 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}".) ✨
  • --unique-debug-suffix SUFFIX β€” if 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}".) πŸ’…
  • --unique-debug-src-base BASE β€” if 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 architecture (Use --unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}").
  • --no-ar-files β€” if 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. (Lowkey a whole lore reason, okay.) πŸ™ˆ
  • -q, --quiet β€” silences all non-error output from the script.
  • -v, --verbose β€” add more output for all files processed.

When neither -q or -v is given then only output for each pass is given. That's the middle ground, the main character default. ⭐

  • --check-elf, --check-elf-strict β€” 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.

One last lil' rule for the road πŸ›£οΈ: all file names in switches are relative to builddir (. if not given).


πŸ’– ok and that's the whole page, bestie β€” find-debuginfo 5.4, October 2026, mwah, slay, periodt πŸ‘‘πŸ’…βœ¨

πŸ“¦ where this page comes from