[lldb-dev] Adding breakpad "symbol" file support
Pavel Labath via lldb-dev
lldb-dev at lists.llvm.org
Mon Dec 3 05:39:56 PST 2018
Hello all,
I'd like to propose adding support for reading breakpad symbol files to
LLDB.
The breakpad files are textual files, which contain just enough
information to produce a backtrace from a crash
dump. This information includes:
- UUID, architecture and name of the module
- line tables
- list of symbols
- unwind information
They are meant to complement the "minidump" files (already supported by
lldb), which are the "core" files produced by breakpad when an
application crashes.
A minimal breakpad file could look like this:
MODULE Linux x86_64 0000000024B5D199F0F766FFFFFF5DC30 a.out
INFO CODE_ID 00000000B52499D1F0F766FFFFFF5DC3
FILE 0 /tmp/a.c
FUNC 1010 10 0 _start
1010 4 4 0
1014 5 5 0
1019 5 6 0
101e 2 7 0
PUBLIC 1010 0 _start
STACK CFI INIT 1010 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
STACK CFI 1011 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
STACK CFI 1014 .cfa: $rbp 16 +
Even though this data would normally be considered "symbol" information,
in the current lldb infrastructure it is assumed every SymbolFile object
is backed by an ObjectFile instance. So, in order to better interoperate
with the rest of the code (particularly symbol vendors). I propose to
also add an ObjectFileBreakpad class to access the breakpad file at a
lower level. My plan tentative plan is to present the individual chunks
of the breakpad file as ObjectFile , which can then be used by
other parts of the codebase (SymbolFileBreakpad ?) to vend the necessary
information.
I have a preliminary patch (D55214), which adds the scaffolding
necessary to recognise breakpad files as on object format, and parses
the information in the breakpad header (i.e., it's UUID and
architecture). The other parts are to be added later.
Please let me know if you have any questions or concerns about this,
pavel
More information about the lldb-dev
mailing list