Profiling with the Built-in Profiler and Local Symbols on Windows

If you would like to use the built-in Gecko Profiler with a local build of Firefox for Windows, you will need to point the profiler to a local Snappy Symbolication Server instead of the official Mozilla symbolication server. The server will host the local Firefox symbols for the profiler and it will fetch any symbols not available locally from the official Mozilla symbolication server (e.g. symbols for Windows DLLs and plugin DLLs).

NOTE: You only need to run a local symbolication server if you're on Windows and you've built Firefox yourself. For any official release of Firefox (Nightly, Beta, etc), you do not need a local symbolication server.

How to deploy the Snappy Symbolication Server locally:

  1. Add ac_add_options --enable-profiling to your Firefox .mozconfig file.
  2. Build Firefox with debug symbols: https://developer.mozilla.org/en/Building_Firefox_with_Debug_Symbols
  3. Generate the Breakpad symbol files: https://developer.mozilla.org/en/Building_Firefox_with_Debug_Symbols#Breakpad_symbol_files
  4. Get a copy of the Snappy Symbolication Server source code:
    git clone git://github.com/vdjeric/Snappy-Symbolication-Server.git
  5. Edit the server's sample.ini configuration file:
    • Set the Firefox symbol path to the newly generated Breakpad symbol files, for example:
      Firefox = C:\mozilla-central\objdir\dist\crashreporter-symbols\
    • Third party symbols such as Windows DLLs are hosted on Mozilla's servers, so set Windows to any empty directory on your drive. For example:
      Windows = C:\Temp
      You should do the same for the Thunderbird symbol path (unless you're trying to profile Thunderbird, of course):
      Thunderbird = C:\Temp
    • Uncomment the remoteSymbolServer line by removing the semi-colon
  6. Run the server as follows. You will need to have Python 2.7 installed (http://www.python.org/getit/windows/):
    python symbolicationWebService.py sample.ini
  7. Point the Gecko Profiler extension to the local symbolication server by adding a new string property "profiler.symbolicationUrl" to your browser's about:config page. Set the property value to http://127.0.0.1:8000

You should now be able to get full Windows and Firefox symbols in your profiler traces. If you run into issues with the server, you can make logging more verbose by changing the enableTracing setting in the sample.ini config file to 1 instead of 0.

Document Tags and Contributors

Contributors to this page: Vladan, JoeDrew, Sheppy
Last updated by: Sheppy,