Building Firefox with Debug Symbols

  • Revision slug: Building_Firefox_with_Debug_Symbols
  • Revision title: Building Firefox with Debug Symbols
  • Revision id: 53902
  • Created:
  • Creator: Johnjbarton
  • Is current revision? No
  • Comment 62 words added

Revision Content

 

By default, a release build of Firefox will not generate debug symbols suitable for debugging or post-processing into the breakpad symbol format. Use the following mozconfig settings to do a build with symbols:

On Windows

To be suecessful you need to do three things.

First you have to issue the following command in the shell where you plan to build:

export MOZ_DEBUG_SYMBOLS=1
Second you need to delete the 'obj' directory from the previous build so you start fresh. Third you need to add these lines to you .mozconfig:
export MOZ_DEBUG_SYMBOLS=1
ac_add_options --enable-debugger-info-modules=yes

Note that a typical release build will have additional options. See {{ Source_cvs("tools/tinderbox-configs/firefox/win32/mozconfig") }} for the configuration used for nightly builds.

On Mac

 export CFLAGS="-gdwarf-2"
 export CXXFLAGS="-gdwarf-2"

You should use CFLAGS/CXXFLAGS instead of passing compiler flags in --enable-optimize, because --enable-optimize=flags overrides module-specific optimization settings, which you really don't want to do. See {{ Bug("407794") }} for more info.

See http://hg.mozilla.org/build/buildbot-configs/file/tip/mozilla2/macosx/mozilla-central/nightly/mozconfig for the configuration used for trunk nightly builds.

Note that the 1.9.0 branch doesn't have dwarf support on Mac, the configuration there is:

 export CFLAGS="-g -gfull"
 export CXXFLAGS="-g -gfull"

See {{ Source_cvs("tools/tinderbox-configs/firefox/macosx/mozconfig") }} for the configuration used for 1.9.0 nightly builds.

On Linux

Unfortunately the default debugger flags produce output that cannot be used with crash reporter, so you have to force compatible debugger output like this:

 export CFLAGS="-gstabs+"
 export CXXFLAGS="-gstabs+"

See {{ Source_cvs("tools/tinderbox-configs/firefox/linux/mozconfig") }} for the configuration used for nightly builds.

Breakpad symbol files

After the build is complete, run the following command to generate an archive of Breakpad symbol files:

make -C objdir buildsymbols

The tinderbox uses an additional uploadsymbols target to upload symbols to a socorro server. See {{ Source_cvs("toolkit/crashreporter/tools/upload_symbols.sh") }} for more information about the environment variables used by this target.

{{ languages( { "ja": "ja/Building_Firefox_with_Debug_Symbols" } ) }}

Revision Source

<p> </p>
<p>By default, a release build of Firefox will not generate debug symbols suitable for debugging or post-processing into the <a href="/en/Crash_reporting" title="en/Crash_reporting">breakpad</a> symbol format. Use the following <a href="/en/Configuring_Build_Options" title="en/Configuring_Build_Options">mozconfig</a> settings to do a build with symbols:</p>
<h3 name="On_Windows">On Windows</h3>
<p>To be suecessful you need to do three things. </p>
<p>First you have to issue the following command in the shell where you plan to build:</p>
<pre>export MOZ_DEBUG_SYMBOLS=1
</pre>
Second you need to delete the 'obj' directory from the previous build so you start fresh.
Third you need to add these lines to you .mozconfig:
<pre class="eval">export MOZ_DEBUG_SYMBOLS=1
ac_add_options --enable-debugger-info-modules=yes
</pre>
<p>Note that a typical release build will have additional options. See {{ Source_cvs("tools/tinderbox-configs/firefox/win32/mozconfig") }} for the configuration used for nightly builds.</p><h3 name="On_Mac">On Mac</h3>
<pre class="eval"> export CFLAGS="-gdwarf-2"
 export CXXFLAGS="-gdwarf-2"
</pre>
<p>You should use CFLAGS/CXXFLAGS instead of passing compiler flags in --enable-optimize, because --enable-optimize=flags overrides module-specific optimization settings, which you really don't want to do. See {{ Bug("407794") }} for more info.</p>
<p>See <a class="moz-txt-link-freetext external" href="http://hg.mozilla.org/build/buildbot-configs/file/tip/mozilla2/macosx/mozilla-central/nightly/mozconfig">http://hg.mozilla.org/build/buildbot-configs/file/tip/mozilla2/macosx/mozilla-central/nightly/mozconfig</a> for the configuration used for trunk nightly builds.</p>
<p>Note that the 1.9.0 branch doesn't have dwarf support on Mac, the configuration there is:</p>
<pre class="eval"> export CFLAGS="-g -gfull"
 export CXXFLAGS="-g -gfull"
</pre>
<p>See {{ Source_cvs("tools/tinderbox-configs/firefox/macosx/mozconfig") }} for the configuration used for 1.9.0 nightly builds.</p>
<h3 name="On_Linux">On Linux</h3>
<p>Unfortunately the default debugger flags produce output that cannot be used with crash reporter, so you have to force compatible debugger output like this:</p>
<pre class="eval"> export CFLAGS="-gstabs+"
 export CXXFLAGS="-gstabs+"
</pre>
<p>See {{ Source_cvs("tools/tinderbox-configs/firefox/linux/mozconfig") }} for the configuration used for nightly builds.</p>
<h3 name="Breakpad_symbol_files">Breakpad symbol files</h3>
<p>After the build is complete, run the following command to generate an archive of <a href="/en/Crash_reporting" title="en/Crash_reporting">Breakpad</a> symbol files:</p>
<pre class="eval">make -C objdir buildsymbols
</pre>
<p>The tinderbox uses an additional <code>uploadsymbols</code> target to upload symbols to a socorro server. See {{ Source_cvs("toolkit/crashreporter/tools/upload_symbols.sh") }} for more information about the environment variables used by this target.</p>
<p>{{ languages( { "ja": "ja/Building_Firefox_with_Debug_Symbols" } ) }}</p>
Revert to this revision