When built with -gmlt, .dSYMs are (by design) missing the `DW_AT_linkage_name` which Breakpad uses to fill out the (name-mangled) function names. Thankfully, the .dSYM contains both the old-school LC_SYMTAB command containing the STABS-format symbols (which include the fully-qualified C++ symbol names we want, but no actual compilation unit data), as well as the LC_SEGMENT_64 containing the __DWARF segment with the minimal -gmlt debug information (which excludes the name-mangled C++ symbols). Unfortunately, since the .dSYM's STABS does not define compilation units, the usual path in `StabsReader` ignores all the fully-qualified C++ symbol names for the functions: https://chromium.googlesource.com/breakpad/breakpad/+/bd9d94c70843620adeebcd73c243001237c6d426/src/common/stabs_reader.cc#100 Fortunately, when built for macOS platforms (`HAVE_MACH_O_NLIST_H`), `StabsReader` supports storing all the STABS-format symbols as `Extern`s, regardless of whether or not they're in a compilation unit: https://chromium.googlesource.com/breakpad/breakpad/+/bd9d94c70843620adeebcd73c243001237c6d426/src/common/stabs_reader.cc#119 Currently, when there's both a `Function` and an `Extern` with the same address, `Module` discards the `Extern`: https://chromium.googlesource.com/breakpad/breakpad/+/bd9d94c70843620adeebcd73c243001237c6d426/src/common/module.cc#161 This CL adds a new `-x` option to the Mac `dump_syms` which prefers the Extern function name if there's a mismatch. Bug: https://bugs.chromium.org/p/google-breakpad/issues/detail?id=883 Change-Id: I0d32adc64fbf567600b0a5ca63c71c422b7f0f8c Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4453650 Reviewed-by: Joshua Peraza <jperaza@chromium.org> |
||
|---|---|---|
| .github/workflows | ||
| android | ||
| autotools | ||
| docs | ||
| m4 | ||
| src | ||
| .clang-format | ||
| .gitignore | ||
| aclocal.m4 | ||
| appveyor.yml | ||
| AUTHORS | ||
| breakpad-client.pc.in | ||
| breakpad.pc.in | ||
| ChangeLog | ||
| codereview.settings | ||
| configure | ||
| configure.ac | ||
| default.xml | ||
| DEPS | ||
| DIR_METADATA | ||
| INSTALL | ||
| LICENSE | ||
| Makefile.am | ||
| Makefile.in | ||
| NEWS | ||
| OWNERS | ||
| README.ANDROID | ||
| README.md | ||
Breakpad
Breakpad is a set of client and server components which implement a crash-reporting system.
- Homepage
- Documentation
- Bugs
- Discussion/Questions: google-breakpad-discuss@googlegroups.com
- Developer/Reviews: google-breakpad-dev@googlegroups.com
- Tests:
- Coverage
Getting started (from main)
-
First, download depot_tools and ensure that they’re in your
PATH. -
Create a new directory for checking out the source code (it must be named breakpad).
mkdir breakpad && cd breakpad -
Run the
fetchtool from depot_tools to download all the source repos.fetch breakpad cd src -
Build the source.
./configure && makeYou can also cd to another directory and run configure from there to build outside the source tree.
This will build the processor tools (
src/processor/minidump_stackwalk,src/processor/minidump_dump, etc), and when building on Linux it will also build the client libraries and some tools (src/tools/linux/dump_syms/dump_syms,src/tools/linux/md2core/minidump-2-core, etc). -
Optionally, run tests.
make check -
Optionally, install the built libraries
make install
If you need to reconfigure your build be sure to run make distclean first.
To update an existing checkout to a newer revision, you can
git pull as usual, but then you should run gclient sync to ensure that the
dependent repos are up-to-date.
To request change review
-
Follow the steps above to get the source and build it.
-
Make changes. Build and test your changes. For core code like processor use methods above. For linux/mac/windows, there are test targets in each project file.
-
Commit your changes to your local repo and upload them to the server. http://dev.chromium.org/developers/contributing-code e.g.
git commit ... && git cl upload ...You will be prompted for credential and a description. -
At https://chromium-review.googlesource.com/ you'll find your issue listed; click on it, then “Add reviewer”, and enter in the code reviewer. Depending on your settings, you may not see an email, but the reviewer has been notified with google-breakpad-dev@googlegroups.com always CC’d.