Existing Tools

A non-complete list of existing tools to help debugging performance and memory problems.

SPS - Built-in profiler

Description: Add-on that runs the built-in profiler, retrieves the data and parses it on a web service, displaying a call tree and a timeline with responsiveness measurements.Good for: Figuring out where time is being spent in the code / what is hanging FirefoxURL:geckoprofiler.xpi on GitHubHow to use: After installing the add-on, click on the icon in the Add-ons bar (status bar) to open an widget with Start/Stop and Analyze buttons. More details at Profiling with the built-in profiler. The profiling build can be used to get accurate call stacks (currently Mac only).

about:jank

Description: Add-on that runs the built-in profiler and displays the retrieved data on about:jankGood for: Figuring out where time is being spent in the code / what is hanging FirefoxURL:about:jank on AMOHow to use: Open about:jank for the first time to activate the profiler, then refresh or reopen the page to see the accumulated data.

about:telemetry

Description: Displays the data gathered by telemetry for the current profile: histograms, slow SQL statements and a start-up timeline.Good for: Getting performance data for the current profileURL:about:telemetry on AMOHow to use: Make sure that telemetry reporting is on (Options -> Advanced -> Submit performance data) and open about:telemetry.

about:startup

Description: This addon displays startup timings as exposed by a Gecko API at the about:startup.Good for: Getting startup performance information for the current profileURL:about:startup on AMOHow to use: Install the add-on and open about:startup.

about:cc

Description: Analyzes the cycle collection graphs and helps find leaks (specially documents) and missing CC optimizations.Good for: Finding leaked documentsURL:about:cc on bugzillaHow to use: Install the add-on (a restart is recommended), open about:cc. First click on Run Cycle Collector, and then on Find Documents.

MemChaser

Description: Displays GC/CC and memory usage information on the Add-ons bar (status bar). Also toggles the memory reporting logging.Good for: Track GC and memory usage over time during a regular browsing session.URL:MemChaser on AMOHow to use: Install the add-on and open the Add-ons bar.

MozRegression

Description: Python script that greatly helps you binary-search a regression bug through the nightly builds by automatically downloading and running each build with a fresh profile.Good for: Finding the nightly regression range for a bug that you're not sure when was introduced.URL:MozRegression on GitHubHow to use: First find a nightly build date that you're sure the problem exists, and one where you're sure it doesn't. Then run mozregression --good=yyyy-mm-dd --bad=yyyy-mm-dd and the script will guide you on finding the regression.

Layout painting flash

Description: Activating this option, the rendered content will be flashed with a random color every time it's painted on screenGood for: Finding unneccessary painting or invalidation problemsURL: Set nglayout.debug.paint_flashing to true in about:configHow to use: Set the pref in about:config. More information on this post.

Logging GC/CC times

Description: Logs the timing for GC/CC runs to the Error Console.Good for: Figuring out if Garbage/Cycle collection is taking too long.URL: Set javascript.options.mem.log to true in about:configHow to use: Set the pref in about:config. Open the Error Console to view the logged information.