{"id":28565323,"url":"https://github.com/countly/countly-breakpad","last_synced_at":"2025-06-10T14:14:49.671Z","repository":{"id":146649736,"uuid":"286983641","full_name":"Countly/countly-breakpad","owner":"Countly","description":null,"archived":false,"fork":false,"pushed_at":"2020-09-15T14:51:56.000Z","size":10613,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-16T11:21:10.262Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Countly.png","metadata":{"files":{"readme":"README.ANDROID","changelog":"ChangeLog","contributing":"docs/contributing_to_breakpad.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-12T10:24:08.000Z","updated_at":"2024-06-19T07:37:18.557Z","dependencies_parsed_at":null,"dependency_job_id":"b29aa582-3dd1-4625-be5c-04e94f3c73eb","html_url":"https://github.com/Countly/countly-breakpad","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Countly%2Fcountly-breakpad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Countly%2Fcountly-breakpad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Countly%2Fcountly-breakpad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Countly%2Fcountly-breakpad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Countly","download_url":"https://codeload.github.com/Countly/countly-breakpad/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Countly%2Fcountly-breakpad/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259090407,"owners_count":22803677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T14:14:49.077Z","updated_at":"2025-06-10T14:14:49.663Z","avatar_url":"https://github.com/Countly.png","language":"C++","readme":"Google Breakpad for Android\n===========================\n\nThis document explains how to use the Google Breakpad client library\non Android, and later generate valid stack traces from the minidumps\nit generates.\n\nThis release supports ARM, x86 and MIPS based Android systems.\nThis release requires NDK release r11c or higher.\n\nI. Building the client library:\n===============================\n\nThe Android client is built as a static library that you can\nlink into your own Android native code. There are two ways to\nbuild it:\n\nI.1. Building with ndk-build:\n-----------------------------\n\nIf you're using the ndk-build build system, you can follow\nthese simple steps:\n\n  1/ Include android/google_breakpad/Android.mk from your own\n     project's Android.mk\n\n     This can be done either directly, or using ndk-build's\n     import-module feature.\n\n  2/ Link the library to one of your modules by using:\n\n     LOCAL_STATIC_LIBRARIES += breakpad_client\n\nNOTE: The client library requires a C++ STL implementation,\n      which you can select with APP_STL in your Application.mk\n\n      It has been tested succesfully with both STLport and GNU libstdc++\n\n\nI.2. Building with a standalone Android toolchain:\n--------------------------------------------------\n\nAll you need to do is configure your build with the right 'host'\nvalue, and disable the processor and tools, as in:\n\n  $GOOGLE_BREAKPAD_PATH/configure --host=arm-linux-androideabi \\\n                                  --disable-processor \\\n                                  --disable-tools\n  make -j4\n\nThe library will be under src/client/linux/libbreakpad_client.a\n\nYou can also use 'make check' to run the test suite on a connected\nAndroid device. This requires the Android 'adb' tool to be in your\npath.\n\nII. Using the client library in Android:\n========================================\n\nThe usage instructions are very similar to the Linux ones that are\nfound at https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/linux_starter_guide.md\n\n1/ You need to include \"client/linux/handler/exception_handler.h\" from a C++\n   source file.\n\n2/ If you're not using ndk-build, you also need to:\n\n   - add the following to your compiler include search paths:\n       $GOOGLE_BREAKPAD_PATH/src\n       $GOOGLE_BREAKPAD_PATH/src/common/android/include\n\n   - add -llog to your linker flags\n\n   Note that ndk-build does that for your automatically.\n\n3/ Keep in mind that there is no /tmp directory on Android.\n\n   If you use the library from a regular Android applications, specify a\n   path under your app-specific storage directory. An alternative is to\n   store them on the SDCard, but this requires a specific permission.\n\nFor a concrete example, see the sample test application under\nandroid/sample_app. See its README for more information.\n\n\nIII. Getting a stack trace on the host:\n=======================================\n\nThis process is similar to other platforms, but here's a quick example:\n\n1/ Retrieve the minidumps on your development machine.\n\n2/ Dump the symbols for your native libraries with the 'dump_syms' tool.\n   This first requires building the host version of Google Breakpad, then\n   calling:\n\n      dump_syms $PROJECT_PATH/obj/local/$ABI/libfoo.so \u003e libfoo.so.sym\n\n3/ Create the symbol directory hierarchy.\n\n   The first line of the generated libfoo.so.sym will have a \"MODULE\"\n   entry that carries a hexadecimal version number, e.g.:\n\n     MODULE Linux arm D51B4A5504974FA6ECC1869CAEE3603B0 test_google_breakpad\n\n   Note: The second field could be either 'Linux' or 'Android'.\n\n   Extract the version number, and a 'symbol' directory, for example:\n\n      $PROJECT_PATH/symbols/libfoo.so/$VERSION/\n\n   Copy/Move your libfoo.sym file there.\n\n4/ Invoke minidump_stackwalk to create the stack trace:\n\n     minidump_stackwalk $MINIDUMP_FILE $PROJECT_PATH/symbols\n\nNote that various helper scripts can be found on the web to automate these\nsteps.\n\nIV. Verifying the Android build library:\n========================================\n\nIf you modify Google Breakpad and want to check that it still works correctly\non Android, please run the android/run-checks.sh script which will do all\nnecessary verifications for you. This includes:\n\n  - Rebuilding the full host binaries.\n  - Rebuilding the full Android binaries with configure/make.\n  - Rebuilding the client library unit tests, and running them on a device.\n  - Rebuilding the client library with ndk-build.\n  - Building, installing and running a test crasher program on a device.\n  - Extracting the corresponding minidump, dumping the test program symbols\n    and generating a stack trace.\n  - Checking the generated stack trace for valid source locations.\n\nFor more details, please run:\n\n  android/run-checks.sh --help-all\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcountly%2Fcountly-breakpad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcountly%2Fcountly-breakpad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcountly%2Fcountly-breakpad/lists"}