Skip to content

vdjeric/Snappy-Symbolication-Server

Repository files navigation

OVERVIEW
===========

The Snappy Symbolication Server is a Web server for symbolicating Firefox stacks. It matches PC addresses to modules in memory and looks up the corresponding function names in server-side symbol files (.SYM files).

If you're interested in setting up local symbols for use with the Gecko profiler for Firefox, the following page will be useful to you:

https://developer.mozilla.org/en/Performance/Profiling_with_the_Built-in_Profiler_and_Local_Symbols_on_Windows

BASICS
===========
1. The sample.ini file in this directory contains a sample configuration. To run the server locally, you will have to edit the paths to point to your local symbol dirs. Everything else should be OK to leave unchanged.
2. Run the server with "python symbolicationWebService.py sample.ini"
3. To stop the server send it a kill signal or Ctrl-C

If you find the server is rejecting your symbolication requests, check the log (stdout/stderr) for clues. For more verbose logging, set the "enableTracing" setting to 1 in the configuration file.

PROTOCOL
===========

The symbolication requests are in JSON format. This is a short symbolication request:


curl -d '{"stacks":[[[0,11723767],[1, 65802]]],"memoryMap":[["xul.pdb","44E4EC8C2F41492B9369D6B9A059577C2"],["wntdll.pdb","D74F79EB1F8D4A45ABCD2F476CCABACC2"]],"version":4}' http://symbolapi.mozilla.org/

This is the corresponding response: {"symbolicatedStacks": [["XREMain::XRE_mainRun() (in xul.pdb)", "KiUserCallbackDispatcher (in wntdll.pdb)"]], "knownModules": [true, true]}