{"componentChunkName":"component---src-templates-doc-tsx","path":"/product/cli/dif/","result":{"data":{"file":{"id":"b651cfcf-57fe-508a-9039-3bd06688de63","relativePath":"product/cli/dif.mdx","sourceInstanceName":"docs","childMarkdownRemark":null,"childMdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Debug Information Files\",\n  \"sidebar_order\": 3\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Note = makeShortcode(\"Note\");\nvar CodeTabs = makeShortcode(\"CodeTabs\");\nvar CodeBlock = makeShortcode(\"CodeBlock\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Debug information files allow Sentry to extract stack traces and provide more\\ninformation about crash reports for most compiled platforms. \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-cli\"), \" can be\\nused to validate and upload debug information files. For more general\\ninformation, refer to \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/workflow/debug-files/\"\n  }), mdx(\"em\", {\n    parentName: \"a\"\n  }, \"Debug Information Files\")), \".\"), mdx(Note, {\n    mdxType: \"Note\"\n  }, mdx(\"markdown\", null, mdx(\"p\", null, \"Source maps, while also being debug information files, are handled differently\"))), mdx(\"p\", null, \"in Sentry. For more information see \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/product/cli/releases/#sentry-cli-sourcemaps\"\n  }), \"Source Maps in sentry-cli\"), \".\"), mdx(\"h2\", {\n    \"id\": \"checking-files\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#checking-files\",\n    \"aria-label\": \"checking files permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Checking Files\"), mdx(\"p\", null, \"Not all debug information files can be used by Sentry. To see if they are usable\\nor not, you can use the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-cli difutil check\"), \" command:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli difutil check mylibrary.so.debug\\n\\nDebug Info File Check\\n  Type: elf debug companion\\n  Contained debug identifiers:\\n    \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" 924e148f-3bb7-06a0-74c1-36f42f08b40e \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"(\"), \"x86_64\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \")\"), \"\\n  Contained debug information:\\n    \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" symtab, debug\\n  Usable: \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token function\"\n  }), \"yes\"))))))), mdx(\"p\", null, \"This will report the debug identifiers of the debug information file as well as\\nif it passes basic requirements for Sentry.\"), mdx(\"h2\", {\n    \"id\": \"finding-files\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#finding-files\",\n    \"aria-label\": \"finding files permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Finding Files\"), mdx(\"p\", null, \"If you see in Sentry's UI that debug information files are missing, but you are\\nnot sure how to locate them, you can use the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-cli difutil find\"), \" command\\nto look for them:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli difutil \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token function\"\n  }), \"find\"), \" \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \"<\"), \"identifier\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"))))))), mdx(\"p\", null, \"Additionally, \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-cli upload-dif\"), \" can automatically search for files in a\\nfolder or ZIP archive.\"), mdx(\"h2\", {\n    \"id\": \"creating-source-bundles\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#creating-source-bundles\",\n    \"aria-label\": \"creating source bundles permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Creating Source Bundles\"), mdx(\"p\", null, \"To get inline source context in stack traces in the Sentry UI, \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-cli\"), \" can\\nscan debug files for references to source code files, resolve them in the local\\nfile system and bundle them up. The resulting source bundle is an archive\\ncontaining all source files referenced by a specific debug information file.\"), mdx(\"p\", null, \"This is particularly useful when building and uploading debug information files\\nare detached. In this case, a source bundle can be created when building and can\\nbe uploaded at any later point in time with \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-cli upload-dif\"), \".\"), mdx(\"p\", null, \"To create a source bundle, use the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"difutil bundle-sources\"), \" command on a list of\\ndebug information files:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token comment\"\n  }), \"# on the build machine:\"), \"\\nsentry-cli difutil bundle-sources /path/to/files\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"..\"), \".\\n\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token comment\"\n  }), \"# at any later time:\"), \"\\nsentry-cli upload-dif --type sourcebundle /path/to/bundles\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"..\"), \".\")))))), mdx(\"p\", null, \"To create multiple source bundles for all debug information files, use the\\ncommand on each file individually.\"), mdx(\"p\", null, \"Alternatively, add the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--include-sources\"), \" option to the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"upload-dif\"), \" command,\\nwhich generates source bundles on the fly during the upload. This requires that\\nthe upload is performed on the same machine as the application build:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli upload-dif --include-sources /path/to/files\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"..\"), \".\")))))), mdx(\"h2\", {\n    \"id\": \"uploading-files\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#uploading-files\",\n    \"aria-label\": \"uploading files permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Uploading Files\"), mdx(\"p\", null, \"Use the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-cli upload-dif\"), \" command to upload debug information files to\\nSentry. The command will recursively scan the provided folders or ZIP archives.\\nFiles that have already been upload are skipped automatically.\"), mdx(\"p\", null, \"We recommend uploading debug information files when publishing or releasing your\\napplication. Alternatively, files can be uploaded during the build process. See\\n\", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/workflow/debug-files/\"\n  }), mdx(\"em\", {\n    parentName: \"a\"\n  }, \"Debug Information Files\")), \"\\nfor more information.\"), mdx(Note, {\n    mdxType: \"Note\"\n  }, mdx(\"markdown\", null, mdx(\"p\", null, \"You need to specify the organization and project you are working with because\\ndebug information files work on projects. For more information about this refer\\nto \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/product/cli/configuration/#sentry-cli-working-with-projects\"\n  }), \"Working with Projects\"), \".\"))), mdx(\"p\", null, \"A basic debug file upload can be started with:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli upload-dif -o \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \"<\"), \"org\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" -p \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \"<\"), \"project\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" /path/to/files\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"..\"), \".\\n\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" Found \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token number\"\n  }), \"2\"), \" debug information files\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" Prepared debug information files \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token keyword\"\n  }), \"for\"), \" upload\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" Uploaded \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token number\"\n  }), \"2\"), \" missing debug information files\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" File processing complete:\\n\\n  PENDING 1ddb3423-950a-3646-b17b-d4360e6acfc9 \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"(\"), \"MyApp\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \";\"), \" x86_64 executable\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \")\"), \"\\n  PENDING 1ddb3423-950a-3646-b17b-d4360e6acfc9 \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"(\"), \"MyApp\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \";\"), \" x86_64 debug companion\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \")\"))))))), mdx(\"p\", null, \"After the upload, Sentry analyzes the files to symbolicate future events. If you\\nwant to send a native crash to Sentry to verify correct operation, ensure that\\nthe debug files are listed in \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Project Settings > Debug Files\"), \". Alternatively,\\nspecify \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--wait\"), \" in the CLI, which will block until server-side analysis is\\ncomplete:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli upload-dif -o \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \"<\"), \"org\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" -p \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \"<\"), \"project\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" --wait /path/to/files\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"..\"), \".\\n\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" Found \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token number\"\n  }), \"2\"), \" debug information files\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" Prepared debug information files \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token keyword\"\n  }), \"for\"), \" upload\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" Uploaded \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token number\"\n  }), \"2\"), \" missing debug information files\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" File processing complete:\\n\\n      OK 1ddb3423-950a-3646-b17b-d4360e6acfc9 \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"(\"), \"MyApp\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \";\"), \" x86_64 executable\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \")\"), \"\\n      OK 1ddb3423-950a-3646-b17b-d4360e6acfc9 \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"(\"), \"MyApp\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \";\"), \" x86_64 debug companion\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \")\"))))))), mdx(\"h3\", {\n    \"id\": \"upload-options\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#upload-options\",\n    \"aria-label\": \"upload options permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Upload Options\"), mdx(\"p\", null, \"There are a few options you can supply to the upload command:\"), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--wait\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Wait for server-side processing of uploaded files. By default, \", mdx(\"inlineCode\", {\n    parentName: \"dd\"\n  }, \"upload-dif\"), \"\\ncompletes once the debug files have been uploaded to Sentry. After this,\\nSentry analyzes the files and makes them available for symbolication. It makes\\nsense to specify \", mdx(\"inlineCode\", {\n    parentName: \"dd\"\n  }, \"--wait\"), \" to ensure that debug files are ready before sending\\ncrashes to Sentry. This may slow down the command and is not recommended for\\nCI builds.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--no-unwind\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Do not scan for stack unwinding information. Specify this flag for builds with\\ndisabled FPO, or when stack walking occurs on the device. This usually\\nexcludes executables and libraries. They might still be uploaded, if they\\ncontain debug information.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--no-debug\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Do not scan for debug information. This will usually exclude debug companion\\nfiles. They might still be uploaded, if they contain stack unwinding\\ninformation.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--include-sources\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Scans the debug files for references to source code files. If referenced files\\nare available on the local file system, they are bundled and uploaded as a\\nsource archive. This allows Sentry to resolve source context. Only specify\\nthis command when uploading from the same machine as the build. Otherwise, use\\n\", mdx(\"inlineCode\", {\n    parentName: \"dd\"\n  }, \"difutil bundle-sources\"), \" to generate the bundle ahead of time.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--derived-data\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Search for dSYMs in the derived data folder. Xcode stores its build output in\\nthis default location.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--no-zips\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"By default, \", mdx(\"inlineCode\", {\n    parentName: \"dd\"\n  }, \"sentry-cli\"), \" will open and search ZIP archives for debug files.\\nThis is especially useful when downloading builds from iTunes Connect or prior\\nbuild stages in a CI environment. Use this switch to disable if your search\\npaths contain large ZIP archives without debug files to speed up the search.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--force-foreground\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"This option forces the upload to happen in the foreground. This only affects\\nuploads invoked from Xcode build steps. By default, the upload process will\\ndetach when started from Xcode and finish in the background. If you need to\\ndebug the upload process it might be useful to force the upload to run in the\\nforeground.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--info-plist\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Overrides the search path for \", mdx(\"inlineCode\", {\n    parentName: \"dd\"\n  }, \"Info.plist\"), \", useful if it is located in a\\nnon-standard location.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--no-reprocessing\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"This parameter prevents Sentry from triggering reprocessing right away. It can\\nbe useful under rare circumstances where you want to upload files in multiple\\nbatches and you want to ensure that Sentry does not start reprocessing before\\nsome optional dSYMs are uploaded. Note though that someone can still in the\\nmeantime trigger reprocessing from the UI.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--symbol-maps\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Resolve hidden symbols in iTunes Connect builds using BCSymbolMaps. This is\\nneeded to symbolicate crashes if symbols were not uploaded to Apple when\\npublishing the app in the AppStore.\"))), mdx(\"h3\", {\n    \"id\": \"symbol-maps\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#symbol-maps\",\n    \"aria-label\": \"symbol maps permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Symbol Maps\"), mdx(\"p\", null, \"If you are hiding debug symbols from Apple, the debug files will not contain\\nmany useful symbols. In that case, the sentry-cli upload will warn you that it\\nneeds BCSymbolMaps:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli upload-dif \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"..\"), \".\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" Found \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token number\"\n  }), \"34\"), \" debug information files\\n\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token operator\"\n  }), \">\"), \" Warning: Found \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token number\"\n  }), \"10\"), \" symbol files with hidden symbols \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"(\"), \"need BCSymbolMaps\", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \")\"))))))), mdx(\"p\", null, \"In this case, you need the BCSymbolMaps that match your files. Typically, these\\nare generated by the Xcode build process. Supply the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--symbol-maps\"), \" parameter\\nand point it to the folder containing the symbol maps:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli upload-dif --symbol-maps path/to/symbolmaps path/to/debug/symbols\")))))), mdx(\"h3\", {\n    \"id\": \"breakpad-files\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#breakpad-files\",\n    \"aria-label\": \"breakpad files permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Breakpad Files\"), mdx(\"p\", null, \"In contrast to native debug files, Breakpad symbols discard a lot of information\\nthat is not required to process minidumps. Most notably, inline functions are\\nnot declared, such that Sentry is not able to display inline frames in stack\\ntraces.\"), mdx(\"p\", null, \"If possible, upload native debug files such as dSYMs, PDBs or ELF files instead\\nof Breakpad symbols.\"), mdx(\"h2\", {\n    \"id\": \"proguard-mapping-upload\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#proguard-mapping-upload\",\n    \"aria-label\": \"proguard mapping upload permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"ProGuard Mapping Upload\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-cli\"), \" can be used to upload ProGuard files to Sentry; however, in most\\nsituations, you would use the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/getsentry/sentry-android-gradle-plugin\"\n  }), \"Gradle\\nplugin\"), \" to do that. There are some\\nsituations, however, where you would upload ProGuard files manually (for instance\\nwhen you only release some of the builds you are creating).\"), mdx(Note, {\n    mdxType: \"Note\"\n  }, mdx(\"markdown\", null, mdx(\"p\", null, \"You need to specify the organization and project you are working with because\"))), \"ProGuard files work on projects. For more information about this refer to [Working with Projects](/product/cli/configuration/#sentry-cli-working-with-projects).\", mdx(\"p\", null, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"upload-proguard\"), \" command is the one to use for uploading ProGuard files. It\\ntakes the path to one or more ProGuard mapping files and will upload them to\\nSentry. If you want to associate them with an Android app you should also point\\nit to a processed \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"AndroidManifest.xml\"), \" from a build intermediate folder.\\nExample:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli upload-proguard \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"\\\\\"), \"\\n    --android-manifest app/build/intermediates/manifests/full/release/AndroidManifest.xml \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"\\\\\"), \"\\n    app/build/outputs/mapping/release/mapping.txt\")))))), mdx(\"p\", null, \"Since the sentry-java SDK needs to know the UUID of the mapping file, you need\\nto embed it in a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry-debug-meta.properties\"), \" file. If you supply\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--write-properties\"), \" that is done automatically:\"), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeBlock, {\n    language: \"bash\",\n    title: \"\",\n    filename: \"\",\n    mdxType: \"CodeBlock\"\n  }, mdx(\"div\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }), mdx(\"pre\", _extends({\n    parentName: \"div\"\n  }, {\n    \"className\": \"language-bash\"\n  }), mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"sentry-cli upload-proguard \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"\\\\\"), \"\\n    --android-manifest app/build/intermediates/manifests/full/release/AndroidManifest.xml \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"\\\\\"), \"\\n    --write-properties app/build/intermediates/assets/release/sentry-debug-meta.properties \", mdx(\"span\", _extends({\n    parentName: \"code\"\n  }, {\n    \"className\": \"token punctuation\"\n  }), \"\\\\\"), \"\\n    app/build/outputs/mapping/release/mapping.txt\")))))), mdx(\"h3\", {\n    \"id\": \"upload-options-1\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#upload-options-1\",\n    \"aria-label\": \"upload options 1 permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Upload Options\"), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--no-reprocessing\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"This parameter prevents Sentry from triggering reprocessing right away. It can\\nbe useful under rare circumstances where you want to upload files in multiple\\nbatches and you want to ensure that Sentry does not start reprocessing before\\nsome optional dSYMs are uploaded. Note though that someone can still in the\\nmeantime trigger reprocessing from the UI.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--no-upload\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Disables the actual upload. This runs all steps for the processing but does\\nnot trigger the upload (this also automatically disables reprocessing. This is\\nuseful if you just want to verify the mapping files and write the ProGuard\\nUUIDs into a properties file.\"))), mdx(\"p\", null, mdx(\"dl\", {\n    parentName: \"p\"\n  }, mdx(\"dt\", {\n    parentName: \"dl\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"dt\"\n  }, \"--require-one\")), mdx(\"dd\", {\n    parentName: \"dl\"\n  }, \"Requires at least one file to upload or the command will error.\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#checking-files","title":"Checking Files"},{"url":"#finding-files","title":"Finding Files"},{"url":"#creating-source-bundles","title":"Creating Source Bundles"},{"url":"#uploading-files","title":"Uploading Files","items":[{"url":"#upload-options","title":"Upload Options"},{"url":"#symbol-maps","title":"Symbol Maps"},{"url":"#breakpad-files","title":"Breakpad Files"}]},{"url":"#proguard-mapping-upload","title":"ProGuard Mapping Upload","items":[{"url":"#upload-options-1","title":"Upload Options"}]}]},"internal":{"type":"Mdx"}}}},"pageContext":{"excerpt":"Debug information files allow Sentry to extract stack traces and provide more\ninformation about crash reports for most compiled platforms.  sentry-cli  can be\nused to validate and upload debug information files. For more general\ninformation, refer to  Debug Information Files . Source maps, while also being debug information files, are handled differently in Sentry. For more information see  Source Maps in sentry-cli . Checking Files Not all debug information files can be used by Sentry. To see if they are usable\nor not, you can use the  sentry-cli difutil check  command: This will report the debug identifiers of the debug information file as well as\nif it passes basic requirements for Sentry. Finding Files If you see in Sentry's UI that debug information files are missing, but you are\nnot sure how to locate them, you can use the  sentry-cli difutil find  command\nto look for them: Additionally,  sentry-cli upload-dif  can automatically search for files in a\nfolder or ZIP archive. Creating Source Bundles To get inline source context in stack traces in the Sentry UI,  sentry-cli  can\nscan debug files for references to source code files, resolve them in the local\nfile system and bundle them up. The resulting source bundle is an archive\ncontaining all source files referenced by a specific debug information file. This is particularly useful when building and uploading debug information files\nare detached. In this case, a source bundle can be created when building and can\nbe uploaded at any later point in time with  sentry-cli upload-dif . To create a source bundle, use the  difutil bundle-sources  command on a list of\ndebug information files: To create multiple source bundles for all debug information files, use the\ncommand on each file individually. Alternatively, add the  --include-sources  option to the  upload-dif  command,\nwhich generates source bundles on the fly during the upload. This requires that\nthe upload is performed on the same machine as the application build: Uploading Files Use the  sentry-cli upload-dif  command to upload debug information files to\nSentry. The command will recursively scan the provided folders or ZIP archives.\nFiles that have already been upload are skipped automatically. We recommend uploading debug information files when publishing or releasing your\napplication. Alternatively, files can be uploaded during the build process. See\n Debug Information Files \nfor more information. You need to specify the organization and project you are working with because\ndebug information files work on projects. For more information about this refer\nto  Working with Projects . A basic debug file upload can be started with: After the upload, Sentry analyzes the files to symbolicate future events. If you\nwant to send a native crash to Sentry to verify correct operation, ensure that\nthe debug files are listed in  Project Settings > Debug Files . Alternatively,\nspecify  --wait  in the CLI, which will block until server-side analysis is\ncomplete: Upload Options There are a few options you can supply to the upload command: --wait : Wait for server-side processing of uploaded files. By default,  upload-dif \ncompletes once the debug files have been uploaded to Sentry. After this,\nSentry analyzes the files and makes them available for symbolication. It makes\nsense to specify  --wait  to ensure that debug files are ready before sending\ncrashes to Sentry. This may slow down the command and is not recommended for\nCI builds. --no-unwind : Do not scan for stack unwinding information. Specify this flag for builds with\ndisabled FPO, or when stack walking occurs on the device. This usually\nexcludes executables and libraries. They might still be uploaded, if they\ncontain debug information. --no-debug : Do not scan for debug information. This will usually exclude debug companion\nfiles. They might still be uploaded, if they contain stack unwinding\ninformation. --include-sources : Scans the debug files for references to source code files. If referenced files\nare available on the local file system, they are bundled and uploaded as a\nsource archive. This allows Sentry to resolve source context. Only specify\nthis command when uploading from the same machine as the build. Otherwise, use\n difutil bundle-sources  to generate the bundle ahead of time. --derived-data : Search for dSYMs in the derived data folder. Xcode stores its build output in\nthis default location. --no-zips : By default,  sentry-cli  will open and search ZIP archives for debug files.\nThis is especially useful when downloading builds from iTunes Connect or prior\nbuild stages in a CI environment. Use this switch to disable if your search\npaths contain large ZIP archives without debug files to speed up the search. --force-foreground : This option forces the upload to happen in the foreground. This only affects\nuploads invoked from Xcode build steps. By default, the upload process will\ndetach when started from Xcode and finish in the background. If you need…","title":"Debug Information Files","description":null,"draft":null,"noindex":null,"notoc":null,"sidebar_order":3,"redirect_from":null,"keywords":null,"id":"b651cfcf-57fe-508a-9039-3bd06688de63","legacy":false}},"staticQueryHashes":["1218203755","1222113826","1222113826","1766336459","2158593473","2764967025","3345802723","3818502851","3990806462","4015007367","4192517163","4264099332","518019976"]}