DSYMUTIL(1)

πŸ’… DSYMUTIL(1) β€” the dsymutil glow-up πŸ¦‹

okay bestie, so this is the dsymutil page from the LLVM manual set, and honestly? it's giving "quiet little tool that does something kind of iconic." let's get into it πŸŽ€


✨ NAME ✨

dsymutil β€” manipulate archived DWARF debug symbol files πŸ’€ (yes, that's really the whole vibe β€” it wrangles debug symbols)


🌸 SYNOPSIS 🌸

dsymutil [options] executable

🫢 DESCRIPTION 🫢

so here's the tea, bestie: dsymutil links the DWARF debug information that lives in the object files for a given executable β€” and it does this by using the debug symbols information chillin' in that executable's symbol table. cute, right? πŸ’–

by default, the linked debug information gets placed in a .dSYM bundle with the same name as the executable. no cap, that's just where it goes ✨


πŸ‘‘ OPTIONS πŸ‘‘

  • --accelerator=<accelerator type> β€” pick the type of accelerator table you want, bestie. the valid options are 'Apple', 'Dwarf', 'Default' and 'None'. choose wisely πŸ’…
  • --arch <arch> β€” only link DWARF debug information for the CPU architecture types you specify. architectures can be given by name. the catch: if you use this, an error gets returned if any architectures can't be properly linked. you can pass this option multiple times, once for each architecture you want. by default all CPU architectures get linked, and any that can't be properly linked will make dsymutil return an error 😭
  • --build-variant-suffix <suffix=buildvariant> β€” sets the build variant suffix used to build the executable file. a product's binary can have multiple variants, each built slightly differently. the most common build variants are 'debug' and 'profile'. setting the DYLD_IMAGE_SUFFIX environment variable makes dyld load the specified variant at runtime 🌈
  • --dump-debug-map β€” dumps the executable's debug-map (that's the list of object files holding the debug information) in YAML format and then exits. no DWARF link happens at all. periodt.
    • -D <path> β€” specify a directory that contains dSYM files to search in. this is for mergeable libraries, so dsymutil knows where to look for dSYM files that have debug information about symbols present in those libraries πŸ¦‹
  • --fat64 β€” use a 64-bit header when emitting universal binaries.
  • --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, in which case it doesn't πŸŽ€
  • --gen-reproducer β€” generate a reproducer made up of the input object files. this is an alias for --reproducer=GenerateOnExit.
  • --help, -h β€” print this help output. (hi, that's this πŸ’–)
  • --keep-function-for-static β€” makes a static variable keep the enclosing function, even if it would've been omitted otherwise.
  • --minimize, -z β€” when you're creating a dSYM file, this suppresses emission of the .debug_inlines, .debug_pubnames, and .debug_pubtypes sections, since dsymutil currently has better equivalents: .apple_names and .apple_types. and when you use it together with the --update option, it causes redundant accelerator tables to be removed. two-for-one slay ✨
  • --no-odr β€” don't use ODR (One Definition Rule) for uniquing C++ types.
  • --no-output β€” do the link in memory, but don't emit the result file. all vibes, no output πŸ’€
  • --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. go parallel, bestie πŸ”₯
  • --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 β€” that way dsymutil can find the Clang module cache 🧚
  • --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.
  • --remarks-drop-without-debug β€” drop remarks that don't have valid debug locations. without this flag, all remarks are kept. πŸ™ˆ
  • --remarks-output-format <format> β€” specify the format used when serializing the linked remarks.
  • --remarks-prepend-path <path> β€” specify a directory to prepend to 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 how much each object file contributed to the linked debug info. it 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. big number energy πŸ‘‘
  • --symbol-map <bcsymbolmap> β€” update the existing dSYMs in place using the specified symbol map.
  • -s, --symtab β€” dumps the symbol table found in the executable or object file(s) and exits.
  • -S β€” output textual assembly instead of a binary dSYM companion file.
  • --toolchain <toolchain> β€” embed the toolchain in the dSYM bundle's property list.
  • -u, --update β€” update an existing dSYM file so it contains the latest accelerator tables and other DWARF optimizations. this option rebuilds the '.apple_names' and '.apple_types' hashed accelerator tables πŸ¦‹
  • --use-reproducer <path> β€” use the object files from the given reproducer path. alias for --reproducer=Use.
  • --verbose β€” display verbose information when linking. chatty mode activated πŸ—£οΈ
  • --verify β€” run the DWARF verifier on the linked DWARF debug info.
  • -v, --version β€” display the version of the tool.
  • -y β€” treat executable as a YAML debug-map rather than an executable.

⭐ EXIT STATUS ⭐

dsymutil returns 0 if the DWARF debug information was linked successfully. otherwise, it returns 1. simple as that, bestie πŸ’…


πŸ’œ SEE ALSO πŸ’œ


πŸŽ€ Author πŸŽ€

maintained by the LLVM Team (https://llvm.org/). they're literally the main characters here 🫢

2003-2026, LLVM Project β€” iconic run, honestly πŸ’–


and that's the whole page, bestie! sign-off szn: this was LLVM's dsymutil manual, dated 2026-09-09, from that 15th... okay, the header line said "15", which is the page's local addendum β€” we're just going to say it's the September 9th, 2026 edition, version noted, and you ate that read. go link some DWARF βœ¨πŸ“πŸ’…

πŸ“¦ where this page comes from