<div dir="ltr"><div dir="ltr">Yay!<div><br></div><div>In case anyone is interested in the details, the Breakpad symbol format is documented here: <a href="https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/symbol_files.md">https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/symbol_files.md</a></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Dec 3, 2018 at 5:39 AM Pavel Labath via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org">lldb-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello all,<br>
<br>
I'd like to propose adding support for reading breakpad symbol files to <br>
LLDB.<br>
<br>
The breakpad files are textual files, which contain just enough<br>
information to produce a backtrace from a crash<br>
dump. This information includes:<br>
<br>
- UUID, architecture and name of the module<br>
- line tables<br>
- list of symbols<br>
- unwind information<br>
<br>
They are meant to complement the "minidump" files (already supported by <br>
lldb), which are the "core" files produced by breakpad when an <br>
application crashes.<br>
<br>
A minimal breakpad file could look like this:<br>
MODULE Linux x86_64 0000000024B5D199F0F766FFFFFF5DC30 a.out<br>
INFO CODE_ID 00000000B52499D1F0F766FFFFFF5DC3<br>
FILE 0 /tmp/a.c<br>
FUNC 1010 10 0 _start<br>
1010 4 4 0<br>
1014 5 5 0<br>
1019 5 6 0<br>
101e 2 7 0<br>
PUBLIC 1010 0 _start<br>
STACK CFI INIT 1010 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^<br>
STACK CFI 1011 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +<br>
STACK CFI 1014 .cfa: $rbp 16 +<br>
<br>
Even though this data would normally be considered "symbol" information,<br>
in the current lldb infrastructure it is assumed every SymbolFile object<br>
is backed by an ObjectFile instance. So, in order to better interoperate<br>
with the rest of the code (particularly symbol vendors). I propose to <br>
also add an ObjectFileBreakpad class to access the breakpad file at a <br>
lower level. My plan tentative plan is to present the individual chunks <br>
of the breakpad file as ObjectFile , which can then be used by<br>
other parts of the codebase (SymbolFileBreakpad ?) to vend the necessary<br>
information.<br>
<br>
I have a preliminary patch (D55214), which adds the scaffolding <br>
necessary to recognise breakpad files as on object format, and parses <br>
the information in the breakpad header (i.e., it's UUID and <br>
architecture). The other parts are to be added later.<br>
<br>
Please let me know if you have any questions or concerns about this,<br>
pavel<br>
_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br>
</blockquote></div>