Closed Bug 420474 Opened 16 years ago Closed 15 years ago

upload debug info for Linux and mac builds to symbol server

Categories

(Toolkit :: Crash Reporting, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: ted, Assigned: ted)

References

Details

(Whiteboard: [not needed for 1.9])

Attachments

(1 file, 1 obsolete file)

binutils has supported an ELF section called ".gnu_debuglink" for a while now that allows debug symbols to be in a separate file. It's just a matter of a few objcopy commands:
objcopy --only-keep-debug foo foo.dbg
objcopy --add-gnu-debuglink=foo.dbg foo

We should do this during the symbol store building phase, and upload the debug files to the symbol server. I have a hack of a Python script that will let you download the debug files for a build from the symbol server, and then you can actually get a stack in gdb, which is pretty awesome.

This patch just covers the symbolstore.py changes, we'd still need to pass --copy in the invocation in the top-level Makefile.in. I don't know if we need to test for objdump, does binutils get installed when you install a compiler/linker?

Also, no clue if we can make any of this work on Mac, there isn't an objcopy command there (at least not by default). Stan: any idea if this stuff works there?
Attachment #306751 - Flags: review?(benjamin)
Assignee: nobody → ted.mielczarek
I have a build here:
http://people.mozilla.com/~tmielczarek/firefox-3.0b4pre.en-US.linux-i686.tar.bz2 (with this patch)

and a script here:
http://people.mozilla.com/~tmielczarek/fetch-symbols.py

which you can use to download the symbols for that build from the symbol server here:
http://mavra.perilith.com/~luser/symbols/

and apparently it works in GDB, which is cool.
The Mac dwarf2 machinery leaves debug info in the .o files by default, so GDB will normally want to have a full objdir laying around.  However, it is possible to create so-called "dSYM" files that collect all the dwarf2 info into a single file. It was designed to supply fastloading debug info for frameworks that don't change often (dSYMs are fast to load, but slower to create), but could be used to make symbol files for a mozilla build. Basically all done with compiler/linker flags, so probably not too hard to get going.
Comment on attachment 306751 [details] [diff] [review]
use gnu_debuglink if --copy is specified to symbolstore.py [checked in]

Is there any particular reason you kept the commented --strip-debug lines?
Attachment #306751 - Flags: review?(benjamin) → review+
Comment on attachment 306751 [details] [diff] [review]
use gnu_debuglink if --copy is specified to symbolstore.py [checked in]

I think I just neglected to take it out. I'll remove that before checkin.
Attachment #306751 - Flags: approval1.9?
Comment on attachment 306751 [details] [diff] [review]
use gnu_debuglink if --copy is specified to symbolstore.py [checked in]

a1.9=beltzner
Attachment #306751 - Flags: approval1.9? → approval1.9+
Comment on attachment 306751 [details] [diff] [review]
use gnu_debuglink if --copy is specified to symbolstore.py [checked in]

Still need to enable this in Makefile.in
Attachment #306751 - Attachment description: use gnu_debuglink if --copy is specified to symbolstore.py → use gnu_debuglink if --copy is specified to symbolstore.py [checked in]
Comment on attachment 306751 [details] [diff] [review]
use gnu_debuglink if --copy is specified to symbolstore.py [checked in]

This is checked in, not worried about fixing the rest of this for 1.9, so just clearing the approval flag to get it off the list of things that had approval but might not have landed.
Attachment #306751 - Attachment is obsolete: true
Attachment #306751 - Flags: approval1.9+
Attachment #306751 - Flags: approval1.9+
Whiteboard: [not needed for 1.9]
Just to be clear, since I had asked for this in Thunderbird but was invalidated in favor of this one, will I be able to download symbols for Thunderbird -- either Nightlies or Tinderbox??
Yeah, I need to check in one more patch, and then this should work.
Summary: upload debug info for Linux builds to symbol server (and use .gnu_debuglink) → upload debug info for Linux and mac builds to symbol server
Oh hey, here's that patch.
Attachment #362972 - Flags: review?(benjamin)
Attachment #362972 - Flags: review?(benjamin) → review+
Comment on attachment 362972 [details] [diff] [review]
implement CopyDebug on mac, turn it on by default for linux+mac

>diff --git a/toolkit/crashreporter/tools/symbolstore.py b/toolkit/crashreporter/tools/symbolstore.py

>+        print >>sys.stderr, "rel_path %s, full_path %s" % (rel_path, full_path)

extraneous print?
Pushed to m-c:
http://hg.mozilla.org/mozilla-central/rev/dbd5b5c6710c

I'll have to dig up my Python script for Mac/Linux symbol-serverness.
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Depends on: 483212
This might be causing the Linux Z test weirdness (where sometimes .dbg files are being counted as part of Z and sometimes they're not, making the test basically unusable).
Depends on: 483548
would be nice to have this for 1.9.1 too
Flags: wanted1.9.1?
Attachment #362972 - Flags: approval1.9.1?
Comment on attachment 362972 [details] [diff] [review]
implement CopyDebug on mac, turn it on by default for linux+mac

Useful for testing etc, seems to be working fine on trunk, doesn't affect any actual product code. (Strictly build-system bits related to symbol packaging.)
Comment on attachment 362972 [details] [diff] [review]
implement CopyDebug on mac, turn it on by default for linux+mac

a=shaver
Attachment #362972 - Flags: approval1.9.1? → approval1.9.1+
Comment on attachment 362972 [details] [diff] [review]
implement CopyDebug on mac, turn it on by default for linux+mac

Apparently I never landed this on 1.9.1. :-(
Attachment #362972 - Flags: approval1.9.1+
You need to log in before you can comment on or make changes to this bug.