|
| 1 | +.. _doc_native_debug_symbols: |
| 2 | + |
| 3 | +Native Debug Symbols |
| 4 | +==================== |
| 5 | + |
| 6 | +When your game crashes on Android, you often see obfuscated stack traces in Play Console |
| 7 | +or other crash reporting tools like Firebase Crashlytics. To make these stack traces human-readable (symbolicated), |
| 8 | +you need native debug symbols that correspond to your game's exported build. |
| 9 | + |
| 10 | +Godot now provides downloadable native debug symbols for each official export template. |
| 11 | + |
| 12 | +Getting Native Debug symbols for official templates |
| 13 | +--------------------------------------------------- |
| 14 | + |
| 15 | +Native debug symbol files are provided for every stable Godot release |
| 16 | +and can be downloaded from the `GitHub release page <https://github.com/godotengine/godot/releases/>`_. |
| 17 | + |
| 18 | +For example, to get the native debug symbols for version ``4.5.1.stable``: |
| 19 | + |
| 20 | +- Go to `4.5.1.stable release page <https://github.com/godotengine/godot/releases/>`_ |
| 21 | +- Download the release artifact ``Godot_native_debug_symbols.4.5.1.stable.template_release.android.zip`` |
| 22 | + |
| 23 | +Getting Native Debug symbols for custom builds |
| 24 | +---------------------------------------------- |
| 25 | + |
| 26 | +Your exported template and its native debug symbols must come from the **same build**, |
| 27 | +so you can use the official symbols only if you are using the **official export templates**. |
| 28 | +If you are building **custom export templates**, you need to generate matching symbol files yourself. |
| 29 | + |
| 30 | +To do so, add ``debug_symbols=yes separate_debug_symbols=yes`` to your scons build command. |
| 31 | +This will generate a file named ``android-template-release-native-symbols.zip`` containing the native debug symbols for your custom build. |
| 32 | + |
| 33 | +For example, |
| 34 | + |
| 35 | +:: |
| 36 | + |
| 37 | + scons platform=android target=template_release debug_symbols=yes separate_debug_symbols=yes generate_android_binaries=yes |
| 38 | + |
| 39 | +If you are building for multiple architectures, you should include the ``separate_debug_symbols=yes`` only in the last build command, |
| 40 | +similar to how ``generate_android_binaries=yes`` is used. |
| 41 | + |
| 42 | +:: |
| 43 | + |
| 44 | + scons platform=android arch=arm32 target=template_release debug_symbols=yes |
| 45 | + scons platform=android arch=arm64 target=template_release debug_symbols=yes |
| 46 | + scons platform=android arch=x86_32 target=template_release debug_symbols=yes |
| 47 | + scons platform=android arch=x86_64 target=template_release debug_symbols=yes separate_debug_symbols=yes generate_android_binaries=yes |
| 48 | + |
| 49 | +Uploading Symbols to Google Play Console |
| 50 | +---------------------------------------- |
| 51 | + |
| 52 | +Follow these steps to upload the native debug symbols: |
| 53 | + |
| 54 | +1. Open `Play Console <https://play.google.com/console>`_. |
| 55 | +2. Select any app. |
| 56 | +3. In the left menu, navigate to ``Test and release > Latest releases and bundles``. |
| 57 | +4. Now choose the relevant bundle and open it. |
| 58 | +5. Select the ``Downloads`` tab, and scroll down to the ``Assets`` section. |
| 59 | +6. Next to ``Native debug symbols``, click the upload arrow icon. |
| 60 | +7. Select and upload the corresponding native debug symbols file for that build version. |
| 61 | + |
| 62 | +Alternatively, you can upload the symbols when creating a new release: |
| 63 | + |
| 64 | +1. On the Create release page, locate your new release bundle. |
| 65 | +2. Click the three-dot menu beside it. |
| 66 | +3. Choose ``Upload native debug symbols (.zip)`` from the menu. |
| 67 | +4. Select and upload the corresponding native debug symbols file for that build version. |
| 68 | + |
| 69 | +Manually Symbolicating Crash Logs |
| 70 | +--------------------------------- |
| 71 | + |
| 72 | +You can also symbolicate the crash logs manually using the `ndk-stack <https://developer.android.com/ndk/guides/ndk-stack>`_ tool included in the Android NDK. |
| 73 | + |
| 74 | +1. Extract the native debug symbols zip you downloaded earlier (or generated with your custom build). |
| 75 | +2. Save your crash log to a text file (for example, ``crash.txt``). |
| 76 | +3. Run ndk-stack with the path to the symbol directory that matches the crash's CPU architecture (for example, ``arm64-v8a``): |
| 77 | + |
| 78 | +:: |
| 79 | + |
| 80 | + ndk-stack -sym path/to/native_debug_symbols/arm64-v8a/ -dump crash.txt |
| 81 | + |
| 82 | +4. The output will display a symbolicated trace, showing file names and line numbers in Godot's source code (or your custom build). |
0 commit comments