Commands
debug-files
Work with debug information files
Commands
Section titled “Commands”sentry debug-files check <path>
Section titled “sentry debug-files check <path>”Inspect a debug information file
Arguments:
| Argument | Description |
|---|---|
<path> |
Path to the debug information file |
Examples:
# Inspect a debug information file (auto-detects the format)sentry debug-files check ./libexample.so
# Inspect the DWARF file inside a dSYMsentry debug-files check MyApp.dSYM/Contents/Resources/DWARF/MyApp
# Output the report as JSONsentry debug-files check ./app.pdb --jsonsentry debug-files find <id...>
Section titled “sentry debug-files find <id...>”Locate debug files for given debug identifiers
Arguments:
| Argument | Description |
|---|---|
<id...> |
Debug identifier(s) to search for |
Options:
| Option | Description |
|---|---|
-t, --type <type>... |
Only consider debug files of the given type (repeatable). Default: all |
--no-well-known |
Do not look for debug files in well-known locations |
--no-cwd |
Do not look for debug files in the current directory |
-p, --path <path>... |
Add a directory to search recursively (repeatable) |
Examples:
# Locate debug files for a debug identifier on disksentry debug-files find <debug-id>
# Search only for dSYMs, including an extra directorysentry debug-files find <debug-id> --type dsym --path ./build
# Search only an explicit directory and output JSONsentry debug-files find <debug-id> --no-cwd --no-well-known -p /symbols --jsonsentry debug-files upload <path...>
Section titled “sentry debug-files upload <path...>”Upload debug information files to Sentry
Arguments:
| Argument | Description |
|---|---|
<path...> |
Files or directories to scan for debug information files |
Options:
| Option | Description |
|---|---|
-t, --type <type>... |
Only upload files of this type (repeatable): dsym, elf, pe, pdb, portablepdb, wasm, breakpad, sourcebundle, jvm, dxil |
--id <id>... |
Only upload the object with this debug id (repeatable) |
--require-all |
Fail if any --id value was not found among scanned files |
--no-debug |
Do not upload files whose only feature is debug/symbol info |
--no-unwind |
Do not upload files whose only feature is unwind info |
--no-sources |
Do not upload files whose only feature is source info |
--include-sources |
Build and upload a source bundle for each file with debug info |
--il2cpp-mapping |
Compute and upload Unity IL2CPP line mappings for each scanned file |
--derived-data |
Also scan Xcode's DerivedData folder (macOS only) |
--no-zips |
Do not scan inside .zip archives |
--no-upload |
Scan and print what would be uploaded without uploading |
--wait |
Wait for server-side processing and report any errors |
--wait-for <wait-for> |
Wait up to this many seconds for server-side processing |
Examples:
# Upload debug information files (scans directories recursively)sentry debug-files upload ./build
# Attach a source bundle to each filesentry debug-files upload ./libexample.so --include-sources
# Scan a .zip archive in placesentry debug-files upload ./symbols.zip
# Skip .zip archivessentry debug-files upload ./build --no-zips
# Upload only dSYMs and wait for server-side processingsentry debug-files upload ./dsyms --type dsym --wait
# Fail unless the requested debug ID is foundsentry debug-files upload ./build --id <debug-id> --require-all
# Unity: upload IL2CPP line mappingssentry debug-files upload ./build --il2cpp-mapping
# Unity: upload IL2CPP line mappings with referenced C# sourcessentry debug-files upload ./build --il2cpp-mapping --include-sources
# Preview what would be uploaded (no credentials needed)sentry debug-files upload ./build --no-upload
# Scan Xcode's DerivedData without uploadingsentry debug-files upload --derived-data --no-uploadsentry debug-files print-sources <path>
Section titled “sentry debug-files print-sources <path>”List the source files a debug file references
Arguments:
| Argument | Description |
|---|---|
<path> |
Path to the debug information file |
Examples:
# List the source files a debug file references (and whether they're available)sentry debug-files print-sources ./libexample.so
# Output the list as JSONsentry debug-files print-sources ./app.pdb --jsonsentry debug-files bundle-sources <path>
Section titled “sentry debug-files bundle-sources <path>”Bundle a debug file's source files for source context
Arguments:
| Argument | Description |
|---|---|
<path> |
Path to the debug information file |
Options:
| Option | Description |
|---|---|
-o, --output <output> |
Output path for the source bundle ZIP (default: |
Examples:
# Bundle a debug file's referenced source files (run on the build machine)sentry debug-files bundle-sources ./libexample.so
# Write the bundle to a specific pathsentry debug-files bundle-sources ./app.pdb --output ./app.src.zipsentry debug-files bundle-jvm <path>
Section titled “sentry debug-files bundle-jvm <path>”Create a JVM source bundle for source context
Arguments:
| Argument | Description |
|---|---|
<path> |
Directory containing JVM source files |
Options:
| Option | Description |
|---|---|
-o, --output <output> |
Output directory for the bundle ZIP |
-d, --debug-id <debug-id> |
Debug ID (UUID) to stamp on the bundle |
-e, --exclude <exclude>... |
Additional directory names to exclude (repeatable) |
Examples:
# Bundle JVM sources with a debug IDsentry debug-files bundle-jvm --output ./out --debug-id <uuid> ./src
# Exclude additional directoriessentry debug-files bundle-jvm --output ./out --debug-id <uuid> --exclude generated --exclude build-tools ./src
# Output as JSONsentry debug-files bundle-jvm --output ./out --debug-id <uuid> --json ./srcAll commands support --json for machine-readable output and --fields to select specific JSON fields.
Notes on find
Section titled “Notes on find”debug-files findlocates debug files locally by debug identifier — it makes no API calls. It searches Xcode'sDerivedData(for dSYMs, unless--no-well-known), the current directory (unless--no-cwd), and any--path/-pdirectories, recursively.- Restrict the search with
--type/-t(repeatable):dsym,elf,pe,pdb,portablepdb,sourcebundle,breakpad,proguard,jvm. - A debug identifier must match exactly, including any PE/PDB age suffix. A Breakpad symbol file is listed when it matches, but does not satisfy the request (the id is still reported as missing).
- Exits non-zero if any requested identifier could not be located.
Important Notes
Section titled “Important Notes”check,print-sources,bundle-sources, andbundle-jvmare local-only — they make no network requests. They parse object files in-process (Mach-O/dSYM, ELF, PE/PDB, Portable PDB, WebAssembly, Breakpad, source bundles) via a bundledsymbolicWASM module.checkexits non-zero if the file is not usable for symbolication (no debug id or no useful features).print-sourceslists the source files each object references, reporting for each whether the source is embedded in the debug file, available via a source link, or present on the local disk. It is a read-only preview of whatbundle-sourceswould collect and always exits zero on a parseable file.bundle-sourcesreads source files from the paths recorded in the debug info, so it is normally run on the build machine right after compiling. Referenced files that are not present locally are skipped; it exits non-zero (writing nothing) when none are found. The bundle defaults to<path>.src.zipand is uploaded viasentry debug-files upload.uploadscans each path (files or directories, walked recursively) for native debug information files, parses them in-process, and uploads matching files via the chunk-upload protocol. Use--type/--idto restrict which files are sent,--no-debug/--no-unwind/--no-sourcesto drop files whose only useful feature is the named one, and--include-sourcesto attach a source bundle per file..ziparchives are scanned in place by default (their entries run through the same filters; nested archives are not recursed) — pass--no-zipsto skip them.--derived-dataadditionally scans Xcode's~/Library/Developer/Xcode/DerivedDatafolder (macOS only).--no-uploadpreviews the selection without credentials;--wait/--wait-forblock on server-side processing and exit non-zero if any file fails.--require-allfails if a requested--idwas not found. The server-advertised maximum file size and maximum processing wait are honored automatically (oversized files are skipped with a warning). BCSymbolMap resolution (the legacy--symbol-mapsflag) is intentionally unsupported — it only applies to Apple Bitcode, which Apple has deprecated and the App Store no longer accepts. Use the legacy Rustsentry-cliif you still need it.- Managed .NET PE assemblies that embed a Portable PDB have it extracted and
uploaded automatically as a separate
<name>.pdbdebug file (no flag needed). --il2cpp-mappingcomputes Unity IL2CPP C++→C# line mappings from each file's referenced generated C++ sources and uploads them as separateil2cppdebug files. Combine with--include-sourcesto also bundle the referenced C# source files.- Upload a JVM bundle separately via
sentry debug-files upload --type jvm. - Compiled shaders (
.dxilfiles from an Unreal Engine cook) are uploaded asdxildebug files, which let Sentry name the shader that caused a GPU crash. If the Sentry Unreal plugin wrote asentry-shader-manifest.tsvnext to them, the shader hash and group from that manifest are uploaded as well. - Supported JVM source file extensions:
.java,.kt,.scala,.sc,.groovy,.gvy,.gy,.gsh,.clj,.cljc - Build output directories (
build/,target/,out/,bin/) are automatically excluded unless they appear under asrc/ancestor. - Source-set prefixes (e.g.,
src/main/java/) are stripped to produce package-relative paths matching JVM stack traces.