DSYMUTIL(1)

πŸ“¦
version 16.0.6 Β· 3 versions
, in ubuntu noble

πŸ’– DSYMUTIL(1) β€” the LLVM manual, but make it make sense πŸ’–

okay bestie, gather round, because we're about to talk about dsymutil, and honestly? she's iconic. this is section 1 of the LLVM manual set, so like, command-line-tool territory. buckle up πŸŽ€


✨ NAME ✨

dsymutil β€” manipulate archived DWARF debug symbol files πŸ¦‹


✨ SYNOPSIS ✨

dsymutil [options] executable

✨ DESCRIPTION ✨

so here's the tea, bestie πŸ“ dsymutil links up all the DWARF debug info it can find in the object files for an executable, and it does that by using the debug symbols info sitting inside that executable's symbol table. no cap.

and where does that linked debug info go by default? into a .dSYM bundle, named the exact same thing as the executable. slay. πŸ’…


✨ OPTIONS ✨

  • --accelerator=<accelerator type> β€” pick which flavour of accelerator table you want. the valid options are β€˜Apple’, β€˜Dwarf’, β€˜Default’ and β€˜None’. choose wisely πŸ‘‘
  • --arch <arch> β€” only link DWARF debug info for the CPU architecture types you name. you can specify architectures by name, and fr fr, if any of the architectures can't be properly linked you get an error back. you can drop this option multiple times, once per architecture you want. by default all CPU architectures get linked, and any that can't be properly linked will make dsymutil return an error. 😭
  • --dump-debug-map β€” dumps the executable's debug-map (that's the list of object files holding the debug info) in YAML format, and then it dips. no DWARF link happens at all. periodt.
  • --flat, -f β€” produce a flat dSYM file. a .dwarf extension gets appended to the executable name, unless you specified the output file with the -o option. 🧚
  • --gen-reproducer β€” generate a reproducer made of the input object files. it's an alias for –reproducer=GenerateOnExit.
  • --help, -h β€” print this help output. the classic.
  • --keep-function-for-static β€” makes a static variable keep the enclosing function, even if it would've been omitted otherwise. keeping the family together 🫢
  • --minimize, -z β€” when you use this while creating a dSYM file, it suppresses the emission of the .debug_inlines, .debug_pubnames, and .debug_pubtypes sections, because dsymutil currently has better equivalents: .apple_names and .apple_types. and when you use it together with the --update option, it will cause redundant accelerator tables to be removed. two birds, one stone πŸ’…
  • --no-odr β€” do not use ODR (One Definition Rule) for uniquing C++ types.
  • --no-output β€” do the link in memory, but do not emit the result file. all vibes, no files ✨
  • --no-swiftmodule-timestamp β€” don't check the timestamp for swiftmodule files.
  • --num-threads <threads>, -j <threads> β€” specifies the maximum number (n) of simultaneous threads to use when linking multiple architectures. multitasking queen πŸ‘‘
  • --object-prefix-map <prefix=remapped> β€” remap object file paths (but no source paths) before processing. use this for Clang objects where the module cache location was remapped using -fdebug-prefix-map, to help dsymutil find the Clang module cache. iykyk πŸ”₯
  • --oso-prepend-path <path> β€” specifies a path to prepend to all debug symbol object file paths.
  • --out <filename>, -o <filename> β€” specifies an alternate path to place the dSYM bundle. the default dSYM bundle path is created by appending .dSYM to the executable name. main character energy, choosing your own destination πŸ’–
  • --papertrail β€” when you're running dsymutil as part of your build system, it can be desirable for warnings to be part of the end product, rather than just being emitted to the output stream. when enabled, warnings are embedded in the linked DWARF debug information. leaving a lil trail 🌸
  • --remarks-output-format <format> β€” specify the format to be used when serializing the linked remarks.
  • --remarks-prepend-path <path> β€” specify a directory to prepend the paths of the external remark files.
  • --reproducer <mode> β€” specify the reproducer generation mode. valid options are β€˜GenerateOnExit’, β€˜GenerateOnCrash’, β€˜Use’, β€˜Off’. πŸŽ€
  • --statistics β€” print statistics about the contribution of each object file to the linked debug info. this prints a table after linking with the object file name, the size of the debug info in the object file (in bytes) and the size contributed (in bytes) to the linked dSYM. the table is sorted by the output size, listing the object files with the largest contribution first. numbers girlies rise πŸ”₯
  • --symbol-map <bcsymbolmap> β€” update the existing dSYMs inplace using the symbol map specified.
  • -s, --symtab β€” dumps the symbol table found in executable or object file(s) and exits.
  • -S β€” output textual assembly instead of a binary dSYM companion file. old school, love that for us ✨
  • --toolchain <toolchain> β€” embed the toolchain in the dSYM bundle's property list.
  • -u, --update β€” update an existing dSYM file to contain the latest accelerator tables and other DWARF optimizations. this option will rebuild the .apple_names and .apple_types hashed accelerator tables. glow-up time πŸ’…
  • --use-reproducer <path> β€” use the object files from the given reproducer path. it's an alias for –reproducer=Use.
  • --verbose β€” display verbose information when linking. she's chatty and we love her 😭
  • --verify β€” run the DWARF verifier on the linked DWARF debug info. trust but verify, bestie 🫢
  • -v, --version β€” display the version of the tool.
  • -y β€” treat executable as a YAML debug-map rather than an executable. plot twist 🌈

✨ EXIT STATUS ✨

dsymutil returns 0 if the DWARF debug information was linked successfully. otherwise, it returns 1. so like, 0 = ate, 1 = not ate. πŸ’€


✨ SEE ALSO ✨


✨ AUTHOR ✨

maintained by the LLVM Team (https://llvm.org/). 🫢


2003-2024, LLVM Project


okay that's the whole thing, bestie, and you absolutely understood all of it, i know you did πŸ’– this was version 15, dated 2024-04-14, brought to you by the LLVM crew β€” go forth and link that DWARF debug info, you've got this πŸ¦‹βœ¨πŸ‘‘

πŸ“¦ where this page comes from