Profiling with the Gecko Profiler and Local Symbols on Windows

Profiling local talos runs

If you would like to use the Gecko Profiler with a local talos run of a local build of Firefox for Windows, you will need to point talos to a zipfile containing breakpad-style symbols for your build. Follow the steps below:

NOTE: You only need to do this if you're on Windows and you've built Firefox yourself. For any official release of Firefox (Nightly, Beta, etc), you do not need to use these steps.

  1. Make sure you don't have ac_add_options --disable-crashreporter in your Firefox .mozconfig file.
  2. If you're building a Beta or Release channel version, and you want proper C++ callstacks in your profiles, add ac_add_options --enable-profiling to your Firefox .mozconfig file. You don't need to do this if you're building Nightly, because --enable-profiling is the default on Nightly.
  3. Build Firefox as usual, e.g. using ./mach build.
  4. Generate the Breakpad symbol files by running ./mach buildsymbols: https://developer.mozilla.org/en/Building_Firefox_with_Debug_Symbols#Breakpad_symbol_files
  5. This will have created symbols under $OBJDIR/dist/ , named after the binary name, architecture and version, so something like "firefox-40.0a1.en-US-win32.crashreporter-symbols.zip"
    Point talos to this zipfile by passing its path to the --symbolsPath flag.

Profiling local builds (without using talos)

The instructions are almost the same as above: All you need to do is run ./mach buildsymbols after you've compiled Firefox (and every time you rebuild). The Gecko profiler add-on from https://perf-html.io/ will automatically consult the generated symbol files for profile symbolication. (And make sure you don't have --disable-crashreporter in your .mozconfig, because that setting makesĀ ./mach buildsymbols inoperative.)

In the past, you had to run a symbolication server locally. This is no longer necessary; the implementation of the geckoProfiler WebExtension API knows how to locate the generated symbol files in your object directory and how to parse them.

Document Tags and Contributors

 Last updated by: MarkusStange,