TraceGL MPL release

Overview

TraceGL

TraceGL MPL release (C) Mozilla Corp

Running traceGL unpackaged:

git clone [email protected]:/traceglMPL/tracegl.git
cd tracegl
node trace/trace_server.js

Packaging tracegl into a single JS file you can copy everywhere (like your home dir)

node tools/packer.js trace/trace_server tracegl.js
cp tracegl.js ~/

How it works

traceGL transforms your JavaScript, injecting monitoring code that produces a log of everything that happens. This log is streamed from the target (node or browser), via the traceGL node.js process to the UI for visualisation. The UI tries to display the resulting huge amount of information fast, and uses webGL to render everything.

Node.js programs

node ~/tracegl [options] yourprogram.js [arguments]

The visualisation UI is available on http://localhost:2000.

Browser JS via static fileserver

The built in static fileserver allows traceGL to instrument all the JavaScript files it serves to the browser and gather information. It auto-reloads the site when a file changes so you can live-code with it.

node tracegl [options] ../path/to/wwwroot

Browser JS via proxy

Sometimes your JavaScript is delivered by your Rails or Java backend to the browser. In this case you need a man-in-the-middle approach via traceGL's proxy mode. For a Ruby backend on port 3000:

node tracegl [options] http://localhost:3000

Editor integration

By doubleclicking on a line in the visualisation UI you can open it in your favorite editor. See the settings for information how to configure this

Commandline options

node ~/tracegl [options] target [args]

target can be 1. a node.js program, 2. a static folder, 3. a proxy target or 4. a gzip file created with -gz to playback.

options can be:

-gz[:trace.gz] Record a trace to gzip file, defaults to trace.gz, doesn't start the UI.

Filtering can be useful to lower the amount of incoming tracedata. Use -do and -no with either a -do:string or a -do/regex match. Use double escaped backslashes in regexps (see -nolib).

-do[/:]match Only trace files where filename contains match.

-no[/:]match Don't trace files where filename names contains match.

-nolib Only see your own code. Short for: -no/jquery.* -no:require.js -no/node\_modules

-noopen Don't try to open the visualisation UI with your default browser

-ui:port Explicitly set the visualisation UI port, default is 2000

-tgt:port Explicitly set the browser JS port, defaults to 2080

-settings Write a settings tracegl.json template in current dir, see settings file

-update Update tracegl.js to the latest version, uses your token to fetch update

Settings file

For other settings and commandline defaults traceGL supports a tracegl.json file which it tries to read from the current directory, your home dir, or the directory you store the tracegl.js file (in that order).

Create a template tracegl.json using the -settings command, and then modify these fields:

"ui":2000 Set the UI port, -ui:port commandline 
"tgt":2080 Set the browser JS port, -tgt:port commandline
"no":[":match"] Takes an array, -no commandline options
"do":["/regexp"] Takes an array, -do commandline options
"theme" : "dark" UI Theme, other option: light

Editor integration uses a commandline call to your editor, and uses $file and $line to build up the arguments. Put it in the right platform key (darwin, win32, sunos, linux, freebsd). If you have a configuration thats useful, please consider sharing it in a github issue so it can be turned into a default.

"bin":"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
"args":["$file:$line"]

Issues

traceGL cannot instrument JavaScript coming from outside of its reach. For instance if you load jQuery from the google CDN, it cannot visualise that codeflow because it is not delivered by the traceGL proxy or static fileserver. If you keep your JS served through traceGL it should be no problem.

You might also like...

Minimalistic, opinionated, and predictable release automation tool.

Minimalistic, opinionated, and predictable release automation tool.

Release Minimalistic, opinionated, and predictable release automation tool. General idea Think Prettier but for automated releases: minimalistic, opin

Dec 18, 2022

This project is an attempt at recreating the WebGL animation featured in the 2021 Linear release page.

Linear Vaporwave Three.js scene This project is an attempt at recreating the WebGL animation featured in the 2021 Linear release page. Demo Head over

Dec 28, 2022

Google Chrome release and version info as JSON (self updating)

chrome-versions Self updating repository to store Google Chrome release and version info as JSON. Windows macOS Linux Android TL;DR Use a CDN to fetch

Dec 15, 2022

Command line tool to interact with exist-db instances (pre-release)

xst [ĭg-zĭst′] Command line tool to interact with exist-db instances. Built on top of @existdb/node-exist. Installation Until this package is official

Aug 4, 2022

Make a release for Jitsi test browser page (minify js/css files, pack the app in one file).

Make a release for Jitsi test browser page (minify js/css files, pack the app in one file).

JitsiTestBrowserTool This tools allows you to make a release for Jitsi test browser page (minify js/css files, pack the app in one file). /!\ Not work

Aug 15, 2022

✡ QUEEN BIXBY PRO RELEASE ✡

✡ QUEEN BIXBY PRO RELEASE ✡

QUEEN-BIXBY-MD-PRO TOTAL REPO VIEWS 📍 TOTAL WEBSITE VISIT 𝚃𝙷𝙸𝚂 𝙱𝙾𝚃 𝙲𝚁𝙴𝙰𝚃𝙴𝚁 𝙳𝙰𝚁𝙲𝙺 𝙰𝙻𝙿𝙷𝙰 𝚇𝚃𝙴𝙰𝙼 | © | Reserved Click SCAN)

Dec 25, 2022

Generate release notes from git commit history either commit range or tag range.

Generate release notes from git commit history either commit range or tag range.

Would you like to support me? Release Notes Generate release notes from git commit history either commit range or tag range. App Store Template Change

Oct 8, 2022

A simple lock-and-release eventually-consistent DB to be consumed by multi-threaded applications in node.

worsen - a persistence store for quick prototyping A simple lock-and-release eventually-consistent DB to be consumed by multi-threaded applications in

Oct 1, 2022

🏏 GitHub action to split your Git release tag into SemVer 2.0 parts

🏏 Git Tag Action GitHub action to split your Git release tag into SemVer 2.0 parts This is a simple action to split your git tag, usually for release

Oct 31, 2022
Comments
  • can't execute file: /Users/npetersohn/dev/tracegl/trace/trace_server.js

    can't execute file: /Users/npetersohn/dev/tracegl/trace/trace_server.js

    the command refers to the bin/server.js file of this boilerplate https://github.com/erikras/react-redux-universal-hot-example with the -nolib option

    
    [trace.GL] See your code. 
    [trace.GL] WebGL trace UI: http://0.0.0.0:2000
    [piping] can't execute file: /Users/npetersohn/dev/tracegl/trace/trace_server.js
    [piping] error given was: Error: Cannot find module './instrument'
        at Function.Module._resolveFilename (module.js:336:15)
        at /Users/npetersohn/dev/tracegl/core/define.js:67:20
        at Object.<anonymous> (/Users/npetersohn/dev/tracegl/trace/trace_server.js:23:19)
        at module.exports.global.define (/Users/npetersohn/dev/tracegl/core/define.js:80:18)
        at Object.<anonymous> (/Users/npetersohn/dev/tracegl/trace/trace_server.js:8:1)
        at Module._compile (module.js:460:26)
        at Object.Module._extensions..js (module.js:478:10)
        at Module.load (module.js:355:32)
        at Module._load (module.js:310:12)
        at Function.module._load (/Users/npetersohn/dev/someapp/node_modules/piping/lib/launcher.js:32:16)
    [piping] further repeats of this error will be suppressed...
    
    
    opened by snackycracky 1
  • Unreadable text in Chrome and Firefox

    Unreadable text in Chrome and Firefox

    Not sure if this is the same issue as the year old fonts not working but In chrome I never get readable text and got it once in Firefox but then no more.

    No errors in the nodejs server so I think its something on the browser, Chrome has some messages in the console: WebGL: INVALID_VALUE: enableVertexAttribArray: index out of range WebGL: INVALID_VALUE: vertexAttribPointer: index out of range Firefox has none.

    Using the following browsers: Version 43.0.2357.65 (64-bit) Firefox 38.0 on Fedora 20.

    ======Some more info=======

    Works "fine" if I start a new firefox profile: firefox -new-instance -p

    After a reboot I noticed it works in my default profile until I reload it. Maybe something to do with plugins installed (firebug maybe). but starting a fresh new profile fixed it. Reloading won't break it either.

    Please let me know if I can be of any assistance, this looks like a valuable tool as it can "record" what your code does and inspect it later with some information about local variables and code flow.

    opened by amsterdamharu 0
  • Add maintainers

    Add maintainers

    Rik, can you add a few people to push/pull (or admin) access on this repo? It'd be good to merge in hotfixes and such

    I'd suggest adding: @TiddoLangerak @alessioalex @cptroot in the org.

    opened by paulirish 12
  • Cannot read property '1' of null

    Cannot read property '1' of null

    $ node tracegl.js server-test.js
    [trace.GL] See your code.
    [trace.GL] WebGL trace UI: http://0.0.0.0:2000
    
    c:\Users\avladutu\Desktop\node_tests\tracegl-impl\tracegl.js:4023
    n = define.factory[k].toString().match(/\/\/CHANNEL\n([\s\S]*)\/\/CHANNEL/)[1]
                                                                               ^
    TypeError: Cannot read property '1' of null
        at mkHead (c:\Users\avladutu\Desktop\node_tests\tracegl-impl\tracegl.js:4023:84)
        at instrument (c:\Users\avladutu\Desktop\node_tests\tracegl-impl\tracegl.js:4029:20)
        at Module.m._compile (c:\Users\avladutu\Desktop\node_tests\tracegl-impl\tracegl.js:41:12)
        at Object.Module._extensions..js (module.js:474:10)
        at Module.load (module.js:356:32)
        at Function.Module._load (module.js:312:12)
        at Module.require (module.js:364:17)
        at Function.require (module.js:380:17)
        at nodeLoader (c:\Users\avladutu\Desktop\node_tests\tracegl-impl\tracegl.js:53:10)
        at Object./trace/trace_server (c:\Users\avladutu\Desktop\node_tests\tracegl-impl\tracegl.js:28:65)
    
    opened by alessioalex 5
Owner
null
NodeJS library develop quick start: TypeScript + CI/CD + Release Workflow + Linter + Changelog + ...

node-lib-starter Start NodeJS + TypeScript library developing with ease, have fun! Include Lint Git Hooks Release workflow CI/CD Changelog Configurati

LinbuduLab 22 Oct 28, 2022
Auto push message to DingTalk while release published.

Create a workflow .yml file in your .github/workflows directory. An example workflow is available below. For more information, reference the GitHub Help Documentation for Creating a workflow file.

Visiky 21 Oct 31, 2022
Gh-action-dotnet-bump - Automatic bump version of .NET solution by following semantic release

gh-action-dotnet-bump GitHub action which bumps the library version that follows Semantic Versioning. NOTICE: Pre-release functionality for type=assem

Jonas Lagoni 2 Oct 21, 2022
Semantic Release plugin to create and publish NuGet packages.

semantic-release-nuget semantic-release plugin to create and publish a NuGet package. Step Description verifyConditions Verify the presence of the NUG

DroidSolutions 6 Jan 2, 2023
Klecks is the official open-source release of the community-funded online painting app Kleki.

Klecks (German for "splash of color", pronounced "clex") is the official open-source release of the community-funded online painting app Kleki. Klecks

I paint, code and mess around. 74 Dec 27, 2022
The Blitz.js Recipe for installing @semantic-release/github.

semantic-release-github The Blitz.js Recipe for installing @semantic-release/github. blitz install custom-recipes/semantic-release-github -y More info

Custom Recipes 1 Apr 9, 2022
🚀 A GitHub action to publish a new release of the repository

Create a JavaScript Action using TypeScript Use this template to bootstrap the creation of a TypeScript action. ?? This template includes compilation

Clicampo 3 Nov 1, 2022
A small CLI tool to create a semantic release and git-cliff powered Changelog

cliff-jumper A small CLI tool to create a semantic release and git-cliff powered Changelog Description When managing a collection of projects you ofte

Favware 15 Sep 22, 2022
Crypto Basket - Free Blockchain Press Release

ADD YOUR CONTENT Upload all files to IPFS All non-IPFS links should be inside LINKS Sections Use markdown syntax How to add content to CryptoBasket ?

Money Mafia 14 Dec 15, 2022
The Space Pirates game is a demo made to celebrate the Babylon.js 5.0 Release.

Space Pirates This is the repository for the Space Pirates game demo for Babylon.js 5.0 Release. It contains assets and code so you can clone, learn a

Babylon.js 112 Dec 26, 2022