Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Load json manually in chrome://tracing

I have a trace events JSON data and I want to view it using chrome://tracing. However, I don’t want to load the JSON every time.

Is there a way I can pass the JSON data to chrome://tracing so that without manually clicking load data all my data gets loaded?

like image 795
user2851669 Avatar asked Mar 07 '18 08:03

user2851669


People also ask

How do I open a trace file in Chrome?

Open chrome://tracing in a Chrome tab, and drag that trace. json file into the chrome://tracing window. You'll see something that looks like this: The trace that Electron recorded includes events from the main process as well as the renderer process.

How do I view JSON data in Chrome?

@UmeshPatil In Chrome you should just right click by mouse and choose "Open in new tab" at the method which returns JSON data from "Network" -> "XHR" tab of Chrome browser.

What is trace JSON?

Distributed tracing library. Traces are really just a specialized form of log calls, therefore this module utilizes Automattic/log-json under the hood.


2 Answers

Here is a solution, if you can relax the requirement that you have to open it with Chrome-Tracing. Speedscope is a nice replacement and can be easily started from the command line.

For offline use, or convenience in the terminal, you can also install speedscope via npm:

npm install -g speedscope

Invoking speedscope /path/to/profile will load speedscope in your default browser. Source

speedscope <my-chrome-tracing.json> opens the file.

enter image description here

Speedscopes offers different views but not sometimes not the same view as Chrome-Tracing. So it might not be the right choice for all use cases.

like image 76
Unapiedra Avatar answered Oct 12 '22 19:10

Unapiedra


The Trace-viewer tool currently loads the JSON file in 3 ways:

  • When recording a new trace
  • When loading the file via the load button after the file has been picked
  • When dropping the file into the tab (drag & drop)

All of these do a one-time update to the active trace.


Technical details

Look at the profiling_view and notice

 tr.ui.b.readFile(file).then(
 ...
    this.setActiveTrace(file.name, data);

and a few variations on calls to setActiveTrace from beginRecording , onLoadClicked_ and dropHandler_ .


Solution suggestions

Yes, there are a few ways in which you can pass the json data to chrome://tracing (i.e. trace viewer) without manually clicking load data .

Depending on how much effort you want to put into it:

  1. Don't manually click load but drag and drop the file
  2. Automate the drag & drop (example with selenium) based on a script which watches for file changes to the JSON
  3. Automate the load based on file changes
  4. Contribute to Trace Viewer yourself and add this feature. See the tracing ecosystem explainer and contributing. Note it is now part of the Catapult project in GitHub.

See fswatch - a cross-platform file change monitor.

like image 28
Laurentiu L. Avatar answered Oct 12 '22 19:10

Laurentiu L.