Git Product home page Git Product logo

tracing-framework's Introduction

Web Tracing Framework

Build Status

The Web Tracing Framework is a set of libraries, tools, and visualizers for the tracing and investigation of complex web applications. You spend a small amount of time instrumenting your code and it helps you discover performance problems, track regressions, and build buttery-smooth 60fps web apps.

This is still very much a work in progress, and not designed to work for all applications. If you find issues when using it with your application please contribute fixes!

For documentation, tutorials, etc see the main Web Tracing Framework website.

For a list of known issues see KNOWN_ISSUES or the Github issues list.

Screenshot

Setup

See building for instructions and testing for information on running the various tests.

Quickstart

Just want the extension as fast as possible?

umask 0022
git clone https://github.com/google/tracing-framework.git
cd tracing-framework/
./scripts/setup.sh # or setup.bat on Windows
source wtfrc && deployext
# At chrome://extensions load unpacked extension from
# build-bin/wtf-injector-chrome

If you pull new changes, just redeploy:

git pull && git submodule update
deployext
# Reload from chrome://extensions

For more information and other build options, see building.

License

All code except dependencies under third_party/ is licensed under the permissive BSD license. Feel free to fork/rip/etc and use as you wish!

Contributing

Have a fix or feature? Submit a pull request - we love them! Note that we do keep to the style_guide, so please check it out first!

As this is a Google project, you must first e-sign the Google Contributor License Agreement before we can accept any code. It takes only a second and basically just says you won't sue us or claim copyright of your submitted code.

tracing-framework's People

Contributors

balupton avatar baxissimo avatar bennycode avatar benvanik avatar chihuahua avatar craigprince avatar evilaliv3 avatar igorminar avatar jdarpinian avatar lantius avatar lipis avatar matrixfrog avatar mpd avatar nickjong avatar piloopin avatar pkozlowski-opensource avatar poucet avatar rchao avatar rsturgell avatar scotttodd avatar tantalor avatar tommadams avatar vertexodessa avatar vojtajina avatar warrencraddock avatar zhaoz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tracing-framework's Issues

Basic statusbar.

Show the total number of events, duration of the time range, selection information, etc.

Autogenerate autoinstrumentation from jsdoc tags.

A tool that ran over code to generate an instrument.js file from annotations/a regex would be nice. This could prevent the need for any manual wtf.trace.instrumentType calls.

e.g.,

wtf-autoinstrument src/ mytypelist.yaml my.tracing.ENABLED > instrument.js

mytypelist.yaml could contain the types/methods in a readable form and use regexes:

my.Type:
- *
my.OtherType:
- /methods/

The generated code would look like:

if (my.tracing.ENABLED) {
  wtf.trace.instrumentType(...);
  ...
}

??

Fix popup UI focus.

Currently the popup UI will not take focus. The window.focus() does not work from the extension. Perhaps steal focus in the window itself? Or use chrome.tabs.create?

Improve heatmap rendering for GC events/etc.

The heatmap is largely useless right now. It'd be nice if it was able to fill scope events in, such as GCs, to show time occupied by each event type given instead of just instance occurrences. It'd also be nice to have the relative intensity based on the entire trace, not just the active viewport.

Add perf tests.

Add a perf test runner (bin/perf-runner.js?) and some perf tests under test/perf/
It'd be nice to know the overhead of scopes/instance events, auto instrumentation via wtf.trace.instrument, etc.

Fix TraceSource/Scope depth tracking.

Right now BinaryTraceSource does the work required for tracking Scope depth. This prevents scopes from other sources or out-of-order scopes from nesting properly. Ideally, scope depth tracking is handled by the ZoneIndex that the scope falls inside.

Loading screen in UI

Display a loading message in the UI instead of 'drag files mumble' when loading large files.

Fix zoom event flow.

All zoom viewport changes should be modifying the DocumentView.localView (wtf.doc.View) and all renderers should be using that to draw themselves.

Fix time domain.

Instead of using wall time in the event stream use a relative time to some chosen tracelistener shared timebase. This can be set as the first timebase encountered in any file.

Show better precision than 1ms in mean

When you click on an item the "mean" button right now appears to give you the mean rounded to the nearest msec. Would be good to make that at least 3 digits of precision so you don't get just "1" or "0" for every item that 's in the vicinity of 0-1 msec.

Auto-instrument web workers

Support flow tracking across postMessage/onmessage.

Basic support is in.

  • track flows on postMessage
  • track message size in postMessage/onmessage
  • track errors/etc?
  • hook event handlers properly in workers

Fix conflicts between embeds and the extension.

Right now if you enable the extension on a page with the embed settings will be overwritten and things messed up. It'd be nice to prevent the extension from running if the page has the embed - perhaps by either having the embed no-op or reloading and disabling.

HUD icons are broken in IE10

Show as broken images in IE10. content: url(svg) not supported? May be best to move to a different mechanism entirely.

Fix selection statistics.

The data table values limit to events in the selection time range, however it should find scopes that intersect the time range too like the zone painter does.

Add basic GC time data.

  • Add plumbing to get debugger data from the extension into the injected page.
  • Add debugger attaching (maybe a special option?)
  • Get GC events from the debugger
  • Show GCs in the framebar/etc as special

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.