NDK Symbols
For Android applications, when native code is used it will be compiled into shared object files, usually with the symbol names removed. In order to replace the obfuscated data with a human-readable stacktrace, a shared object (.so
) file containing those symbols is required.
Use the POST /ndk-symbol endpoint to upload shared object files from your build.
Compatibility
To use this API you will need:
a compatible version of the BugSnag library in your app:
(for On-premise) to be using a recent version of the Upload API (v3.2211.0+ single machine or v5.2211.0+ of clustered)
If you cannot use the latest API you need to use the legacy endpoints for which documentation can be found on our legacy page.
cURL example
Extracting symbols
The intermediate shared object files generated for an Android NDK build will contain the symbols. Since only symbols are required, it is recommend that you remove the executable code in order to reduce file size.
To check whether a shared object file contains debug symbols, run the file
command with the path to the shared object file. The output will include stripped
if the file has been stripped of debug symbols, and debug_info, not stripped
if it contains debug symbols.
To extract symbols from a full shared object file that contains executable code and symbols, run the objcopy
command with the following parameters:
If you do not have an objcopy
in your path you will be able to find one using find $ANDROID_HOME/ndk -iname "*objcopy"
on macOS, Linux, and Cygwin. Note that for NDK version 23 and higher you should use llvm-objcopy
while for version 22 and lower you must use objcopy
(which is GNU objcopy).
Symbolication guide
See our symbolication guide for a higher-level overview of integrating uploads into your build systems to see full stacktraces for all your releases.