DSYMUTIL(1)
๐ dsymutil โ yes bestie, the DWARF wrangler
okay so real quick, this is a page from the LLVM manual set (yes, that LLVM), and it's all about dsymutil, which manipulates archived DWARF debug symbol files. stay with me, it's gonna slay ๐ซถ
โจ NAME โจ
dsymutil โ manipulate archived DWARF debug symbol files ๐ฆ
๐ธ SYNOPSIS ๐ธ
dsymutil [options] executable
๐ DESCRIPTION ๐
so here's the tea: dsymutil links up all the DWARF debug information it can find in the object files that belong to an executable (the executable in the synopsis, bestie), and it does it by using the debug symbols info sitting in that executable's symbol table. โจ
by default, the linked debug info gets dropped into a .dSYM bundle named the same as the executable. no cap, that's the whole vibe. ๐
๐ OPTIONS ๐
--accelerator=<accelerator type>โ pick what kind of accelerator table you want. the valid options are'Apple','Dwarf','Default'and'None'. so iconic of you to choose.--allow <path>โ only process debug map objects that are listed in the YAML file at<path>. it only filtersN_OSOentries, jsyk. and if--oso-prepend-pathis specified, that path prefix applies too โ meaning the paths in the file should exactly match the ones in theN_OSOentries. exact match, no vibes-based matching. ๐--arch <arch>โ only link DWARF debug info for the CPU architecture types you name. architectures can be specified by name. when you use this, you'll get an error back if any of the architectures can't be properly linked. you can pass this option multiple times, once per desired architecture. by default all CPU architectures get linked, and any architecture that can't be properly linked will makedsymutilreturn an error. picky, but honestly? valid. ๐--build-variant-suffix <suffix=buildvariant>โ set 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 setting theDYLD_IMAGE_SUFFIXenvironment variable makes dyld load the specified variant at runtime. ๐--codesign <identity>โ code sign the dSYM bundle with the given signing identity after linking. cannot be used with--flator--no-output. (it's giving "choose one, bestie.") ๐ฅ--disallow <path>โ exclude debug map objects listed in the YAML file at<path>. only filtersN_OSOentries. and again, if--oso-prepend-pathis specified, the path prefix applies, i.e. the paths in the file should exactly match those of theN_OSOentries. ๐ธ--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 happens at all. literally just a peek, then dip. ๐-D <path>โ specify a directory that contains dSYM files to search in. this is for mergeable libraries, sodsymutilknows where to look for dSYM files that have debug info about symbols present in those libraries. ๐--embed-resource <src-path>=<bundle-relative-path>โ copy a file or directory into the dSYM bundle'sContents/Resources/directory. the argument is<source-path>=<destination-relative-to-Resources>. if the source is a directory, its contents get copied recursively. and yeah, you can pass this option multiple times. ๐--fat64โ use a 64-bit header when emitting universal binaries. thicc header energy. ๐--flat,-fโ produce a flat dSYM file. a.dwarfextension gets appended to the executable name unless you specify the output file with the-ooption. ๐ฆ--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, hello, here's the help. ๐ซถ--include-swiftmodules-from-interfaceโ whether or not to copy binary swiftmodules that were built from textual.swiftinterfacefiles into the dSYM bundle. these typically come only from the SDK (since textual interfaces need library evolution), so copying them into the bundle is lowkey 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 its enclosing function, even if that function would have been omitted otherwise. bestie said "you're not leaving." ๐ญ--no-object-timestampโ don't check the timestamp for object files. โญ--no-odrโ don't use ODR (the One Definition Rule) for uniquing C++ types. ๐ธ--no-outputโ do the link in memory, but don't emit the result file. all the effort, none of the artifacts. ๐--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. more threads, more sparkle. ๐ฅ--object-prefix-map <prefix=remapped>โ remap object file paths (but not source paths) before processing. use this for Clang objects where the module cache location was remapped using-fdebug-prefix-map, sodsymutilcan 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.dSYMto the executable name. ๐-q,--quietโ enable quiet mode and limit output. shhh, main character is focusing. ๐คซ--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 to use 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 output size, listing the object files with the largest contribution first. leaderboard behavior, honestly iconic. ๐-s,--symtabโ dumps the symbol table found in the executable or object file(s), then 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. glow-up, but for a dSYM. โจ--use-reproducer <path>โ use the object files from the given reproducer path. this is an alias for--reproducer=Use. ๐ฆ--verboseโ display verbose information when linking. it's giving "tell me everything." ๐ฃ๏ธ--verifyโ run the DWARF verifier on the linked DWARF debug info. ๐ง-v,--versionโ display the version of the tool. ๐-yโ treat theexecutableas a YAML debug-map rather than an executable. plot twist. ๐ญ
๐ฅ EXIT STATUS ๐ฅ
dsymutil returns 0 if the DWARF debug info was linked successfully. otherwise it returns 1. that's it, that's the whole system. ๐
๐ SEE ALSO ๐
llvm-dwarfdump(1)<llvm-dwarfdump.html>
๐ Author ๐
maintained by the LLVM Team (https://llvm.org/). protect them at all costs. ๐ซถ
๐ธ Copyright ๐ธ
2003-2026, LLVM Project โ periodt. ๐
and that's the page, bestie ๐ โ from the LLVM crew, version 23, dated 2026-10-20. go link some DWARF, you absolute icon. ๐
โจ
๐ฆ where this page comes from
- arch rolling: llvm 23.1.4-1 ยท Apache-2.0 WITH LLVM-exception
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms