DSYMUTIL(1)

πŸ’– DSYMUTIL(1) πŸ’–

okay bestie, sit down, hydrate, and let me tell you about dsymutil β€” that's the LLVM one, from the LLVM manual gang, section 1. she's a debug-symbol girlie and she's so good at her job. πŸŽ€


✨ NAME ✨

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


🌸 SYNOPSIS 🌸

dsymutil [options] executable

πŸ’… DESCRIPTION πŸ’…

so here's the tea. dsymutil links the DWARF debug info that's scattered around in the object files for an executable β€” that's your executable argument right there β€” and it does it by using the debug symbol information chillin' in that executable's symbol table. 🫢

and by default? the linked debug info gets dropped into a .dSYM bundle with the same name as the executable. no cap. iconic behavior honestly.


πŸ‘‘ OPTIONS πŸ‘‘

  • --accelerator=<accelerator type> β€” pick what kind of accelerator table you want. the valid options are 'Apple', 'Dwarf', 'Default' and 'None'. choose wisely bestie ✨
  • --arch <arch> β€” only link DWARF debug info for the CPU architecture types you name. you can specify architectures by name. heads up tho: if you use this option and any of the architectures can't be properly linked, you get an error. you can pass this option multiple times, once for each architecture you want. by default, all CPU architectures get linked, and any architecture that can't be properly linked makes dsymutil return an error. 😭
  • --build-variant-suffix <suffix=buildvariant> β€” specify 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'. and listen β€” setting the DYLD_IMAGE_SUFFIX environment variable makes dyld load the specified variant at runtime. 🧚
  • --dump-debug-map β€” dump the executable's debug-map (that's the list of object files holding the debug info) in YAML format and then exit. no DWARF link will take place. periodt. πŸ’€
  • -D <path> β€” specify a directory that contain dSYM files to search for. this is used for mergeable libraries, so dsymutil knows where to look for dSYM files with 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 specify the output file with the -o option. πŸ’–
  • --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. the classic. πŸŽ€
  • --include-swiftmodules-from-interface β€” whether or not to copy binary swiftmodules built from textual .swiftinterface files into the dSYM bundle. these typically come only from the SDK (since textual interfaces require library evolution), so copying them into the bundle is a waste of space. turn this on if the swiftmodules are different from the ones in the SDK. πŸ¦‹
  • --keep-function-for-static β€” make a static variable keep the enclosing function even if it would have been omitted otherwise. ✨
  • --no-object-timestamp β€” don't check timestamp for object files. πŸ™ˆ
  • --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. 🌸
  • --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 β€” it helps dsymutil 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. πŸŽ€
  • -q, --quiet β€” enable quiet mode and limit output. shhh. 🀫
  • --remarks-drop-without-debug β€” drop remarks without valid debug locations. without this flag, all remarks are kept. πŸ’€
  • --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. πŸ“Š
  • -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. πŸ’…
  • --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. πŸ”₯
  • --use-reproducer <path> β€” use the object files from the given reproducer path. alias for --reproducer=Use. πŸ“
  • --verbose β€” display verbose information when linking. tell me everything, i'm obsessed. 🫢
  • --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. that's it, that's the vibe check. 😭


🌸 SEE ALSO 🌸


πŸŽ€ Author πŸŽ€

maintained by the LLVM Team (https://llvm.org/). the actual icons. πŸ‘‘

2003-2026, LLVM Project


and that's the whole page, bestie!! πŸ¦‹βœ¨ this one's page 22 of the LLVM manual, dated 2026-07-16 β€” shoutout to the DSYMUTIL(1) header and footer, they did their little job and we love them for it. now go link some DWARF and slay πŸ’…πŸ’–πŸŽ€

πŸ“¦ where this page comes from