Processing ../devtools-docs/docs/authoring-development-workflow.html file...
You may be on a widescreen monitor, wishing to maximize the space available to inspect and debug your code
- "widescreen" -> wide screen,wide-screen,windscreen
You can change the split to be less than 400px (the current minimum width of Chrome) to test resizing layouts
- "400px" ->
It is also possible to hold down and drag the DevTools toolbar to move its docking position, as demonstrated in the animation below.
- "toolbar" -> tool bar,tool-bar,barstool
Cmd + O (Mac OSX)
- "OSX" -> OX,OS,OS X
which will work regardless of the panel you are currently in. For this Todo app, using one of these shortcuts will take us to the Sources panel and present us with a search box listing all inspectable files.
- "Todo" -> Tod,Toto,Todd,Dodo,Togo,Tod o,Too,To do,To-do
- "inspectable" -> inspect able,inspect-able,respectable,injectable,indispensable,installable
From there, we can filter down to specific files (e.g files with the word 'script' in their name) or select a file to view or edit.
- "e.g" -> erg,egg,EEG
Note: We support camel-case matching in all of our dialogs. e.g: to open FooBarScript.js, you could just type FBaSc, which could save time.
- "e.g" -> erg,egg,EEG
- "FooBarScript.js" -> Superscriptions
- "FBaSc" -> Bascom
Cmd + F (Mac OSX)
- "OSX" -> OX,OS,OS X
Cmd + Opt + F (Max OSX)
- "OSX" -> OX,OS,OS X
Cmd + Shift + O (Mac OSX)
- "OSX" -> OX,OS,OS X
Cmd + L (Mac OSX)
- "OSX" -> OX,OS,OS X
1. Click the link to the script (e.g ) in the markup view of the Elements panel:
- "e.g" -> erg,egg,EEG
Changes to scripts are only executed at evaluation time, meaning that modifications to code that is not running after the page loads will not have an effect. Changes to code executed at a later stage, such as mouseover handlers or click-event callbacks can however be changed and tested on the fly.
- "mouseover" -> mouse over,mouse-over,moreover,mouser,overuse
The "element.style" section displays properties that were set through the style attribute in the page's markup.
- "element.style" -> elementariness
or clicking on the filename (e.g styles.css) in the "Elements -> Styles panel" (for SASS/CSS):
- "e.g" -> erg,egg,EEG
- "styles.css" -> stylesheets
A diff of the changes
- "diff" -> duff,doff,riff,tiff,miff,Tiff,Giff,differ
Apply original content will effectively do the same action, but will maintain the revision history in view in case you wish to go back to a specific changeset.
- "changeset" -> change set,change-set,changes et,changes-et,changeless
Sometimes you want to be able to save smaller scripts, bookmarklets and utilities so that you've always got them available to you while debugging in the browser. Snippets is a new DevTools feature enabling this workflow, allowing you to create, store and run JavaScript within the Sources tab. It is currently available in Chrome Canary.
- "bookmarklets" -> bookmark lets,bookmark-lets,booklets
Bookmarklets - all of your bookmarklets could be stored as snippets, especially those you may wish to edit.
- "Bookmarklets" -> Bookmark lets,Bookmark-lets,Booklets
- "bookmarklets" -> bookmark lets,bookmark-lets,booklets
Debugging - Snippets offer a multi-line console with syntax-highlighting and persistance, making it convenience for debugging code that is more than a one-liner.
- "persistance" -> persistence,resistance,Resistance,assistance
Selecting a snippet file from the file-list opens it up in the built-in editor to your right. Here you can write or paste any JavaScript code (i.e your snippet) including functions and expressions.
- "i.e" -> ire,ice,IE
Note: Snippets are stored in the DevTools localStorage. When performing a Save/Save As, you can bind the snippet to the file where it should be saved like any other script.
- "localStorage" -> local Storage,local-storage,preallocator
My workflow: Never having to leave the DevTools | remy sharp
- "remy" -> Remy,rem,rems,rely,re my,re-my,rem y
The Breakpoint With Addy Osmani And Paul Lewis - Snippets | youtube
- "Osmani" -> Osman,Osman i,Tasmania
- "youtube" -> you tube,you-tube,buyout
Chrome Dev Tools: JavaScript and Performance | nettuts
- "nettuts" -> net tuts,net-tuts,netts
Iterating with the Chrome DevTools | jeremey kahn
- "jeremey" -> Jereme,Jeremy,Jeramey
- "kahn" -> khan,Kahn,Hahn
Like everyone, you get bugs in your application code. You start debugging, but when you step through your code line-by-line, the debugger sometimes jumps into a source file that's not your focus (such as a third-party JS library). I'm sure you've experienced the annoyance of stepping through the library code before getting back to your own application code.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
The screenshot above shows that app.js opened, where a breakpoint was set. When stepping into that code, backbone.js opened, then underscore.js. This can be a time-consuming process and an undesirable one, too.
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
- "app.js" -> apps
- "backbone.js" -> backbones,backbone
- "underscore.js" -> underscores,underscore
Use the Settings panel to configure blackboxed scripts. Open the DevTools Settings and under Sources click Manage framework blackboxing.
- "blackboxed" -> black boxed,black-boxed,blackbox ed,blackbox-ed,blackbox,blackballed
You may want to temporarily unblackbox a rule for testing purposes. You can do this by changing the behavior to Disabled. If you wanted to remove a rule entirely you can click X to delete it.
- "unblackbox" -> blackbox
When you view a blackboxed script in the editor on the Sources panel, you will see a yellow bar indicating that it's blackboxed. Clicking on more expands the bar showing a bit more info about what it means, and how you can disable it.
- "blackboxed" -> black boxed,black-boxed,blackbox ed,blackbox-ed,blackbox,blackballed
When paused on a breakpoint, in the call stack you will see a message stating the number of frames which are blackboxed. You can show these frames if you want, but since they are calls made from a blackboxed script they are hidden unless you click show.
- "blackboxed" -> black boxed,black-boxed,blackbox ed,blackbox-ed,blackbox,blackballed
We want to make sure your debugging experience when working with JS frameworks is excellent. Please file a ticket after trying blackboxing if you have ideas on how it can be improved or address your use cases better.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
New developer tools experimental APIs for Chrome extensions (Oct 2011)
- "APIs" -> A Pis,API,API s,Pis,Apsis,Apish,Apes,Apps,Apia,Alis,Avis,Pisa
Web Inspector Redesign (Sep 2008)
- "Sep" -> Se,Sp,Sept,Shep,See,Sen,Rep,Set,Pep,Hep,Yep,Se p,Esp,Seep
Ensure Chrome is being run with a clean profile: Option 1: Use Incognito mode. Open the Chrome menu and select New Incognito Window, or launch Chrome with the switch. Option 2: Use a fresh Chrome profile. Click the user icon in the top-right corner of your Chrome window and select New User. To guarantee a clean profile that doesn't inherit any extensions or settings, launch Chrome using the switch with the path . e.g: OSX: Linux: Windows: This will ensure you get a completely empty profile instead of loading the user's profile as read-only. Close other tabs and processes/applications you may have running in the background. If these apps need to run in the background, use your system monitor to ensure apps are not stealing too much CPU or RAM. Disable any Dynamic CPU overclocking you may have enabled on your system. Make sure you are up to date with the latest builds of Chrome. You can use http://download-chromium.appspot.com to grab edge builds. If you are running into a bug and generally use Chrome Canary as your development browser, it is worth testing in Chrome Stable to ensure the issue is unrelated to new features or bugs. {{/partials.standard_devtools_article}}
- "e.g" -> erg,egg,EEG
- "OSX" -> OX,OS,OS X
- "overclocking" -> over clocking,over-clocking,overclouding,overstocking,overcooking,overlooking
- "http:" -> HTTP
- "download-chromium.appspot.com" -> download-chromium
- "partials.standard_devtools_article" ->
Option 2: Use a fresh Chrome profile. Click the user icon in the top-right corner of your Chrome window and select New User. To guarantee a clean profile that doesn't inherit any extensions or settings, launch Chrome using the switch with the path . e.g: OSX: Linux: Windows: This will ensure you get a completely empty profile instead of loading the user's profile as read-only.
- "e.g" -> erg,egg,EEG
- "OSX" -> OX,OS,OS X
To guarantee a clean profile that doesn't inherit any extensions or settings, launch Chrome using the switch with the path . e.g:
- "e.g" -> erg,egg,EEG
OSX: Linux: Windows:
- "OSX" -> OX,OS,OS X
OSX:
- "OSX" -> OX,OS,OS X
Disable any Dynamic CPU overclocking you may have enabled on your system.
- "overclocking" -> over clocking,over-clocking,overclouding,overstocking,overcooking,overlooking
Make sure you are up to date with the latest builds of Chrome. You can use http://download-chromium.appspot.com to grab edge builds.
- "http:" -> HTTP
- "download-chromium.appspot.com" -> download-chromium
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
Returns reference to the first DOM element with the specified CSS selector.This function is an alias for function.
- "selector.This" -> selector. This,selectors
Note: Press Shift+Enter in the console to start a new line without executing the script.
- "Shift+Enter" -> Shifter
$x(path)
- "x(path" -> XPath
copy(object)
- "copy(object" -> objectify
debug(function)
- "debug(function" -> eigenfunction
Use undebug(fn) to stop breaking on the function, or use the UI to disable all breakpoints.
- "undebug(fn" -> underfund
dir(object)
- "dir(object" -> objector
Displays an object-style listing of all the properties of the specified object. This method is an alias for the Console API's method.
- "API's" -> Ape's,Apia's,Apr's,Ari's,Ali's,Adi's,Ami's,Okapi's,Appia's
dirxml(object)
- "dirxml(object" -> objectionable
inspect(object/function)
- "inspect(object" -> inspectorate
getEventListeners(object)
- "getEventListeners(object" ->
Returns the event listeners registered on the specified object. The return value is an object that contains an array for each registered event type ("click" or "keydown", for example). The members of each array are objects that describe the listener registered for each type. For example, the following lists all the event listeners registered on the object.
- "keydown" -> key down,key-down,Downey
If more than one listener is registered on the specified object, then the array contains a member for each listener. For instance, in the following example there are two event listeners registered on the element for the "mousedown" event:
- "mousedown" -> mouse down,mouse-down,moused own,moused-own,dormouse
keys(object)
- "keys(object" -> objectify
Assuming was defined in the global namespace (for simplicity), typing and in the Console would result in the following:
- "namespace" -> name space,name-space,names pace,names-pace,spacemen
monitor(function)
- "monitor(function" -> multifunction
Use unmonitor(function) to cease monitoring.
- "unmonitor(function" -> multifunction
monitorEvents(object[, events])
- "monitorEvents(object" -> objectionableness
profile([name])
- "profile([name" -> profitableness
profileEnd([name])
- "profileEnd([name" -> profitableness
table(data[, columns])
- "table(data" -> debatable,adaptable,beatable,eatable
undebug(function)
- "undebug(function" -> eigenfunction
unmonitor(function)
- "unmonitor(function" -> multifunction
Stops the monitoring of the specified function. Used in concert with monitor(fn).
- "monitor(fn" -> monitor
unmonitorEvents(object[, events])
- "unmonitorEvents(object" -> unmonitored
You can also selectively stop monitoring specific events on an object. For example, following code starts monitoring all mouse events on the currently selected element, and then stops monitoring "mousemove" events (perhaps to reduce noise in the console output).
- "mousemove" -> mouse move,mouse-move,mousse,venomous
values(object)
- "values(object" -> objectiveness
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
console.assert(expression, object)
- "console.assert(expression" -> expressionless
console.clear()
- "console.clear" -> consolable
However, if Preserve Logs is on, console.clear() will not do anything in case there's some iframe which calls console.clear() and can make your debugging process harder. "Clear console" in the context menu will still work, and actually clear the console.
- "console.clear" -> consolable
console.count(label)
- "console.count(label" -> inconsolableness
console.debug(object [, object, ...])
- "console.debug(object" -> objectionableness
console.dir(object)
- "console.dir(object" -> objectionableness
Calling on a JavaScript object is equivalent to calling on the same object—they both print out the object's JavaScript properites in a tree format.
- "object—they" -> objectivity
- "properites" -> properties,propitiates,prosperity,proprietress,expropriates
console.dirxml(object)
- "console.dirxml(object" ->
is a shortcut for dir
- "dir" -> deer,rid,Dir,sir,fir,die,dire,dirt,dirk,dis,air,din,cir,did,dig
acts either as dir or dirxml depending on the object type (non-dom or dom)
- "dir" -> deer,rid,Dir,sir,fir,die,dire,dirt,dirk,dis,air,din,cir,did,dig
- "dirxml" -> dirndl
- "non-dom" -> non-mod,non-Dom,non-dim,non-don,non-do,non-om,non-dome,non-dorm,non-doom,non-Odom,non-doe,non-dos,non-dam,non-dot,non-tom
- "dom" -> mod,Dom,dim,don,do,om,dome,dorm,doom,Odom,doe,dos,dam,dot,tom
console.error(object [, object, ...])
- "console.error(object" -> objectionableness
console.group(object[, object, ...])
- "console.group(object" -> objectionableness
console.groupCollapsed(object[, object, ...])
- "console.groupCollapsed(object" ->
console.groupEnd()
- "console.groupEnd" -> inconsolableness
Closes the most recently created logging group that previously created with or . See console.group() and console.groupCollapsed() for examples.
- "console.group" -> consoler
- "console.groupCollapsed" -> collapsed
console.info(object [, object, ...])
- "console.info(object" -> objectionableness
console.log(object [, object, ...])
- "console.log(object" -> objectionableness
console.profile([label])
- "console.profile([label" ->
When the Chrome DevTools is open, calling this function starts a JavaScript CPU profile with an optional label.To complete the profile, call . Each profile is added to the Profiles tab.
- "label.To" -> label. To,labeled
console.profileEnd()
- "console.profileEnd" -> inconsolableness
See console.profile() for example use.
- "console.profile" -> inconsolableness
console.time(label)
- "console.time(label" -> inconsolableness
console.timeEnd(label)
- "console.timeEnd(label" -> inconsolableness
For example usage, see console.time().
- "console.time" -> consolation
console.timeline(label)
- "console.timeline(label" -> inconsolableness
console.timelineEnd()
- "console.timelineEnd" -> inconsolableness
console.timeStamp([label])
- "console.timeStamp([label" -> timestamped
console.trace(object)
- "console.trace(object" -> objectionableness
console.warn(object [, object, ...])
- "console.warn(object" -> objectionableness
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
A place to log diagnostic information using methods provided by the Console API, such as console.log(), or console.profile().
- "console.log" -> consolable
- "console.profile" -> inconsolableness
This documentation provides an overview and common uses of these two APIs. You can also browse the Console API and Command Line API reference guides.
- "APIs" -> A Pis,API,API s,Pis,Apsis,Apish,Apes,Apps,Apia,Alis,Avis,Pisa
To toggle a split-view of the Console on another tab, press the Esc key on your keyboard, or click the Show/Hide Console button in the bottom left corner of the Chrome DevTools window. In the following screenshot the Console split-view is shown with the Elements panel.
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
To clear the console's history, do one of the following:
- "console's" -> consoles,consoler's,consolers,console,consolable,Constable's,consonance's
Invoke console.clear() Console API from JavaScript.
- "console.clear" -> consolable
Log XMLHTTPRequests—determines if each XMLHTTPRequest is logged to the Console panel.
- "XMLHTTPRequests—determines" -> Predetermines
- "XMLHTTPRequest" -> Frequentest
Preserve log upon navigation—determines if console history for the current page is preserved when you navigate to another page. By default, both of these settings are disabled.
- "navigation—determines" -> determinativeness
The Console API is collection of methods provided by the global object defined by DevTools. One of the API's main purposes is to log information (such as a property value, or an entire objects or DOM element) to the console while your application is running. You can also group output visually in the console to reduce visual clutter.
- "API's" -> Ape's,Apia's,Apr's,Ari's,Ali's,Adi's,Ami's,Okapi's,Appia's
The console.log() method takes one or more expressions as parameters and writes their current values to the console. For example:
- "console.log" -> consolable
All—Shows all console output.
- "All—Shows" -> Allhallows
Errors—Only show output from
- "Errors—Only" -> Erroneously
Warnings—Only show output from
- "Warnings—Only" -> Warningly
Logs—Only show output from , and .
- "Logs—Only" ->
Debug—Only show output from and other console output.
- "Debug—Only" -> Debuggable
The first parameter you pass to any of the console's logging methods ( or , for example) may contain one or more format specifiers. A format specifier consists of a symbol followed by a letter that indicates the formatting that should be applied to the inserted value ( for strings, for example). The format specifier identifies where to substitute a value provided by a subsequent parameter value.
- "console's" -> consoles,consoler's,consolers,console,consolable,Constable's,consonance's
As shown in the following screenshot, the command annotates the Timeline in the following places:
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
A yellow vertical line in the Timeline's summary and detail views.
- "Timeline's" -> Timeliness,Time line's,Time-line's,Timeline,Emmeline's,Emeline's,Ameline's
To enter a multi-line expression at the shell prompt (such as a function definition) press Shift+Enter between lines.
- "Shift+Enter" -> Shifter
The Command Line API provides several methods to access DOM elements in your application. For example, the method returns the first element that matches the specified CSS selector, just like . For instance, the following code returns the element with the ID "loginBtn".
- "loginBtn" -> login
The command returns an array of all the elements that match the specified CSS selector, just like . For instance, the following displays selects all elements with the CSS class "loginBtn":
- "loginBtn" -> login
The method takes a DOM element reference (or JavaScript reference) as a parameter and displays the element or object in the appropriate panel—the Elements panel for DOM elements, or the Profile panel for a JavaScript object.
- "panel—the" -> panelization
For example, in the following screenshot the function is used to get a reference to an element. Then the last evaluated expression property () is passed to to open that element in the Elements panel.
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
Often when testing you'll select DOM elements—either directly in the Elements panel or using the Selection tool (magnifying glass)—so that you can further inspect the element. Or, when analyzing a memory snapshot in the Profiles panel, you might select a JavaScript object to further inspect it.
- "elements—either" -> elementariness
- "glass)—so" -> glassless
The following screenshot shows the values of these properties after selecting three different elements in turn from the Elements panel:
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
To monitor several events, you can pass an array of event names as the second parameter. The code below monitors both "mousedown" and "mouseup" events on the body of the document.
- "mousedown" -> mouse down,mouse-down,moused own,moused-own,dormouse
- "mouseup" -> mouse up,mouse-up,mouse,mousse
You can also pass one of the supported "event types" that DevTools maps to a set of actual event names. For example, the "touch" event type cause DevTools to monitor "touchstart", "touchend", "touchmove", and "touchcancel" events on the target object.
- "touchstart" -> touch start,touch-start,touchstone
- "touchend" -> touched,touch end,touch-end,toucher
- "touchmove" -> touch move,touch-move,touchstone
- "touchcancel" -> touch cancel,touch-cancel,touchable
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
Documentation authoring The source for the DevTools documentation is on GitHub and contributions are always welcome. Both reference and tutorial guides benefit from your help. Get in touch with @paul_irish for more information on how you can assist here.
- "paul_irish" -> Parrish
Get in touch with @paul_irish for more information on how you can assist here.
- "paul_irish" -> Parrish
Share what you've learned Share what you've learned via GIFs, Vines or construction paper Cover new experimental features Design improved UX for all parts of DevTools Triage and manage issues Work on features or bugs
- "GIFs" -> G Ifs,Figs,Gigs,Ifs,Gifts,Gins,Gift,Giff
- "UX" -> IX,U,X,AUX,TUX,EX,US,AX,OX,UM,UP,UH,BX,RX
Share what you've learned via GIFs, Vines or construction paper
- "GIFs" -> G Ifs,Figs,Gigs,Ifs,Gifts,Gins,Gift,Giff
Design improved UX for all parts of DevTools
- "UX" -> IX,U,X,AUX,TUX,EX,US,AX,OX,UM,UP,UH,BX,RX
Coverage of new experimental features Subscribe to devtools-reviews@chromium.org mailing list for all reviews of pending code Subscribe to the RSS feed of devtools commits. Follow @ChromeDevTools on Twitter which also includes a feed of all commits. There's plenty of action and developers are eager to hear what's landing
- "devtools-reviews@chromium.org" -> DevTools-reviews@chromium.org
- "RSS" -> RS,RES,ASS,RPS,R'S,RS S,ROSS,RUSS,ROS,RVS
- "devtools" -> DevTools
- "ChromeDevTools" -> Chrome DevTools,Chrome-DevTools,Chromosomes
Subscribe to devtools-reviews@chromium.org mailing list for all reviews of pending code
- "devtools-reviews@chromium.org" -> DevTools-reviews@chromium.org
Subscribe to the RSS feed of devtools commits.
- "RSS" -> RS,RES,ASS,RPS,R'S,RS S,ROSS,RUSS,ROS,RVS
- "devtools" -> DevTools
Follow @ChromeDevTools on Twitter which also includes a feed of all commits.
- "ChromeDevTools" -> Chrome DevTools,Chrome-DevTools,Chromosomes
Designing improved UX for all parts of DevTools Your ideas on the design and UX are quite welcome.
- "UX" -> IX,U,X,AUX,TUX,EX,US,AX,OX,UM,UP,UH,BX,RX
Your ideas on the design and UX are quite welcome.
- "UX" -> IX,U,X,AUX,TUX,EX,US,AX,OX,UM,UP,UH,BX,RX
Working on features or bugs The codebase is just JavaScript and the contribution guide below can get you started quickly
- "codebase" -> co debase,co-debase,code base,code-base,codebreak
The codebase is just JavaScript and the contribution guide below can get you started quickly
- "codebase" -> co debase,co-debase,code base,code-base,codebreak
The DevTools team values feedback from developers using the tools. If you want to keep updated, you can subscribe at crbug to the channels below. Please remember to star issues that affect you as well. Finally, don't forget to submit feature requests or bug reports for things that you find as well. Not only in the DevTools, but for all of Chrome.
- "crbug" -> bug
The Chrome DevTools are actually a web app written in JavaScript and CSS. If you're familiar with these technologies, you know enough to write a patch. A few folks have already done this, giving us a colorpicker, a file picker and other features, all contributed by developers just like you.
- "colorpicker" -> color picker,color-picker,colorimeter
IRC channel on Freenode: #chrome-devtools and #blink
- "IRC" -> CIR,IRE,ARC,INC,IRK,IRV,IR,IRA,IR C,CIRCE
- "Freenode" -> Free node,Free-node,Freedmen
- "chrome-devtools" -> chrome-DevTools,chromosomes
Note: You will need to sign and submit a completed CLA (Contributor License Agreement) before we are able to consider any contributions you may wish to make.
- "CLA" -> CAL,CL,CA,LA,CLAN,COLA,CLAD,CLAM,CLAP,CLAY,CLAW,LAC,ALA,ILA
Serve devtools frontend
- "devtools" -> DevTools
- "frontend" -> fronted,front end,front-end,Frontenac
Run a local web server. The local web server will serve files from the directory on some port (e.g. ).
- "e.g" -> erg,egg,EEG
Why does the server need to run from the devtools directory?
- "devtools" -> DevTools
When remotely debugging and developing the front-end of Blink, the content of the file is generated based on the content of instead as a fallback of the Chromium build system. The file is in the parent folder of the folder which is . This is why you need to run the web server from within the directory.
- "fallback" -> callback,fullback,fall back,fall-back,blackball
Note: describes the API between front-end and back-end. It is used for generating API stubs for the front-end and back-end at the build stage. When remote debugging the front-end part of the API, is generated on the fly by front-end code. For more information, read the Chromium How-tos.
- "How-tos" -> How-sot,How-tis,How-to,How-ts,How-toes,How-toss,How-taos,How-tons,How-tors,How-tots,How-togs,How-toms,How-tops,How-toys,How-tows
We're loading our inspection dashboard on port 9222 but we're specifying the devtools frontend to then use in the URL hash: . Since we launched the devtools frontend on port 8000 we want to match that here. The path should point to the correct location of the inspector.html file assuming that your web server is running from the Source directory. The older flag was retired.
- "devtools" -> DevTools
- "frontend" -> fronted,front end,front-end,Frontenac
- "inspector.html" -> inspectorate
These flags cause Chrome to allow websocket connections into localhost:9222 and to serve the front-end UI from your local git repo. Here's a full list of command line switches and what they do.
- "websocket" -> web socket,web-socket,WebSocket
- "localhost:9222" -> localhost
- "repo" -> rope,rep,reps,reno,redo,rep o
If you're not developing the DevTools, the easy way to inspect the DevTools is undock them from your tab so it is in a separate window. Then hit your keyboard shortcut for inspecting (like cmd-alt-i). This will bring up a new DevTools window that's inspecting the previous once. You can now redock these windows as you wish.
- "undock" -> unlock,undo ck,undo-ck,undo
- "cmd-alt-i" -> Cmd-alt-i,cm-alt-i,cad-alt-i,cod-alt-i,cud-alt-i,cpd-alt-i,cm d-alt-i
- "redock" -> re dock,re-dock,redo ck,redo-ck,relocked,docker,recked
Next, return to the "Inspectable Pages" tab, http://localhost:9222.
- "Inspectable" -> Inspect able,Inspect-able,Respectable,Injectable,Indispensable,Installable
- "http:" -> HTTP
- "localhost:9222" -> localhost
This grid menu is served by a small web server running inside the first instance of Canary which the parameter was passed into. Since the web server is running from your local git repo in the directory, so the files within the devtools folder will be used for the inspector you see when clicking any of one these pages.
- "repo" -> rope,rep,reps,reno,redo,rep o
- "devtools" -> DevTools
Notice that the URL address of this DevTools instance points to http://localhost:8000/front_end/inspector.html. This is because of the inspector URL that was passed as a hash to the "Inspectable Pages" URL. It connects to your local repo through a websocket, which you may notice, is part of the URL . (You can also use DevTools to look at this WebSocket frame data). Back to hacking…
- "http:" -> HTTP
- "localhost:8000" -> localhost
- "front_end" -> Frontenac
- "inspector.html" -> inspectorate
- "Inspectable" -> Inspect able,Inspect-able,Respectable,Injectable,Indispensable,Installable
- "repo" -> rope,rep,reps,reno,redo,rep o
- "websocket" -> web socket,web-socket,WebSocket
Now that you are ready to dig into the code and start developing the DevTools source, head over to http://crbug.com and find the ticket for your change and leave a comment saying you will be writing a patch for it. If you haven't decided on what you to change look through the open issues and choose one you would like to do and leave a comment on it asking for it to be assigned to you.
- "http:" -> HTTP
- "crbug.com" ->
You should see "0 error(s), 0 warning(s)".
- "error(s" -> errors,error's,error
- "warning(s" -> warnings,warning's,warning
Install depot_tools
- "depot_tools" -> DevTools
You will need to install the depot_tools in order to upload your patch once your changes are completed. The depot_tools are a package of scripts used to manage checkouts and code reviews, and it includes commands , , and and will be useful later on. You will still want to sync your Chromium checkout with all its dependencies however.
- "depot_tools" -> DevTools
Note: This guide includes steps for Windows throughout it, but has not been confirmed to work due to the inability to add to the PATH of Windows command line. However, you can try Cygwin as an alternative solution. Here you can find steps for installing depot_tools on Windows with Cygwin.
- "Cygwin" -> Cycling
- "depot_tools" -> DevTools
You must have an account for codereview.chromium.org and you'll enter in your credentials in this process. Afterwards, you'll get the codereview URL e.g.
- "codereview.chromium.org" ->
- "codereview" -> code review,code-review,codeword
- "e.g" -> erg,egg,EEG
You get to pick between two workflows: merge or rebase. Both are "mathematically equivalent" but you use different commands. Unless you are a git uber-guru, the workflows and thinking for each are different.
- "rebase" -> rebate,debase,re base,re-base,freebase,Reba,Reeba,base
- "uber-guru" -> tuber-guru,cuber-guru,umber-guru,Huber-guru,Buber-guru,rube-guru,user-guru,rubber-guru,dubber-guru,lubber-guru,Rube-guru,grubber
About half of the contributors to Chromium use this rebase workflow.
- "rebase" -> rebate,debase,re base,re-base,freebase,Reba,Reeba,base
git checkout -b myAwesomeBranch make a bunch of changes in the branch
- "myAwesomeBranch" -> awesomeness
gclient sync
- "gclient" -> client,g client
git checkout my_branch
- "my_branch" -> subbranch
git rebase master
- "rebase" -> rebate,debase,re base,re-base,freebase,Reba,Reeba,base
If you end up with lots of revisions in your branch, the rebase can be messy as it applies each change in order so you may need to resolve conflicts repeatedly. Git you squash a bunch of commits into one with . It pops open an editor with a bunch of lines. Change all but the first pick. _to _squash. Use to replace the word .
- "rebase" -> rebate,debase,re base,re-base,freebase,Reba,Reeba,base
- "_to" -> to,Ito
- "_squash" -> squash,quash
git diff master should be the exact patch you're expecting to upload
- "diff" -> duff,doff,riff,tiff,miff,Tiff,Giff,differ
Create a new issue at https://code.google.com/p/chromium/issues/list, or find issue you want to fix.
- "https:" -> HTTP
- "code.google.com" ->
Create a branch in your local git checkout for that issue. Something like (e.g. "drawer-status-bar-231904"). This makes easier to find in which branch your issue lives and vice-versa. It'd be great to assign issue to yourself and mark it as "started" so that nobody else starts doing same job.
- "e.g" -> erg,egg,EEG
Commit changes in that branch. You can merge all commits into one. This makes rebasing later easier if needed.
- "rebasing" -> rebating,debasing,re basing,re-basing,freebasing,increasing,creasing
. The first time you have to fill in the commit description and mention issue number, for example "". You will be asked for patch description later on and they all will be attached to the same codereview issue. See "Patch Set #1", "PatchSet #2"... at https://chromiumcodereview.appspot.com/14329024/
- "codereview" -> code review,code-review,codeword
- "PatchSet" -> Patch Set,Patch-Set,Patch-set,Patchiness
- "https:" -> HTTP
- "chromiumcodereview.appspot.com" ->
Add reviewers to the changelist and ask them to review. You should pick reviewers from the OWNERS files. suggests reviewers.
- "changelist" -> change list,change-list,changeling,evangelistic,evangelist,Evangelist
If received LGTM from owners - press commit button.
- "LGTM" -> LG
Sometimes you may need to rebase if the "commit" button fails on codereview page. Some reviewers don't like rebasing during a codereview since it makes reviewing harder for them.
- "rebase" -> rebate,debase,re base,re-base,freebase,Reba,Reeba,base
- "codereview" -> code review,code-review,codeword
- "rebasing" -> rebating,debasing,re basing,re-basing,freebasing,increasing,creasing
To setup a build that can run the layout tests read about layout tests over on Chromium.org. Depending on the type of patch you are submitting, there may be Chrome DevTools layout tests you will want to run before submission.
- "Chromium.org" -> Chromium
First, run to use . You can follow the steps located in the Chromium Using Git guide to walk you through this process. In summary make sure depot_tools is in your path. Run in a directory you wish to store the Chromium source (perhaps get a snack or one of those paddles with a ball on it, this will take some time).
- "depot_tools" -> DevTools
This will also take some time. Once it has finished providing you with warmth from your laptop then you are good to run the layout tests which can be run with from your src directory . Replace the .sh with .bat if you are on Windows. Some failures are expected! (unfortunatly). A good process here is to run them before you make any changes, then run them after you make your changes. It can also take an argument to a directory so you can just point it to the directory to run.
- "src" -> arc,sec,sic,sac,soc,RCS
- "unfortunatly" -> unfortunately,unfortunate,fortunately
DevTools front-end and core/inspector backend use wire protocol (aka remote debugging protocol) to interact. Some older docs (2012) about it:
- "backend" -> backed,back end,back-end,backhand
https://www.webkit.org/blog/1875/announcing-remote-debugging-protocol-v1-0/
- "https:" -> HTTP
- "www.webkit.org" ->
- "announcing-remote-debugging-protocol-v1-0" -> announcing-remote-debugging-protocol-v-0,announcing-remote-debugging-protocol-1-0,announcing-remote-debugging-protocol-vs-0,announcing-remote-debugging-protocol-vi-0,announcing-remote-debugging-protocol-vb-0
https://developer.chrome.com/devtools/docs/debugger-protocol
- "https:" -> HTTP
- "developer.chrome.com" -> underdevelopment
- "devtools" -> DevTools
All the code that touches DOM and other properties of the page is native. Console the only thing that touches the running page JS because it absolutely needs to.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
If it depends on renderer information, you should add a new method into the protocol (protocol.json), for example into the DOM agent. That would generate JS bindings on the front-end part and corresponding handler functions in InspectorDOMAgent interface. Then you implement them on the backend part and call from the front-end.
- "protocol.json" -> protocol
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
- "InspectorDOMAgent" -> Inspectorate
- "backend" -> backed,back end,back-end,backhand
Look at any methods in protocol.json to see how they are used.
- "protocol.json" -> protocol
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
For preprocessors that support CSS source maps, DevTools lets you live-edit your preprocessor source files in the Sources panel, and view the results without having to leave DevTools or refresh the page. When you inspect an element whose styles are provided by a generated CSS file, the Elements panel displays a link to the original source file, not the generated .css file.
- "css" -> CSS,cs,cuss,cs's,ass,cos,cps,cs s
Control+click (or Command+click) on any CSS property name or value to open the source file and jump to the appropriate line.
- "Control+click" -> Controlling
- "Command+click" -> Commanding
To use this workflow, your CSS preprocessor must support CSS source maps, specifically the Source Map v3 proposal. The CSS source maps must be built along with the CSS files, so DevTools can map each CSS property to the correct location in the original source file (for example, .scss file).
- "v3" -> v,3,vs,vi,vb
- "scss" -> SCSS,sass
To use this workflow, your CSS preprocessor must support CSS source maps, specifically the Source Map v3 proposal. The CSS source maps must be built along with the CSS files, so DevTools can map each CSS property to the correct location in the original source file (for example, .scss file).
- "v3" -> v,3,vs,vi,vb
- "scss" -> SCSS,sass
You must be accessing your site or app from a web server (not a file:// URL), and the server must serve the CSS files as well as the source maps (.css.map) and source files (.scss, etc.).
- "css.map" ->
- "scss" -> SCSS,sass
You must be accessing your site or app from a web server (not a file:// URL), and the server must serve the CSS files as well as the source maps (.css.map) and source files (.scss, etc.).
- "css.map" ->
- "scss" -> SCSS,sass
To live-edit Sass files in Chrome you need to have the pre-release version of the Sass compiler, which is the only version that currently supports source map generation.
- "pre-release" -> per-release,ore-release,pee-release,pr-release,re-release,pres-release,pare-release,pore-release,pure-release,prep-release,prey-release,pyre-release,pref-release,rep-release,ere-release
Compass: The flag was implemented in Compass 1.0. Alternatively you can add to your config.rb file. Demo repo here. Development notes are in issue 1108.
- "config.rb" -> configure
- "repo" -> rope,rep,reps,reno,redo,rep o
Autoprefixer: Implemented in 1.0. Autoprefixer docs explain how to use it, along with absorbing an input sourcemap (from another preprocessor).
- "Autoprefixer" -> Autorepeat
Libsass: Implemented.
- "Libsass" -> Lib sass,Lib-sass,Libs ass,Libs-ass,Lissa
For instance, given an SCSS file named styles.scss:
- "styles.scss" -> stylesheets
Sass generates a CSS file, styles.css, with the sourceMappingURL annotation:
- "styles.css" -> stylesheets
- "sourceMappingURL" -> sourcemaps
As of Google Chrome M31, we commit to supporting the version 1.1 of the protocol. All subsequent 1.* versions of the protocol are going to be backwards compatible with 1.1. As of Google Chrome M18, we commit to supporting the version 1.0 of the protocol. All subsequent 1.* versions of the protocol are going to be backwards compatible with 1.0. As of Google Chrome M16, we commit to supporting the version 0.1 of the protocol. All subsequent 0.* versions of the protocol are going to be backwards compatible with 0.1.
- "M31" ->
- "M18" ->
- "M16" ->
As of Google Chrome M31, we commit to supporting the version 1.1 of the protocol. All subsequent 1.* versions of the protocol are going to be backwards compatible with 1.1.
- "M31" ->
As of Google Chrome M18, we commit to supporting the version 1.0 of the protocol. All subsequent 1.* versions of the protocol are going to be backwards compatible with 1.0.
- "M18" ->
As of Google Chrome M16, we commit to supporting the version 0.1 of the protocol. All subsequent 0.* versions of the protocol are going to be backwards compatible with 0.1.
- "M16" ->
When you navigate your client browser to the remote's Chrome port, Developer Tools front-end is being served from the host Chrome as a Web Application from the Web Server.
- "remote's" -> remotes,re mote's,re-mote's,remoteness's,remorse's,remote,mote's
In this scenario, you can substitute Developer Tools front-end with your own implementation. Instead of navigating to the HTML page at http://localhost:9222, your application can discover available pages by issuing the following HTTP request to the browser:
- "http:" -> HTTP
- "localhost:9222" -> localhost
and getting a JSON object with information about inspectable pages along with the WebSocket addresses that you could use in order to start instrumenting them.
- "inspectable" -> inspect able,inspect-able,respectable,injectable,indispensable,installable
To allow third parties to interact with the protocol, we introduced chrome.debugger extension API that exposes this JSON message transport interface. As a result, you can not only attach to the remotely running Chrome instance, but also instrument it from its own extension.
- "chrome.debugger" -> Mercurochrome
Chrome Debugger Extension API provides a higher level API where command domain, name and body are provided explicitly in the call. This API hides request ids and handles binding of the request with its response, hence allowing to report result in the callback function call. One can also use this API in combination with the other Extension APIs.
- "APIs" -> A Pis,API,API s,Pis,Apsis,Apish,Apes,Apps,Apia,Alis,Avis,Pisa
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
This blog post from Mark DuBois gives an overview of working in Brackets.
- "DuBois" -> Du Bois,Du-Bois,Dubious
Download from download.brackets.io.
- "download.brackets.io" -> download
crconsole
- "crconsole" -> consoler,console,consolable
Introduction to Telemetry on Chromium.org.
- "Chromium.org" -> Chromium
Chrome.vim is an experimental plugin for the Vim editor that provides some basic Chrome operations as Vim commands.
- "Chrome.vim" -> Chromosome
https://github.com/mklabs/vimfiles/tree/master/custom-bundle/vim-chrome
- "https:" -> HTTP
- "github.com" -> GitHub
- "mklabs" -> blabs
- "vimfiles" -> vim files,vim-files,misfiles
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
You can also toggle device mode on and off using the keyboard shortcut: Ctrl+Shift+M (or Cmd+Shift+M on Mac).
- "Ctrl+Shift+M" -> Shiftlessness
- "Cmd+Shift+M" -> Makeshift
To jump-start your debugging process, device mode has a variety of emulation presets. Quickly emulate a particular device by selecting a model from the preset dropdown.
- "dropdown" -> drop down,drop-down,drown
Autosizes (boosts) text for pages without a defined viewport.
- "Autosizes" -> Auto sizes,Auto-sizes,Automatizes,Outsizes
To get more granular control over the screen emulator, you can tune the resolution settings below the device preset dropdown.
- "dropdown" -> drop down,drop-down,drown
If you want to emulate a Retina device from a non-Retina machine or vice versa, adjust the Device pixel ratio field. The device pixel ratio (DPR) is the ratio between logical pixels and physical pixels. Devices with Retina displays, such as the iPhone 5, have higher pixel density than standard devices, which can affect the sharpness and size of visual content.
- "DPR" -> DPT,PR,DPI,PPR,APR,D PR,DR,DER,DIR,DAR,DUR,DP
Some examples of DPR-sensitivity on the web are:
- "DPR-sensitivity" -> DPT-sensitivity,PR-sensitivity,DPI-sensitivity,PPR-sensitivity,APR-sensitivity,D PR-sensitivity,DR-sensitivity,DER-sensitivity,DIR-sensitivity,DAR-sensitivity,DUR-sensitivity,DP-sensitivity,Hypersensitivity,Oversensitivity,Sensitivity
The srcset attribute on images.
- "srcset" -> secret
The BOM property.
- "BOM" -> MOB,OM,BOOM,BOMB,BOA,BOT,TOM,BOO,COM,BOD,BUM,BOG,MOM,BOP,BOB
Note: If you have a native Retina display, you'll notice that low dpi assets look pixelated while higher-dpi assets are sharp. To simulate this effect on a standard display, select the Fit checkbox and set the DPR to 2.
- "pixelated" -> pix elated,pix-elated,dilapidated
- "DPR" -> DPT,PR,DPI,PPR,APR,D PR,DR,DER,DIR,DAR,DUR,DP
Now you can quickly select your custom screen emulation from the device preset dropdown.
- "dropdown" -> drop down,drop-down,drown
Device mode's network conditioning allows you to test your site on a variety of network connections, including Edge, 3G, and even offline. Select a connection from the preset dropdown to apply network throttling and latency manipulation.
- "3G" -> 3,G,LG,CG,MG,PG,KG,AG,HG
- "offline" -> off line,off-line,lifeline
- "dropdown" -> drop down,drop-down,drown
Network throttling artificially limits the maximum download throughput (rate of data transfer). Latency manipulation enforces a minimum delay in connection (RTT).
- "RTT" -> RT,RTE,RAT,ROT,RUT,RT T
Select the CSS media checkbox, and choose a media type from the dropdown list.
- "dropdown" -> drop down,drop-down,drown
Note: If your app detects sensors onload using JavaScript (such as Modernizr), make sure that you reload the page after enabling sensor emulators.
- "onload" -> unload,on load,on-load,download,load
- "Modernizr" -> Modernize,Modernizer,Modernism,Modern
You can simulate multi-touch events on devices that support multi-touch input, such as laptops with trackpads. For more information about setting up multi-touch simulation, see the "Developer Tools" section of the Multi-touch web development guide on HTML5 Rocks.
- "trackpads" -> track pads,track-pads,trackless
Tip: Try out the DevTools debugger in combination with touch emulation using this fingerpaint touch screen demo.
- "fingerpaint" -> fingerprint,finger paint,finger-paint,fingertip,fingering
When you hover over or select a DOM node, the rendered element is highlighted in the main browser window. If the element is scrolled offscreen, a tooltip is displayed at the edge of the browser window indicating that the selected element is offscreen.
- "offscreen" -> off screen,off-screen,smokescreen
- "tooltip" -> tool tip,tool-tip,toolkit
isAttribute: True if the event is registered through a DOM attribute (for example, ).
- "isAttribute" -> is Attribute,is-attribute,attribute,attributive,attributable,distributer
lineNumber: Line number containing the event registration.
- "lineNumber" -> line Number,line-number,linen umber,linen-umber,renumber,timberline,numberer,Berliner
listenerBody: String representation of the callback function.
- "listenerBody" -> listener Body,listener-body,listener
sourceName: URL Path to the source file containing the event listener.
- "sourceName" -> source Name,source-name,sourcemaps
useCapture: A boolean value stating whether the useCapture flag on was set.
- "useCapture" -> use Capture,use-capture,capturer,capture
See the W3C documentation on cascading and inheritance for more information: http://www.w3.org/TR/CSS2/cascade.html
- "http:" -> HTTP
- "www.w3.org" ->
- "CSS2" -> CSS
- "cascade.html" -> Cascades
Cascade rules dictate that if two rules have the same origin, weight, and specificity, the last defined rule takes precedence. In this case, the second color property takes precedence. The first color property is shown in strikethrough text to show that it's been overridden.
- "strikethrough" -> strike through,strike-through,breakthroughs
User agent stylesheets are clearly labelled, and are often overridden by the CSS on your web page.
- "labelled" -> labeled,la belled,la-belled,label led,label-led,belled,belabored,blabbed,belated
Greyed out selectors like and do not apply to the selected node. The rules shown above corresponds to the following CSS source:
- "Greyed" -> Preyed,Gr eyed,Gr-eyed,Grey ed,Grey-ed,Greed,Greedy,Grayed,Grey
You can add or edit styles within the Styles pane in the Elements panel. Unless the area containing the styling information is greyed out (as is the case with user agent stylesheets), all styles are editable. Edit styles in the following ways:
- "greyed" -> greed,greedy,grayed,preyed,gr eyed,gr-eyed,Grey
To enable or disable a style declaration, check or uncheck the checkbox next to it.
- "uncheck" -> unchecked,check
By default, your CSS modifications are not permanent, changes are lost when you reload the page. To customise the behaviour, see Workspaces.
- "customise" -> customize,decustomised,customhouse
- "behaviour" -> behavior
Expand second-level items to view a diff (before and after) corresponding to the modification. A line with a pink background signifies a removal while a line with a green background signifies an addition.
- "diff" -> duff,doff,riff,tiff,miff,Tiff,Giff,differ
Note: If you provide a value of anything other than to the CSS position property, the metrics pane displays a box labelled position.
- "labelled" -> labeled,la belled,la-belled,label led,label-led,belled,belabored,blabbed,belated
For every property specified by more than one rule, the pane displays a computed trace, which is a stack of selectors applicable to the node and specifying the property value. Since rule selectors have different specificities, all but the top-most one will be “cancelled out” in the trace, which is denoted by a strike-through type.
- "cancelled" -> canceled,can celled,can-celled,cancel led,cancel-led,cancelated,canceler,cancel,candled
Uncheck a box to disable the property (i.e. temporarily remove it from the style). The property gets struck out, and the change is instantly reflected in the inspected page.
- "Uncheck" -> Unchecked,Check
- "i.e" -> ire,ice,IE
For and elements, the central field contains the actual offsetWidth × offsetHeight pixel dimensions of the selected element.
- "offsetWidth" -> offset Width,offset-width,offsetting
- "offsetHeight" -> offset Height,offset-height,offsetting
Activate the Resources panel, find tutorial.css in the resource tree. Note that the tree node is expandable. Click the arrow next to the node title, and you will see all the resource modifications that you have made above.
- "tutorial.css" -> tutorials
The Elements panel lets you see everything in one DOM tree, and allows inspection and on-the-fly editing of DOM elements. You will often visit the Elements tabs when you need to identify the HTML snippet for some aspect of the page. For example, you may be curious if an image has an HTML id attribute, and what that attribute's value is.
- "attribute's" -> attributes,attributer's,at tribute's,at-tribute's,attributer,attribute,attribution's,attributives
Open the Google Closure Hovercard demo page.
- "Hovercard" -> Hover card,Hover-card,Overheard,Hardcover
Click the magnifying glass icon to turn on inspect mode. Return to the Google Closure Hovercard page and click the top-left card, Tom Smith. Because you are in inspect mode, this highlights the corresponding node in the Elements panel and displays its associated styles, then turns off inspect mode.
- "Hovercard" -> Hover card,Hover-card,Overheard,Hardcover
You'll see that we're able to tell all the style attributes that are being applied. For example, the padding comes directly from the element's attribute. The font is first defined for , but then overriden by the . There is also the property specified that is not recognized by the rendering engine. Properties like this are marked with the triangle warning sign to the left.
- "overriden" -> override,overridden,overrides,overrider,override n,overdriven
Now, hover over the .anchor editable style rule in the sidebar to see checkboxes that let you disable individual properties. You should see something like this: You can disable a property by de-selecting it.
- "de-selecting" -> DE-selecting,ed-selecting,De-selecting,d-selecting,e-selecting,die-selecting,den-selecting,doe-selecting,ode-selecting,due-selecting,deg-selecting,deb-selecting,dye-selecting,def-selecting,dew-selecting
Click an editable (non-grayed-out) style property name or value to edit them. For example, double-click the margin: 20px property. You should see something like this: Autocompletion suggestions will appear while editing property names and values. To add a new style property, click anywhere in the editable style declaration whitespace. The new property will be added immediately after the clicked style declaration. If you edit a style property value with a number, you can use the Up or Down keys to change the number. Holding the Alt/Option key steps by 0.1, holding the Shift key steps by 10. You can add more properties via double-clicking white area to the left / bottom of existing entries or via pasting multiple properties separated with semicolon. You can start editing of style rule selectors by clicking them. You can also add new style rules using the Gear Menu, located to the right of the Styles section bar.
- "20px" ->
- "Autocompletion" -> Auto completion,Auto-completion,Complementation,Completion
You can add a new style selector using the button found in the Styles section bar. In order to emulate an element's pseudostate (:active, :hover, :focus, :visited), use the in the Styles pane header. In will bring up a small pane where you can select which pseudostates of the selected element should be activated.
- "pseudostate" -> pseudo state,pseudo-state,pseudoscience
- "pseudostates" -> pseudo states,pseudo-states,pseudosciences
You can add breakpoints that fire on DOM modifications related to a certain element. Bring up a context menu on the #profileCard element and select the events you want to break on: subtree modifications, attributes modifications, and the node removal. Let's select "Attributes Modification" for now. Mover your mouse over any gray rectangle with a name. Your JavaScript code will break inside tooltip.js which tries to modify the "className" attribute of the #profileCard element. Press F8 to continue the JavaScript execution. The code immediately breaks on an attribute modification once again. Now select DOM Breakpoints in the right-hand sidebar.
- "profileCard" -> profile Card,profile-card,profiterole
- "tooltip.js" -> toolkits
- "className" -> class Name,class-name,classiness
You will see a list of your DOM breakpoints (contains a single breakpoint you just added.) You can toggle the breakpoint using a nearby checkbox to de-activate (and re-activate) it, or you can remove it altogether using its context menu's "Remove Breakpoint" item.
- "de-activate" -> DE-activate,ed-activate,De-activate,d-activate,e-activate,die-activate,den-activate,doe-activate,ode-activate,due-activate,deg-activate,deb-activate,dye-activate,def-activate,dew-activate
Select Event Listeners in the right-hand sidebar. The event listeners shown for the selected node are in the order in which they are fired through the capturing and bubbling phases. This provides the most accurate and useful information possible. Event listeners are separated by type. If a node has both onclick and onmouseover listeners they appear in different sections. You can also set your filter preference using the Gear Menu. You can choose to see only the listeners registered on the selected node, or the entire event flow.
- "onclick" -> on click,on-click,click
- "onmouseover" -> overgenerous
Type document.write in the search box. You should see incremental search running: The Elements panel supports XPath and CSS selectors as queries, in addition to plain text. All search results are highlighted in the DOM tree, the first match is revealed and selected.
- "document.write" -> documentation
Angular Batarang This extension features tools to help find and address performance bottlenecks, and visualize and debug applications.
- "Batarang" -> Bataan
Ember Inspector The Ember Inspector is a plug-in for the Chrome developer tools that makes understanding and debugging your Ember.js application a snap. After installing this extension, you'll be able to easily: - View all of the rou…
- "Ember.js" -> Embers
- "rou" -> rout,our,roe,sou,rot,rod,rob,you,row,Lou
Backbone Debugger Adds a panel under the Chrome Developer Tools that displays in real-time all your application views, models, collections and routers. Data displayed includes: - Views: rendering status, html element, associated model an…
- "html" -> HTML,ht ml,ht-ml
Grunt DevTools Extends the Developer Tools, adding tools for Grunt! A full GUI for your Gruntfile. Supports background tasks, such as 'watch'. Allows you to run tasks for multiple projects in a single window. See the GitHub page fo…
- "Gruntfile" -> Grunt file,Grunt-file,Disgruntle
- "fo" -> few,of,do,go,f,o,foe,for,fro,fol,fog,fop,fob,so,fa
DevTools Redirect This devtools extension will allow you to work faster on your local files using the server environment, try modifications on a website without breaking it for other people. You're deciding which file(s) you want to redi…
- "devtools" -> DevTools
- "file(s" -> files,filers,file's
- "redi" -> ride,redo,red,redid,Dredi,Fredi,ired,reds,Nedi,Tedi,Hedi,red i
Knockoutjs context debugger Knockoutjs debugging extension. Adds a extra sidebar in the elements pane of the chrome dev tools with the relevant knockout context and data for the selected element. Very usefull if you got large/nested viewmodels. A…
- "Knockoutjs" -> Knockouts,Knockout's,Knockout
- "dev" -> Dev,deb,div,den,rev,deg,def,dew,Nev,Rev,Lev,Kev
- "usefull" -> useful,usefully,use full,use-full,useful l
- "viewmodels" -> view models,view-models,viewfinders
BatmanJS DevTools If you work with Batman.js, this Batman.js Devtools Chrome extension is an invaluable tool. It includes a variety of tools useful for developing with Batman.js right in your browser.
- "BatmanJS" -> Batman's,Batman,Batsman
- "Batman.js" -> Batman
- "Devtools" -> DevTools,Dev tools,Dev-tools
Emmet LiveStyle Unlike other similar tools, LiveStyle doesn't replace CSS file in browser (or file system) to display changes, it performs structural analysis as-you-type and maps changes from one CSS source into another. Benefits are…
- "LiveStyle" -> Live Style,Lifestyle,Live-style,Stylites,Styles
SnappySnippet SnappySnippet is a DevTools extension that allows you to extract CSS and HTML from selected DOM subtree (last inspected element). Then, with just one click, you can send selected code to CodePen, jsFiddle or JS Bin. Ot…
- "SnappySnippet" -> Snappy Snippet,Snappy-snippet,Whippersnapper
- "CodePen" -> Code Pen,Code-Pen,Code-pen,Codependent,Codependency,Encode
- "jsFiddle" -> fiddle
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
- "Ot" -> OT,O,T,Ont,Oct,Et,Os,St,It,At,Rt,Ct,Gt,Mt,Pt
RapidJS DevTools An extra panel in the inspect dialog of the chrome developer tools, that let you inspect the insights of a rAppid:js application. To enable the inspection for your application you need to add the following setting to y…
- "RapidJS" -> Rapids,Rapid
- "rAppid:js" -> rapidness
RailsPanel RailsPanel is a Chrome extension for Rails development that will end your tailing of development.log. Have all information about your Rails app requests right there in the Developer Tools panel. Provides insight to db/r…
- "RailsPanel" -> Rails Panel,Rails-panel,Spandrels
- "development.log" -> developmental,development
App Inspector for Sencha Google Chrome™ Dev Tools extension for debugging Sencha™ applications.
- "Sencha" -> Hansen,Chase
jQuery Debugger New Selector Inspector panel Comfortably inspect your jQuery selectors, and watch their matching elements displayed on any website. Designed to help you understand easily even the most complex selectors. Two new sideba…
- "jQuery" -> j Query,query,equerry
- "sideba" -> sidebar,sideband,backside
PageSpeed Insights The PageSpeed Insights browser extensions, available for Chrome and Firefox, allow you to evaluate the performance of your web pages and to get suggestions on how to improve them. PageSpeed Insights for Chrome is a Chr…
- "PageSpeed" -> Page Speed,Page-speed,Pages peed,Pages-peed,Passaged
- "Chr" -> Che,Ch,Cr,Hr,Cher,Chi,Car,C hr,Ch r,Char,Cir,Ctr
Django Debug Panel Django Debug Toolbar inside WebKit DevTools. Works fine with background AJAX requests and non-HTML responses. Great for single-page applications and other AJAX intensive web applications.
- "Django" -> Fandango
- "Toolbar" -> Tool bar,Tool-bar,Barstool
Using the Dominators view, it's easy to spot collection objects that are small by themselves but retain lots of memory. In the Dominators view, find the node (usually, the topmost one) and expand it. Look at the top two child nodes (by default nodes are sorted by their retained size). The first one is a system wrapper around the array. The second one is the node. Both of them have small shallow size, but big retained size, due to a fact that they hold lots of objects.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
Note that the Dominators reveals dependencies between objects, not their references. For example, one of the objects is shared between two arrays, thus it is not retained by any of them, but by the object.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
There are four views: Summary — shows objects grouped by the constructor name; Comparison — displays difference between two snapshots; Containment — allows exploration of heap contents; Dominators — shows dominators tree.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
- "dominators" -> dominator,dominator's,nominators,dominator s,dominates,terminators,nominator,indoctrinators
Dominators — shows dominators tree.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
- "dominators" -> dominator,dominator's,nominators,dominator s,dominates,terminators,nominator,indoctrinators
Each property has one of four types:: property — a regular property with a name, accessed via the (dot) operator, or via (brackets) notation, e.g. ; element — a regular property with a numeric index, accessed via (brackets) notation; context variable — a variable in a function context, accessible by its name from inside a function closure; system property — property added by the JavaScript VM, not accessible from JavaScript code.
- "e.g" -> erg,egg,EEG
property — a regular property with a name, accessed via the (dot) operator, or via (brackets) notation, e.g. ;
- "e.g" -> erg,egg,EEG
Objects designated as System don't have corresponding JavaScript types. They are part of JavaScript VM's object system implementation.
- "VM's" -> V's,M's,VMS's,Vi's,Va's,Vt's,V M's,Vim's,Em's,Sm's,Am's
When more than one heap snapshot is taken, it is possible to compare them, and find leaked objects. To verify that a certain application operation doesn't create leaks (e.g. usually a pair of direct and reverse operations, like opening a document, and then closing it, should not leave any garbage), you may follow the scenario below: take a heap snapshot before performing an operation; perform an operation (e.g. open a document); perform a reverse operation (close the document); take a heap snapshot.
- "e.g" -> erg,egg,EEG
perform an operation (e.g. open a document);
- "e.g" -> erg,egg,EEG
The view provides several entry points: objects — these are objects considered as "global" objects for JavaScript code; GC roots — actual GC roots used by VM's garbage collector; Native objects — browser objects that are "pushed" inside the JavaScript virtual machine to allow automation, e.g. DOM nodes, CSS rules (see the next section for more details.)
- "VM's" -> V's,M's,VMS's,Vi's,Va's,Vt's,V M's,Vim's,Em's,Sm's,Am's
- "e.g" -> erg,egg,EEG
GC roots — actual GC roots used by VM's garbage collector;
- "VM's" -> V's,M's,VMS's,Vi's,Va's,Vt's,V M's,Vim's,Em's,Sm's,Am's
Native objects — browser objects that are "pushed" inside the JavaScript virtual machine to allow automation, e.g. DOM nodes, CSS rules (see the next section for more details.)
- "e.g" -> erg,egg,EEG
Dominators view
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
The Dominators view shows the dominators tree for the heap graph. The Dominators view looks similar to the Containment view, but lacks property names. This is because a dominator of an object may lack direct references to it, that is, the dominators tree is not a spanning tree of the graph. But this only serves for good, as helps us to identify memory accumulation points quickly.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
- "dominators" -> dominator,dominator's,nominators,dominator s,dominates,terminators,nominator,indoctrinators
In the simplest case, the path will only include "true" JavaScript objects and use references that are accessible from JavaScript code, e.g.:
- "e.g" -> erg,egg,EEG
Even more advanced are paths including "hidden" objects. Normally, the existence of such paths doesn't mean that an application has a leak. Some of the paths are "low level" paths, equivalent to their JavaScript shortcuts. E.g., every object has and internal arrays, thus a property value can be displayed as held directly by an object (this is how a JavaScript programmer sees it), or as an element of the array (this is how the JavaScript virtual machine actually accesses it.) Knowing these details might help in getting an understanding of how the virtual machine works. However, for most of web application developers it is safe to ignore them. Below are some examples of "internal" paths: — this is equivalent to a JavaScript path:
- "E.g" -> Eng,Erg,Egg,EEG
Q&A
- "Q&A" -> QUA,QA
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
Third-party applications, such as IDEs, editors, continuous integration harnesses, and test frameworks can integrate with the Chrome debugger in order to debug code, live-preview code and CSS changes, and control the browser. Clients use the Chrome debugging protocol to interact with an instance of Chrome, which can be running on the same system or remotely.
- "IDEs" -> Ides,IDE,IDs,ID Es,ID-Es,IDE s,Dies,Odes,Idea,Ids,Sides,Ideas,Aides,Rides
Applications that run in Chrome (such as web-based IDEs) can create a Chrome extension using the debugger module, chrome.debugger. This module lets the extension interact with the debugger directly, bypassing the DevTools UI. See Using the debugger extension API for more information.
- "IDEs" -> Ides,IDE,IDs,ID Es,ID-Es,IDE s,Dies,Odes,Idea,Ids,Sides,Ideas,Aides,Rides
- "chrome.debugger" -> Mercurochrome
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
In this section, we will walk through how to use these tools by debugging the Google Closure hovercard demo and other dynamic examples in this page.
- "hovercard" -> hover card,hover-card,overheard,hardcover
Open a site such as the Google Closure hovercard demo page or the TodoMVC Angular app.
- "hovercard" -> hover card,hover-card,overheard,hardcover
- "TodoMVC" -> Dodoma
For a walkthrough of other keyboard shortcuts supported, see Shortcuts.
- "walkthrough" -> walk through,walk-through,breakthrough
In the Sources panel, open a JavaScript file for debugging. In the example below, we are debugging the todoCtrl.js file from the AngularJS version of TodoMVC.
- "todoCtrl.js" -> postdoctoral
- "AngularJS" -> Angular
- "TodoMVC" -> Dodoma
Once you have one or more breakpoints set, return to the browser window and interact with your page. In the example below, a breakpoint was added within . Now any attempts to delete a todo item in the TodoMVC app will trigger a breakpoint pause:
- "todo" -> too,dodo,to do,to-do,Todd,Tod
- "TodoMVC" -> Dodoma
Further information and examples using async call stacks can be found in Debugging Asynchronous JavaScript with Chrome DevTools on HTML5Rocks.com.
- "HTML5Rocks.com" ->
In the Sources panel select "dynamicScript.js" from scripts drop-down and set breakpoint on line 2
- "dynamicScript.js" -> microhydrodynamics
Note: Notice the line at the end of dynamicScript.js file. This technique gives a name to a script created with eval, and will be discussed in more detail in the Source Maps section. Breakpoints can be set in dynamic JavaScript only if it has a user supplied name.
- "dynamicScript.js" -> microhydrodynamics
- "eval" -> veal,vela,val,evals,vale,evil,oval,e val,Vale
You should stop in raiseAndCatchException function
- "raiseAndCatchException" -> exceptionalness
You should not stop in raiseAndCatchException function since exception is caught
- "raiseAndCatchException" -> exceptionalness
Type "data.txt" in text input and hit enter
- "data.txt" -> dataset
Retrieve data.txt by XHR
- "data.txt" -> dataset
Set a mouseout Event Listener breakpoint by clicking on the checkbox near the mouseout entry
- "mouseout" -> mouse out,mouse-out,mousse,titmouse,mouse,outhouse
Note: Following events are supported Keyboard: keydown, keypress, keyup, textInput Mouse: click, dblclick, mousedown, mouseup, mouseover, mousemove, mouseout, mousewheel Control: resize, scroll, zoom, focus, blur, select, change, submit, reset Clipboard: copy, cut, paste, beforecopy, beforecut, beforepaste Load: load, unload, abort, error DOM Mutation: DOMActivate, DOMFocusIn, DOMFocusOut, DOMAttrModified, DOMCharacterDataModified, DOMNodeInserted, DOMNodeInsertedIntoDocument, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMSubtreeModified, DOMContentLoaded Device: deviceorientation, devicemotion
- "keydown" -> key down,key-down,Downey
- "keypress" -> key press,key-press,cypress
- "keyup" -> key up,key-up,keypad
- "textInput" -> text Input,text-input,textile
- "dblclick" -> dbl click,dbl-click,keyclick
- "mousedown" -> mouse down,mouse-down,moused own,moused-own,dormouse
- "mouseup" -> mouse up,mouse-up,mouse,mousse
- "mouseover" -> mouse over,mouse-over,moreover,mouser,overuse
- "mousemove" -> mouse move,mouse-move,mousse,venomous
- "mouseout" -> mouse out,mouse-out,mousse,titmouse,mouse,outhouse
- "mousewheel" -> mouse wheel,mouse-wheel,wheelhouse
- "beforecopy" -> before copy,before-copy,beforehand
- "beforecut" -> before cut,before-cut,before
- "beforepaste" -> before paste,before-paste,foretaste
- "DOMActivate" -> Dom Activate,Dom-activate,Activated,Activate
- "DOMFocusIn" -> Defocussing
- "DOMFocusOut" -> Defocussing
- "DOMAttrModified" -> Modification
- "DOMCharacterDataModified" -> Characterized
- "DOMNodeInserted" -> Inserted
- "DOMNodeInsertedIntoDocument" ->
- "DOMNodeRemoved" -> Underemployed
- "DOMNodeRemovedFromDocument" ->
- "DOMSubtreeModified" -> Modifiableness
- "DOMContentLoaded" -> Malcontentedness
- "deviceorientation" -> device orientation,device-orientation,decentralization
- "devicemotion" -> device motion,device-motion,demonetization
Quick protip: When "refresh" is initiated from DevTools (Ctrl+R while focused in DevTools), all pauses are disabled until the new page load is commenced (or as a plan B, until the user presses the "Pause" button). However, if you initiate refresh from the browser button (or Ctrl+R while focus is outside the DevTools), any remaining breakpoints will actually be hit. This fact could be used for those who are interested in page unloading process.
- "Ctrl+R" -> Ctrl
Navigate to the Google Closure hovercard demo
- "hovercard" -> hover card,hover-card,overheard,hardcover
In the Sources panel, open up "mouse.js" and use the Ctrl/Cmd + Shift + O to navigate to the onMouseOut() function
- "mouse.js" -> mouses
- "onMouseOut" -> Monmouth
Modify the function, adding a console.log('Moused out') to the end
- "console.log('Moused" -> consolidated
When something goes wrong, you can open the DevTools console (Ctrl+Shift+J / Cmd+Option+J) and find a number of JavaScript error messages there. Each message has a link to the file name with the line number you can navigate to.
- "Ctrl+Shift+J" -> Shiftlessness
- "Cmd+Option+J" -> Consumption
You may also want to pause JavaScript execution next time exception is thrown and inspect its call stack, scope variables and state of your app. A tri-state stop button ( ) at the bottom of the Scripts panel enables you to switch between different exception handling modes: you can choose to either pause on all exception or only on the uncaught ones or you can ignore exceptions altogether.
- "tri-state" -> tree-state,tr-state,ti-state,trio-state,tori-state,trig-state,trim-state,trip-state,try-state,Ari-state,Uri-state,Fri-state,tr i-state,tristate,testatrices
Error.stack
- "Error.stack" -> Terroristic
console.trace()
- "console.trace" -> contraception
You can instrument your code with console.trace() calls that would print current JavaScript call stacks:
- "console.trace" -> contraception
console.assert()
- "console.assert" -> inconsolableness
There is also a way to place assertion in your JavaScript code. Just call console.assert() with the error condition as the first parameter. Whenever this expression evaluates to false you will see a corresponding console record:
- "console.assert" -> inconsolableness
Handling exceptions at runtime using window.onerror
- "window.onerror" -> windowpane
Chrome supports setting a handler function to window.onerror. Whenever a JavaScript exception is thrown in the window context and is not caught by any try/catch block, the function will be invoked with the exception's message, the URL of the file where the exception was thrown and the line number in that file passed as three arguments in that order. You may find it convenient to set an error handler that would collect information about uncaught exceptions and report it back to your server.
- "window.onerror" -> windowpane
You need to use a minifier that's capable of creating source maps. Closure Compiler and UglifyJS 2.0 are two such tools but there are also tools available that create source maps for CoffeeScript, SASS and many others. See the Source maps: languages, tools and other info wiki page.
- "UglifyJS" -> Ugliness
Take a look at the special build of the font dragr tool in Chrome, with source mapping enabled, and you'll notice that the JavaScript isn't compiled and you can see all the individual JavaScript files it references. This is using source mapping, but behind the scenes actually running the compiled code. Any errors, logs and breakpoints will map to the dev code for awesome debugging! So in effect it gives you the illusion that you're running a dev site in production.
- "dragr" -> drag,drags,drag r,Agra
- "dev" -> Dev,deb,div,den,rev,deg,def,dew,Nev,Rev,Lev,Kev
@sourceURL and displayName in action
- "sourceURL" -> source URL,source-URL,sourceless,source
- "displayName" -> display Name,display-name,displayed
This helper looks very similar to the property and is actually mentioned in the source map V3 specifications. By including the following special comment in your code, which will be evaled, you can name evals and inline scripts and styles so they appear as more logical names in your dev tools.
- "V3" -> V,3,Vi,Va,Vt,VI,VA,VT,VD,VG,VM,VP,VF,Vs
- "dev" -> Dev,deb,div,den,rev,deg,def,dew,Nev,Rev,Lev,Kev
Working with sourceURL
- "sourceURL" -> source URL,source-URL,sourceless,source
NetTuts: Source Maps 101
- "NetTuts" -> Net Tuts,Net-tuts,Netts
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
Is my page using too much memory? - the Timeline memory view and Chrome task manager can help you identify if you're using too much memory. Memory view can track the number of live DOM nodes, documents and JS event listeners in the inspected render process. As a rule of thumb: avoid holding references to DOM elements you no longer need to use, unbind unneeded event listeners and take care when storing large chunks of data you aren't going to use.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
Is my page using too much memory? - the Timeline memory view and Chrome task manager can help you identify if you're using too much memory. Memory view can track the number of live DOM nodes, documents and JS event listeners in the inspected render process. As a rule of thumb: avoid holding references to DOM elements you no longer need to use, unbind unneeded event listeners and take care when storing large chunks of data you aren't going to use.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
Is my page free of memory leaks? - the Object allocation tracker can help you narrow down leaks by looking at JS object allocation in real-time. You can also use the heap profiler to take JS heap snapshots, analyze memory graphs and compare snapshots to discover what objects are not being cleaned up by garbage collection.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
Is my page free of memory leaks? - the Object allocation tracker can help you narrow down leaks by looking at JS object allocation in real-time. You can also use the heap profiler to take JS heap snapshots, analyze memory graphs and compare snapshots to discover what objects are not being cleaned up by garbage collection.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
How frequently is my page forcing garbage collection? - if you are GCing frequently, you may be allocating too frequently. The Timeline memory view can help you identify pauses of interest.
- "GCing" -> Going,Icing,Acing
How frequently is my page forcing garbage collection? - if you are GCing frequently, you may be allocating too frequently. The Timeline memory view can help you identify pauses of interest.
- "GCing" -> Going,Icing,Acing
Renderer memory is all memory of the process where an inspected page is rendered: native memory + JS heap memory of the page + JS heap memory of all dedicated workers started by the page. Nevertheless, even a small object can hold a large amount of memory indirectly, by preventing other objects from being disposed of by the automatic garbage collection process.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
Document DOM tree consisting of all native DOM nodes reachable by traversing the document. Not all of them may have JS wrappers but if they have the wrappers will be alive while the document is alive.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
Document DOM tree consisting of all native DOM nodes reachable by traversing the document. Not all of them may have JS wrappers but if they have the wrappers will be alive while the document is alive.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
Sometimes objects may be retained by debugger context and DevTools console (e.g. after console evaluation).
- "e.g" -> erg,egg,EEG
Sometimes objects may be retained by debugger context and DevTools console (e.g. after console evaluation).
- "e.g" -> erg,egg,EEG
The memory graph starts with a root, which may be the object of the browser or the object of a Node.js module. You don't control how this root object is GC'd.
- "Node.js" -> NodeJS
- "GC'd" -> Rec'd
Nodes (or objects) are labelled using the name of the constructor function that was used to build them
- "labelled" -> labeled,la belled,la-belled,label led,label-led,belled,belabored,blabbed,belated
Nodes (or objects) are labelled using the name of the constructor function that was used to build them
- "labelled" -> labeled,la belled,la-belled,label led,label-led,belled,belabored,blabbed,belated
Edges are labelled using the names of properties.
- "labelled" -> labeled,la belled,la-belled,label led,label-led,belled,belabored,blabbed,belated
Edges are labelled using the names of properties.
- "labelled" -> labeled,la belled,la-belled,label led,label-led,belled,belabored,blabbed,belated
Dominators
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
Dominator objects are comprised of a tree structure because each object has exactly one dominator. A dominator of an object may lack direct references to an object it dominates, that is, the dominators tree is not a spanning tree of the graph.
- "dominators" -> dominator,dominator's,nominators,dominator s,dominates,terminators,nominator,indoctrinators
Numbers (e.g 3.14159..)
- "e.g" -> erg,egg,EEG
Strings (e.g 'Werner Heisenberg')
- "e.g" -> erg,egg,EEG
an immediate 31-bit integer values called small integers (SMIs), or
- "SMIs" -> Sm Is,S Mis,Sis,Mis,Semis,Miss,Isms,Skis,Sims,Sm's,Sm-is,Ism
an immediate 31-bit integer values called small integers (SMIs), or
- "SMIs" -> Sm Is,S Mis,Sis,Mis,Semis,Miss,Isms,Skis,Sims,Sm's,Sm-is,Ism
heap objects, referred to as heap numbers. Heap numbers are used for storing values that do not fit into the SMI form, such as doubles, or when a value needs to be boxed, such as setting properties on it.
- "SMI" -> MI,SEMI,MIS,ISM,SCI,SKI,AMI,S MI,SIM,SM,SI,SUI,SM I,SMITH
heap objects, referred to as heap numbers. Heap numbers are used for storing values that do not fit into the SMI form, such as doubles, or when a value needs to be boxed, such as setting properties on it.
- "SMI" -> MI,SEMI,MIS,ISM,SCI,SKI,AMI,S MI,SIM,SM,SI,SUI,SM I,SMITH
Memory for new JavaScript objects is allocated from a dedicated JavaScript heap (or VM heap).These objects are managed by V8's garbage collector and therefore, will stay alive as long as there is at least one strong reference to them.
- "heap).These" -> heap). These,parentheses
- "V8's" -> V's,Vi's,Va's,Vt's
Arrays - An Array is an Objectwith numeric keys. They are used extensively in the V8 VM for storing large amounts of data. Sets of key-value pairs used like dictionaries are backed up by arrays.
- "Objectwith" -> Object with,Object-with,Objectivity
Each wrapper object holds a reference to the corresponding native object, for redirecting commands to it. In its own turn, an object group holds wrapper objects. However, this doesn't create an uncollectable cycle, as GC is smart enough to release object groups whose wrappers are no longer referenced. But forgetting to release a single wrapper will hold the whole group and associated wrappers.
- "uncollectable" -> noncollectable,uncorrectable,uncollected,uncontrollable
To read more about how to isolate problems that might be causing leaks during your memory profiling sessions, see Memory profiling with the Chrome DevTools by Zack Grossbart.
- "Grossbart" -> Crossbar
Remember to check and nullify variables that contain references to DOM elements which may be getting updated/destroyed during the lifecycle of your app. Check object properties which may reference other objects (or other DOM elements). Be sure to keep an eye on variable caches which may accumulate over time.
- "lifecycle" -> life cycle,life-cycle,Wycliffe,Felicle
Snapshots can be removed (both from DevTools and renderers memory) by pressing the Clear all profiles icon ():
- "renderers" -> renderer,renderer's,renderer s,renders,prependers,tenderer,surrender
Note: Closing the DevTools window will not delete collected profiles from the renderers memory. When reopening DevTools, all previously taken snapshots will reappear in the list of snapshots.
- "renderers" -> renderer,renderer's,renderer s,renders,prependers,tenderer,surrender
The Dominators view, which can be enabled via the Settings panel — shows the dominators tree. and can be useful to find accumulation points.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
- "dominators" -> dominator,dominator's,nominators,dominator s,dominates,terminators,nominator,indoctrinators
a: property — a regular property with a name, accessed via the . (dot) operator, or via [ ] (brackets) notation, e.g. ["foo bar"];
- "e.g" -> erg,egg,EEG
- "foo" -> few,goo,fop,foot,fool,food,foe,for,fro,too,fol,coo,fog,moo,fob
a: property — a regular property with a name, accessed via the . (dot) operator, or via [ ] (brackets) notation, e.g. ["foo bar"];
- "e.g" -> erg,egg,EEG
- "foo" -> few,goo,fop,foot,fool,food,foe,for,fro,too,fol,coo,fog,moo,fob
Objects designated as do not have a corresponding JavaScript type. They are part of JavaScript VM's object system implementation. V8 allocates most of its internal objects in the same heap as the user's JS objects. So these are just v8 internals.
- "VM's" -> V's,M's,VMS's,Vi's,Va's,Vt's,V M's,Vim's,Em's,Sm's,Am's
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
- "v8" -> V8,v,8,vs,vi,vb,F8
This view is used to compare multiple snapshots to each other so that you can see what the difference between them are in order to find leaked objects. To verify that a certain application operation doesn't create leaks (e.g. usually a pair of direct and reverse operations, like opening a document, and then closing it, should not leave any garbage), you may follow the scenario below:
- "e.g" -> erg,egg,EEG
DOMWindow** objects** — these are objects considered as "global" objects for JavaScript code;
- "DOMWindow" -> Dom Window,Dom-window,Downwind,Windows,Window
DOMWindow** objects** — these are objects considered as "global" objects for JavaScript code;
- "DOMWindow" -> Dom Window,Dom-window,Downwind,Windows,Window
GC roots — actual GC roots used by VM's garbage collector;
- "VM's" -> V's,M's,VMS's,Vi's,Va's,Vt's,V M's,Vim's,Em's,Sm's,Am's
GC roots — actual GC roots used by VM's garbage collector;
- "VM's" -> V's,M's,VMS's,Vi's,Va's,Vt's,V M's,Vim's,Em's,Sm's,Am's
Native objects — browser objects that are "pushed" inside the JavaScript virtual machine to allow automation, e.g. DOM nodes, CSS rules (see the next section for more details.)
- "e.g" -> erg,egg,EEG
Native objects — browser objects that are "pushed" inside the JavaScript virtual machine to allow automation, e.g. DOM nodes, CSS rules (see the next section for more details.)
- "e.g" -> erg,egg,EEG
Examples: Try out this example of why eval is evil to analyze the impact of closures on memory. You may also be interested in following it up with this example that takes you through recording heap allocations.
- "eval" -> veal,vela,val,evals,vale,evil,oval,e val,Vale
maintains a reference to it's parent (parentNode) and recursively up to , so only when leafRef is nullified is the WHOLE tree under a candidate for GC.
- "parentNode" -> parent Node,parent-node,parenthood,godparent
- "leafRef" -> leaf Ref,leaf-ref,leaflet
To read more about DOM leaks and memory analysis fundamentals checkout Finding and debugging memory leaks with the Chrome DevTools by Gonzalo Ruiz de Villa.
- "de" -> DE,ed,De,d,e,die,den,doe,ode,due,deg,deb,dye,def,dew
Dominators view
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
The Dominators view shows the dominators tree for the heap graph. The Dominators view looks similar to the Containment view, but lacks property names. This is because a dominator of an object may lack direct references to it, that is, the dominators tree is not a spanning tree of the graph. But this only serves for good, as helps us to identify memory accumulation points quickly.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
- "dominators" -> dominator,dominator's,nominators,dominator s,dominates,terminators,nominator,indoctrinators
Note: In Chrome Canary, Dominators view can be enabled by going to Settings > Show advanced heap snapshot properties and restarting the DevTools.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
Examples: Try this demo (opens in a new tab) to train yourself in finding accumulation points. Follow it up with this example of running into retaining paths and dominators.
- "dominators" -> dominator,dominator's,nominators,dominator s,dominates,terminators,nominator,indoctrinators
Note:At the time of writing, we are planning on avoiding this GC to reduce the drop in used heap size when taking heap snapshots. This has yet to be implemented but garbage would still be out of the snapshot.
- "Note:At" -> Notate
It's the rate of increase in the steepness of this curve that you need to keep an eye on.There is also a DOM node counter, Document counter and Event listener count in the Memory view which can be useful during diagnosis. DOM nodes use native memory and do not directly affect the JavaScript memory graph.
- "on.There" -> on. There,thereon,Theron,hereon
Yellow nodes (with a yellow background) however do have direct references from JavaScript. Look for yellow nodes in the same detached DOM tree to locate references from your JavaScript. There should be a chain of properties leading from the DOM window to the element (e.g ).
- "e.g" -> erg,egg,EEG
Q: What's the difference between the different Summary, Comparison, Dominators and Containment views?
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
Containment view provides a better view of object structure, helping us analyse objects referenced in the global namespace (i.e. window) to find out what is keeping them around. It lets you analyse closures and dive into your objects at a low level.
- "analyse" -> analyses,analyst,analyze,analysis,analysand,Anallese,Analise
- "namespace" -> name space,name-space,names pace,names-pace,spacemen
- "i.e" -> ire,ice,IE
Containment view provides a better view of object structure, helping us analyse objects referenced in the global namespace (i.e. window) to find out what is keeping them around. It lets you analyse closures and dive into your objects at a low level.
- "analyse" -> analyses,analyst,analyze,analysis,analysand,Anallese,Analise
- "namespace" -> name space,name-space,names pace,names-pace,spacemen
- "i.e" -> ire,ice,IE
Dominators view helps confirm that no unexpected references to objects are still hanging around (i.e that they are well contained) and that deletion/garbage collection is actually working.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
- "i.e" -> ire,ice,IE
Dominators view helps confirm that no unexpected references to objects are still hanging around (i.e that they are well contained) and that deletion/garbage collection is actually working.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
- "i.e" -> ire,ice,IE
(global property) – intermediate objects between a global object (like 'window') and an object referenced by it. If an object is created using a constructor Person and is held by a global object, the retaining path would look like [global] > (global property) > Person. This contrasts with the norm, where objects directly reference each other. We have intermediate objects for performance reasons. Globals are modified regularly and property access optimisations do a good job for non-global objects aren't applicable for globals.
- "optimisations" -> optimizations,optimization,improvisations,minimizations,improvisation
(global property) – intermediate objects between a global object (like 'window') and an object referenced by it. If an object is created using a constructor Person and is held by a global object, the retaining path would look like [global] > (global property) > Person. This contrasts with the norm, where objects directly reference each other. We have intermediate objects for performance reasons. Globals are modified regularly and property access optimisations do a good job for non-global objects aren't applicable for globals.
- "optimisations" -> optimizations,optimization,improvisations,minimizations,improvisation
(array, string, number, regexp) – a list of object types with properties which reference an Array, String, Number or regular expression
- "regexp" -> reg exp,reg-exp,Regen
(array, string, number, regexp) – a list of object types with properties which reference an Array, String, Number or regular expression
- "regexp" -> reg exp,reg-exp,Regen
(compiled code) – simply, everything related to compiled code. Script is similar to a function but corresponds to a script body. SharedFunctionInfos (SFI) are objects standing between functions and compiled code. Functions are usually have a context, while SFIs do not.
- "SharedFunctionInfos" -> Contradistinctions
- "SFI" -> IFS,SF,SCI,SKI,SF I,SI,SUFI,SUI
- "SFIs" -> Sf Is,Sis,Skis,Sf-is,Misfit
(compiled code) – simply, everything related to compiled code. Script is similar to a function but corresponds to a script body. SharedFunctionInfos (SFI) are objects standing between functions and compiled code. Functions are usually have a context, while SFIs do not.
- "SharedFunctionInfos" -> Contradistinctions
- "SFI" -> IFS,SF,SCI,SKI,SF I,SI,SUFI,SUI
- "SFIs" -> Sf Is,Sis,Skis,Sf-is,Misfit
HTMLDivElement, HTMLAnchorElement, DocumentFragment etc – references to elements or document objects of a particular type referenced by your code.
- "HTMLDivElement" -> Dishevelment
- "HTMLAnchorElement" -> Enfranchisement
- "DocumentFragment" -> Document Fragment,Document-fragment,Documentation
HTMLDivElement, HTMLAnchorElement, DocumentFragment etc – references to elements or document objects of a particular type referenced by your code.
- "HTMLDivElement" -> Dishevelment
- "HTMLAnchorElement" -> Enfranchisement
- "DocumentFragment" -> Document Fragment,Document-fragment,Documentation
Many of the other objects you may see were likely generated during the lifecycle of your code and can include event listeners as well as custom objects, like the controllers below:
- "lifecycle" -> life cycle,life-cycle,Wycliffe,Felicle
Example 7: Eval is evil (almost always)
- "Eval" -> Eva,Eal,Val,Elva,Evan,Oval,E val,Eva l,Veal,Vela,Evals,Vale,Evil
Memory Management Masterclass with Addy Osmani gives you a crash-course in debugging memory issues. The slides for the presentation are available as well as the example code.
- "Osmani" -> Osman,Osman i,Tasmania
Effective memory management at GMail scale
- "GMail" -> G Mail,Gail,Grail,GM ail,GM-ail,Mail,Email,Gm ail,Gm-ail
Effective memory management at GMail scale
- "GMail" -> G Mail,Gail,Grail,GM ail,GM-ail,Mail,Email,Gm ail,Gm-ail
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
The heap is a network of interconnected objects. In the mathematical world, this structure is called a graph. A graph is constructed from nodes connected by means of edges. Both nodes and edges have labels: nodes (objects) are labelled using the name of the constructor function that was used to build them, edges are labelled using the names of properties.
- "labelled" -> labeled,la belled,la-belled,label led,label-led,belled,belabored,blabbed,belated
The sequence of edges that needs to be traversed in order to reach one object from another, is called a path. Usually, we are only interested in simple paths, i.e. paths that do not go through the same node twice.
- "i.e" -> ire,ice,IE
Dominators
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
Dominator objects comprise a tree structure, because each object has exactly one dominator. A dominator of an object may lack direct references to an object it dominates, that is, the dominators tree is not a spanning tree of the graph.
- "dominators" -> dominator,dominator's,nominators,dominator s,dominates,terminators,nominator,indoctrinators
Numbers can be presented either as immediate 31-bit integer values (they are called small integers, or SMIs for short), or as heap objects (called heap numbers). The latter are used for values that can't fit into the SMI form, e.g. doubles, or for cases when a value needs to be boxed, e.g. for setting properties on it.
- "SMIs" -> Sm Is,S Mis,Sis,Mis,Semis,Miss,Isms,Skis,Sims,Sm's,Sm-is,Ism
- "SMI" -> MI,SEMI,MIS,ISM,SCI,SKI,AMI,S MI,SIM,SM,SI,SUI,SM I,SMITH
- "e.g" -> erg,egg,EEG
String content can be either stored in the VM heap, or externally in the renderer's memory. Content received from the Web (e.g. scripts sources) doesn't get copied onto the VM heap, instead, a wrapper object is created and used to access external storage.
- "e.g" -> erg,egg,EEG
When two strings are concatenated, their contents are initially stored separately, and are joined only logically, using an object called cons string. Joining of the cons string contents is performed only when it's needed, e.g. when a substring of a joined string needs to be constructed.
- "e.g" -> erg,egg,EEG
Arrays are used extensively in the V8 VM for storing large amounts of data. Dictionaries (sets of key-value pairs) are backed up by arrays. Thus, arrays are the basic building block for JavaScript objects. A typical JavaScript object posesses two arrays: one for storing named properties, another for storing numeric elements. In the case when the number of properties is very small, they can be stored internally in the JavaScript object itself.
- "posesses" -> possesses,possessed,possess,poetesses,poornesses
Each native objects group is made up from objects that hold mutual references to each other. Consider for example a DOM subtree, where every node has a link to its parent and links to the next child and next sibling, thus forming a connected graph. Note that native objects are not represented in the JavaScript heap — that's why they have zero size. Instead, wrapper objects are created. Each wrapper object holds a reference to the corresponding native object, for redirecting commands to it. In its own turn, an object group holds wrapper objects. However, this doesn't create an uncollectable cycle, as GC is smart enough to release object groups whose wrappers are no longer referenced. But forgetting to release a single wrapper will hold the whole group and associated wrappers.
- "uncollectable" -> noncollectable,uncorrectable,uncollected,uncontrollable
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
Each timestamp is in microseconds, following the High Resolution Time specification. This API is available in Chrome as the method.
- "timestamp" -> timestamps,time stamp,time-stamp,times tamp,times-tamp,timestamped,pastime
Response Time — Sorts by each request's response time.
- "request's" -> requests,bequest's,re quest's,re-quest's,requesters,requester,request,reconquest's
To filter the Network table to only show certain types of resources, click one of the content types along the bottom of the panel: Documents, Stylesheets, Images, Scripts, XHR, Fonts, WebSockets, and Other. In the following screenshot only CSS resources are shown. To view all content types, click the All filter button.
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
Take note of the following behaviour:
- "behaviour" -> behavior
The filter type gives you autocomplete suggestions. Use the arrows keys to form a selection and press Tab to select it.
- "autocomplete" -> auto complete,auto-complete,complete
The filter value has autocomplete which shows you values present in the current network recording.
- "autocomplete" -> auto complete,auto-complete,complete
Quickly preview the results of your query, use the Up / Down arrow keys to cycle through the autocomplete suggestions. The results appear immediately even you do not press enter or tab to complete the selection.
- "autocomplete" -> auto complete,auto-complete,complete
To negate a filter query, prepend the query with a dash (), for example .
- "prepend" -> perpend,prepends,pretend,prep end,prep-end,prepender,reprehend,prepped,depend
Domain The domain portion from the URL of the resource. E.g. . HasResponseHeader Checks the resource has a response header, regardless of the value. E.g. . Is Shows requests running at the current point in time. Current available value: Method The HTTP method used. E.g. . MimeType Also known as - the identifier for the type of resource. E.g. . Scheme The scheme portion in a URL. E.g. . SetCookieName The name of the cookie as set by the server. E.g. (assuming a cookie like ). SetCookieValue The value of the cookie set by the server. E.g. (assuming a cookie like ). StatusCode The status code in the HTTP response. E.g. .
- "E.g" -> Eng,Erg,Egg,EEG
- "HasResponseHeader" -> Hardheadedness
- "MimeType" -> Mime Type,Mime-type,Mistype
- "SetCookieName" ->
- "SetCookieValue" -> Evaluational
- "StatusCode" -> Status Code,Status-code,Statuesque
To use a query shown in the above list, construct it in the format of: . You will almost always want to use the autocomplete suggestions which ensures your query is valid.
- "autocomplete" -> auto complete,auto-complete,complete
You can change the default set of columns displayed by the Network table. To show or hide a column, Right+click or Control+click (Mac only) in the table header and select or deselect column names from the list.
- "Right+click" -> Nightstick
- "Control+click" -> Controlling
- "deselect" -> reselect,deselected,selected,selectness,selects
In the following screenshot, the Network table is viewed with small resource rows and just the Timeline column.
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
The waterfall view in the Network panel graphs the time it took to load each resource, from the start of the HTTP request to the receipt of the final byte of the response. Each resource loading time is represented as a bar, color-coded according to the resource type. The length of the lighter-shaded part of each bar represents the request's latency, while the length of the darker-shaded part represents the time spent receiving the response data.
- "request's" -> requests,bequest's,re quest's,re-quest's,requesters,requester,request,reconquest's
When you hover your mouse over a row (but not over an actual bar) the request's latency and receipt time are displayed above the corresponding bar's light- and dark-shaded areas, respectively, as shown below.
- "request's" -> requests,bequest's,re quest's,re-quest's,requesters,requester,request,reconquest's
If you hover your mouse over the bar itself, the complete timing data for the resource is presented in a tooltip. This is the same information that's presented in the Timing details tab for a given resource.
- "tooltip" -> tool tip,tool-tip,toolkit
Right-clicking or Ctrl + Click (Mac only) within the Network table a context menu appears with several actions. Some of these actions apply to the resource row under the mouse click (like copying HTTP request headers), while others apply to the entire network recording (such as saving a Network recording as a HAR file).
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
Copy as cURL — Copies the network request as a cURL command string to the system clipboard. See Copying requests as cURL commands.
- "cURL" -> curl,URL,c URL,cur,curls,churl,curly,cure,curs,curt,cull,curd,purl,hurl,curb
Replay XHR — If the associated request is an XMLHTTPRequest, re-sends the original XHR.
- "XMLHTTPRequest" -> Frequentest
Copying requests as cURL commands
- "cURL" -> curl,URL,c URL,cur,curls,churl,curly,cure,curs,curt,cull,curd,purl,hurl,curb
cURL is a command line tool for making HTTP transactions. The Network panel's Copy as cURL command recreates an HTTP request (including HTTP headers, SSL certificates, and query string parameters) and copies it as a cURL command string to the clipboard. You can then paste the string into a terminal window (on a system with cURL) to execute the same request.
- "cURL" -> curl,URL,c URL,cur,curls,churl,curly,cure,curs,curt,cull,curd,purl,hurl,curb
- "SSL" -> ISL,SOL,SSH,SAL,SLY
Below is an example cURL command line string taken from a XHR request on the Google News home page.
- "cURL" -> curl,URL,c URL,cur,curls,churl,curly,cure,curs,curt,cull,curd,purl,hurl,curb
You can save the data from a network recording as a HAR (HTTP Archive) file, or copy the records as a HAR data structure to your clipboard. A HAR file contains a JSON data structure that describes the network "waterfall". Several third-party tools can reconstruct the network waterfall from the data in the HAR file.
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
Right+click or Control+click on the Network table.
- "Right+click" -> Nightstick
- "Control+click" -> Controlling
In the context menu that appears, choose one of the following actions: Copy All as HAR — Copies the network recording to the system clipboard in the HAR format. Save as HAR with Content — Saves all network data to a HAR file along with each page resource. Binary resources, including images, are encoded as Base64-encoded text.
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
- "Base64-encoded" -> Base-encoded,Encoded
Copy All as HAR — Copies the network recording to the system clipboard in the HAR format.
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
Save as HAR with Content — Saves all network data to a HAR file along with each page resource. Binary resources, including images, are encoded as Base64-encoded text.
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
- "Base64-encoded" -> Base-encoded,Encoded
For more information, Web Performance Power Tool: HTTP Archive (HAR).
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
The Response tab contains the resource's unformatted content. Below is a screenshot of a JSON data structure that was returned as the response for a request.
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
The message payload. If the message is plain text, it's displayed here. For binary opcodes, this field displays the opcode's name and code. The following opcodes are supported: Continuation Frame Binary Frame Connection Close Frame Ping Frame Pong Frame
- "Pong" -> Song,Tong,Long,Dong,Gong,Hong,Bong,Cong,Yong,Kong,Wong,Ping,Prong,Pone
Continuation Frame Binary Frame Connection Close Frame Ping Frame Pong Frame
- "Pong" -> Song,Tong,Long,Dong,Gong,Hong,Bong,Cong,Yong,Kong,Wong,Ping,Prong,Pone
Stalled/Blocking Time the request spent waiting before it could be sent. This time is inclusive of any time spent in proxy negotiation. Additionally, this time will include when the browser is waiting for an already established connection to become available for re-use, obeying Chrome's maximum six TCP connection per origin rule. Proxy Negotiation Time spent negotiating with a proxy server connection. DNS Lookup Time spent performing the DNS lookup. Every new domain on a page requires a full roundtrip to do the DNS lookup. Initial Connection / Connecting Time it took to establish a connection, including TCP handshakes/retries and negotiating a SSL. SSL Time spent completing a SSL handshake. Request Sent / Sending Time spent issuing the network request. Typically a fraction of a millisecond. Waiting (TTFB) Time spent waiting for the initial response, also known as the Time To First Byte. This time captures the latency of a round trip to the server in addition to the time spent waiting for the server to deliver the response. Content Download / Downloading Time spent receiving the response data.
- "DNS" -> DENS,DINS,DONS,DUNS,ENS,DIS,INS,ANS,DOS,ONS,D'S,DANS,DES
- "roundtrip" -> round trip,round-trip,roundup
- "SSL" -> ISL,SOL,SSH,SAL,SLY
- "TTFB" -> TTY
Use PageSpeed Insights to identify performance best practices that can be applied to your site, and PageSpeed optimization tools to automate the process of applying those best practices.
- "PageSpeed" -> Page Speed,Page-speed,Pages peed,Pages-peed,Passaged
How gzip compression works provides a high level overview gzip compression and why it's a good idea.
- "gzip" -> zip,grip,g zip
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
The Android Developer Tools (ADT) bundle provides you with the Android SDK out of the box. Once you've downloaded the ADT, unzip it to a directory on your system (e.g "Downloads").
- "ADT" -> AFT,AD,AT,ADVT,TAD,ADS,ANT,ART,ADO,ALT,ACT,ADD,AMT,APT,ADV
- "e.g" -> erg,egg,EEG
You will initially see two sub-directories in the extracted folder - eclipse and sdk. To communicate with an Android device, you use the Android Debug Bridge (adb), a command-line tool included in Platform Tools ().
- "sdk" -> SDK
- "adb" -> ADB,dab,adv,ad,ab,db,bad,ads,ado,alb,add,adz,a db,ad b
On your development machine, open Chrome and navigate to localhost:9222.
- "localhost:9222" -> localhost
On your desktop Chrome browser, navigate to chrome://inspect. Confirm that Discover USB devices is checked:
- "chrome:" -> chrome,chromes,chromed,chromosome
Tip: You can also get to chrome://inspect by selecting Chrome menu > More tools > Inspect Devices.
- "chrome:" -> chrome,chromes,chromed,chromosome
On your computer, the chrome://inspect page displays every connected device, along with its open tabs and debug-enabled WebViews.
- "chrome:" -> chrome,chromes,chromed,chromosome
Viewing connected devices from the chrome://inspect page.
- "chrome:" -> chrome,chromes,chromed,chromosome
If you have problems finding your device on the chrome://inspect page, see the Troubleshooting section.
- "chrome:" -> chrome,chromes,chromed,chromosome
From the chrome://inspect page, you can launch DevTools and debug your remote browser tabs.
- "chrome:" -> chrome,chromes,chromed,chromosome
Use F5 (or Cmd+r on Mac) to reload a remote page from the DevTools window.
- "Cmd+r" -> Cmd
WebView debugging must be enabled from within your application. To enable WebView debugging, call the static method setWebContentsDebuggingEnabled on the WebView class.
- "setWebContentsDebuggingEnabled" ->
The chrome://inspect page displays a list of debug-enabled WebViews on your device.
- "chrome:" -> chrome,chromes,chromed,chromosome
Tips: To simulate a pinch gesture, hold Shift while dragging. To scroll, use your trackpad or mouse wheel or fling with your pointer.
- "trackpad" -> track pad,track-pad,tracked
Open chrome://inspect on your development machine.
- "chrome:" -> chrome,chromes,chromed,chromosome
The port status indicators on chrome://inspect are green when port forwarding is successful.
- "chrome:" -> chrome,chromes,chromed,chromosome
For example, suppose you're using a third party JavaScript SDK that only works on whitelisted domains. So you added an entry, such as , to your hosts file. Or maybe you configured a customized domain using virtual hosts on your web server (MAMP).
- "whitelisted" -> white listed,white-listed,whisted,whistled
In a Chrome browser, navigate to chrome://inspect.
- "chrome:" -> chrome,chromes,chromed,chromosome
I can't see my device on the chrome://inspect page.
- "chrome:" -> chrome,chromes,chromed,chromosome
On your desktop browser, navigate to chrome://inspect and verify that Discover USB devices is checked.
- "chrome:" -> chrome,chromes,chromed,chromosome
I can't see my browser tabs on the chrome://inspect page.
- "chrome:" -> chrome,chromes,chromed,chromosome
On your device, open the Chrome browser and navigate to the web page you want to debug. Then, refresh the chrome://inspect page.
- "chrome:" -> chrome,chromes,chromed,chromosome
I can't see my WebViews on the chrome://inspect page.
- "chrome:" -> chrome,chromes,chromed,chromosome
On your device, open the app with the WebView you want to debug. Then, refresh the chrome://inspect page.
- "chrome:" -> chrome,chromes,chromed,chromosome
Note: The direct USB connection between Chrome and the device might interrupt your connection. Before establishing your connection, uncheck Discover USB devices on chrome://inspect. Then, disconnect and reconnect the device.
- "uncheck" -> unchecked,check
- "chrome:" -> chrome,chromes,chromed,chromosome
For information about the remote debugging interaction protocol, refer to the Debugger Protocol documentation and chrome.debugger.
- "chrome.debugger" -> Mercurochrome
When this is enabled you be able to see the regions where Chrome paints. This can help diagnose and ultimately avoid unnecessary paints on a page. You can also use this to study painting behaviors just by hovering over links, popups, or some content which dynamically updates.
- "popups" -> pop ups,pop-ups,pops
Enabling Show paint rectangles and Show layer borders together can also be useful for finding any unnecessary paints which occur and cause a relayout on the Timeline panel.
- "relayout" -> re layout,re-layout,relay out,relay-out,layout
Shows area of the page that slow down scrolling. Touch and mousewheel event listeners can delay scrolling. Some areas need to repaint their content when scrolled. Additional details on causes in this ticket.
- "mousewheel" -> mouse wheel,mouse-wheel,wheelhouse
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
The Resources panel lets you inspect your application's local data sources, including IndexedDB or Web SQL databases, local and session storage, cookies, and Application Cache resources. You can also quickly inspect your application's visual resources, including images, fonts and and style sheets.
- "IndexedDB" -> Indexed Db,Indexed DB,Indexed-DB,Indexed-db,Indexer
The Resources panel reveals your application's local data stores, including IndexedDB and WebSQL databases, local and session storage, cookies and Application Cache resources.
- "IndexedDB" -> Indexed Db,Indexed DB,Indexed-DB,Indexed-db,Indexer
- "WebSQL" -> Web SQL,Web-SQL,Website
IndexedDB
- "IndexedDB" -> Indexed Db,Indexed DB,Indexed-DB,Indexed-db,Indexer
You can inspect IndexedDB databases and object stores, page through an object store's records, and clear an object store of its records.
- "IndexedDB" -> Indexed Db,Indexed DB,Indexed-DB,Indexed-db,Indexer
To view a list of available database, expand the IndexedDB category.
- "IndexedDB" -> Indexed Db,Indexed DB,Indexed-DB,Indexed-db,Indexer
Right+click (or Ctrl+click) a cookie in the table from the target domain.
- "Right+click" -> Nightstick
- "Ctrl+click" -> Clicker
From the context menu, seect Clear All from domain, where domain is the target domain.
- "seect" -> sect,select,see ct,see-ct
You can examine resources that Chrome has cached according to the Application Cache manifest file specified by the current document. You can view the current status of the Application Cache (idle or downloading, for example), and the browser's connection status (online or offline).
- "online" -> inline,on line,on-line,line
- "offline" -> off line,off-line,lifeline
Type — The type of cached resource, which can have one of the following values: Master — The resource was added to the cache because it's manifest attribute indicated that this was its cache. Explicit — The resource was explicitly listed in the application's cache manifest file. Network — The resources was listed in the application's cache manifest file as a network entry. Fallback — The resource was specified as a fallback if a resource is inaccessible.
- "Fallback" -> Callback,Fullback,Fall back,Fall-back,Blackball
- "fallback" -> callback,fullback,fall back,fall-back,blackball
Fallback — The resource was specified as a fallback if a resource is inaccessible.
- "Fallback" -> Callback,Fullback,Fall back,Fall-back,Blackball
- "fallback" -> callback,fullback,fall back,fall-back,blackball
UPDATEREADY
- "UPDATEREADY" -> UPDATE READY,UPDATE-READY,UPDATER
You can view and edit local and session storage key/value pairs you've created using the Web Storage APIs. You can edit, delete, and create both local and session storage data.
- "APIs" -> A Pis,API,API s,Pis,Apsis,Apish,Apes,Apps,Apia,Alis,Avis,Pisa
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
Open the Google Closure Hovercard demo page.
- "Hovercard" -> Hover card,Hover-card,Overheard,Hardcover
Click the hovercard.html resource in the sidebar. This lets you see the resource loaded for the page.
- "hovercard.html" -> hovercraft
You can directly access individual resources from within the Developer Tools. Drag-and-drop demo.css from the sidebar into a Chrome window.
- "demo.css" -> demotics
Using Google Chrome, open the Webkit demo of HTML storage.
- "Webkit" -> WebKit,Web kit,Web-kit
Click the triangle to the left of the NoteTest database to show the tables in the database. This shows there is a single table, WebKitStickyNotes, in the NoteTest database.
- "NoteTest" -> Note Test,Note-test,Notedness
- "WebKitStickyNotes" ->
To see the table's contents, click the table in the sidebar. You can also run a SQL query at the chevron prompt in the main window. Type select * from WebKitStickyNotes. The input in this console has auto-completion and tab-completion for common SQL words and phrases along with table names for the database. The note column is empty if you have not entered any text in the sticky note on the demo page.
- "WebKitStickyNotes" ->
Return to the Webkit demo page and type some text in the sticky note - you can also add another note if you like. Return to the Developer Tools window and double click the WebKitStickyNotes table in the sidebar.
- "Webkit" -> WebKit,Web kit,Web-kit
- "WebKitStickyNotes" ->
Select the webkit.org cookie in the sidebar. Cookies view allows you browsing cookies associated with the selected domain, as well as deleting them.
- "webkit.org" -> WebKit
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
AngularJS Batarang
- "AngularJS" -> Angular
- "Batarang" -> Bataan
AngularJS Batarang is a swiss-army knife for the AngularJS framework, providing panels for inspecting models, analysing dependencies, and instrumenting performance, among other things.
- "AngularJS" -> Angular
- "Batarang" -> Bataan
- "analysing" -> analyzing,analysis,signaling
The README on GitHub provides a good overview.
- "README" -> REAMED,REMADE,READ ME,READ-ME,READE,REREAD,READ
The Ember Inspector helps you debug Ember.js applications, with easy inspection of controllers, insights into models and their attributes, layers, and more.
- "Ember.js" -> Embers
For more information, see the Ember Inspector screencasts from Yehuda Katz.
- "screencasts" -> screencast,screen casts,screen-casts,screencast s,screenwriters
- "Yehuda" -> Yehudi
For more information, see the Ember Inspector screencasts from Yehuda Katz.
- "screencasts" -> screencast,screen casts,screen-casts,screencast s,screenwriters
- "Yehuda" -> Yehudi
KnockoutJS Context Debugger
- "KnockoutJS" -> Knockouts,Knockout's,Knockout
This extension helps you debug your KnockoutJS application by showing the Knockout context data for the selected DOM node in a sidebar of the elements panel.
- "KnockoutJS" -> Knockouts,Knockout's,Knockout
Rails Panel adds a new tab that shows information about requests to the Rails backend. The panel provides insights into view rendering, DB, total request times and more.
- "backend" -> backed,back end,back-end,backhand
See the README file for information on setting up and using Rails Panel.
- "README" -> REAMED,REMADE,READ ME,READ-ME,READE,REREAD,READ
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
Shadow DOM Polyfill
- "Polyfill" -> Polyvinyl
Enable JS source maps
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
Log XMLHttpRequests
- "XMLHttpRequests" -> Equestriennes
To use this feature it open the Workspaces tab via the Settings pane. Here you will see an Add Folder link allowing you to add local directories for editing (eg: project root directories).
- "eg" -> eh,e,g,neg,erg,reg,ego,leg,deg,egg,peg,beg,veg,keg,Reg
In addition to adding a file system for your Workspace, you are also able to add file Mappings individual file urls to the path of the file on your local machine.
- "urls" -> curls,purls,hurls,burls,furls,urns
F12, Ctrl + Shift + I
- "F12" -> F2,F11
Inspect the Inspector (undock first one and press)
- "undock" -> unlock,undo ck,undo-ck,undo
To open up the General Settings dialog type ? or F1 when the Developer Tools window is open. Press Esc to close the settings dialog.
- "F1" -> F,1,Fe,Fr,Fm,FL,FD,FM,FY,Fa,Ft,Fl,Ff
?, F1
- "F1" -> F,1,Fe,Fr,Fm,FL,FD,FM,FY,Fa,Ft,Fl,Ff
Open Device Mode (v38+)
- "v38" -> V8
Force element psuedo states: (, , , )
- "psuedo" -> pseudo
PgUp, PgDown
- "PgUp" -> Pg Up,Pup,Pg-up,Guppy
- "PgDown" -> Pg Down,Pg-down,PageDown
PgUp, PgDown
- "PgUp" -> Pg Up,Pup,Pg-up,Guppy
- "PgDown" -> Pg Down,Pg-down,PageDown
Shift + PgUp, Shift + PgDown
- "PgUp" -> Pg Up,Pup,Pg-up,Guppy
- "PgDown" -> Pg Down,Pg-down,PageDown
Shift + PgUp, Shift + PgDown
- "PgUp" -> Pg Up,Pup,Pg-up,Guppy
- "PgDown" -> Pg Down,Pg-down,PageDown
XMLHTTPRequest logging: Turn on to view the XHR log
- "XMLHTTPRequest" -> Frequentest
Filter: Hide and unhide messages from script files
- "unhide" -> unhidden
Alt + Scroll,Ctrl + Cick and drag with two fingers
- "Scroll,Ctrl" -> Scrollbar
- "Cick" -> Crick,Chick,Sick,Nick,Rick,Tick,Lick,Pick,Hick,Kick,Wick,Dick,Mick
Opt + Scroll, Cmd + Cick and drag with two fingers
- "Cick" -> Crick,Chick,Sick,Nick,Rick,Tick,Lick,Pick,Hick,Kick,Wick,Dick,Mick
F6, Ctrl + L, Alt + D
- "F6" -> F,6,Fe,Fr,Fm,FL,FD,FM,FY,Fa,Ft,Fl,Ff
{{+bindTo:partials.standard_devtools_article}}
- "bindTo:partials.standard_devtools_article" ->
The Timeline has three primary sections: an overview section at the top, a records view, and a toolbar.
- "toolbar" -> tool bar,tool-bar,barstool
When you hover over a Timeline record, a pop-up appears with details about the associated event. For example, the screenshot below shows details for a Finish Loading record associated with an image resource. The Timeline event reference explains the details available for each record type.
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
Frames mode provides insight into the rendering performance of your application. A "frame" represents the work the browser must do to render a single frame of content to the display—run JavaScript, handle events, update the DOM and change styles, layout and paint the page. The goal is for your app to run at 60 frames per second (FPS), which corresponds to the 60Hz refresh rate of most (but not all) video displays. Consequently, your application has approximately 16.6 ms (1000 ms / 60) to prepare for each frame.
- "display—run" -> displayed
- "60Hz" ->
The frames in the recording below show both un-instrumented activity and idle time.
- "un-instrumented" -> UN-instrumented,nu-instrumented,in-instrumented,um-instrumented,u-instrumented,n-instrumented,sun-instrumented,nun-instrumented,urn-instrumented,run-instrumented,tun-instrumented,dun-instrumented,gun-instrumented,mun-instrumented,pun-instrumented
Want more details on the empty white space within the bars? Read Chrome Engineer Nat Duca's explanation, which describes how you can evaluate if you were bottlnecked by the GPU.
- "Duca's" -> Luca's,Ducat's,Duce's,Ducats,Duct's,Duck's
- "bottlnecked" -> bottlenecked,bottleneck
Press the keyboard shortcut Ctrl+E, or Cmd+E on Mac.
- "Ctrl+E" -> Ctrl
- "Cmd+E" -> Cmd
Open the Timeline and press Cmd+E (Mac) or Ctrl+E (Windows/Linux) to start recording.
- "Cmd+E" -> Cmd
- "Ctrl+E" -> Ctrl
Quickly press Cmd+R or Ctrl+R to reload the browser page.
- "Cmd+R" -> Cmd
- "Ctrl+R" -> Ctrl
DOMContentLoaded and Load event markers
- "DOMContentLoaded" -> Malcontentedness
The Timeline annotates each recording with a blue and a red line that indicate, respectively, when the DOMContentLoaded and load events were dispatched by the browser. The DOMContentLoaded event is fired when all of the page's DOM content has been loaded and parsed. The load event is fired once all of the document's resources (images and CSS files, and so forth) have been fully loaded.
- "DOMContentLoaded" -> Malcontentedness
The following screenshot shows an example of nested synchronous events. In this case, Chrome was parsing some HTML (the Parse HTML event) when it found several external resources that needed to be loaded. Those requests were made before Chrome has finished the parsing, so the Send Request events are displayed as children of the Parse HTML event.
- "screenshot" -> screen shot,screen-shot,screens hot,screens-hot,screencast
Used JS Heap size at this point in the recording, and what this operation's effect was to the heap size.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
While looking at all the events, you may want to hunt for one, but maintain context of what's around it. In this case, you can find without filtering. Press Ctrl+F (Window/Linux) or Cmd+F (Mac), while the Timeline has focus to show those that contain the search term.
- "Ctrl+F" -> Ctrl
- "Cmd+F" -> Cmd
Trackpad users: Swiping left or right with two fingers moves the current Timeline selection. Swiping up or down with two fingers expands or contracts the current Timeline selection, respectively.
- "Trackpad" -> Track pad,Track-pad,Tracked
Trackpad users:
- "Trackpad" -> Track pad,Track-pad,Tracked
Right+click or Ctrl+click (Mac only) inside the Timeline and select Save Timeline Data…, or press the Ctrl+S keyboard shorcut.
- "Right+click" -> Nightstick
- "Ctrl+click" -> Clicker
- "Ctrl+S" -> Ctrl
- "shorcut" -> shortcut,shortcrust
Right-click or Ctrl+click inside the Timeline and select Load Timeline Data..., or press the Ctrl+O keyboard shortcut.
- "Ctrl+click" -> Clicker
- "Ctrl+O" -> Ctrl
Applications can add their own events to Timeline recordings. You can use the console.timeStamp() method to add an atomic event to a recording, or the console.time() and console.timeEnd() methods to mark a range of time that code was executing. For example, in the following recording the was used to display an "Adding result" event. See Marking the Timeline in Using the Console for more information.
- "console.timeStamp" -> Constantinople
- "console.time" -> consolation
- "console.timeEnd" -> consolidation
You will see ight gray bars appearing above the Timeline records, indicating when the CPU was busy. Hovering over a CPU bar highlights the Timeline region during which the CPU was active (as shown below). The length of a CPU bar is typically the sum of all the (highlighted) events below it in the Timeline. If these don't match, it may be due to one of the following:
- "ight" -> it,eight,sight,night,right,tight,light,might,hight,bight,fight,wight,Right
Un-instrumented activity.
- "Un-instrumented" -> UN-instrumented,U-instrumented,N-instrumented,Una-instrumented,En-instrumented,In-instrumented,An-instrumented,Ur-instrumented,Tn-instrumented,On-instrumented,Kn-instrumented,US-instrumented,Sn-instrumented,UI-instrumented,Instrumented
Duration (at time-stamp) : How long it took the event with all of its children to complete; timestamp is the time at which the event occurred, relative to when the recording started.
- "timestamp" -> timestamps,time stamp,time-stamp,times tamp,times-tamp,timestamped,pastime
DOMContentLoaded
- "DOMContentLoaded" -> Malcontentedness
The DOMContentLoaded was fired by the browser. This event is fired when all of the page's DOM content has been loaded and parsed.
- "DOMContentLoaded" -> Malcontentedness
A JavaScript event ("mousedown", or "key", for example).
- "mousedown" -> mouse down,mouse-down,moused own,moused-own,dormouse
A top-level JavaScirpt function call was made (only appears when browser enters JavaScript engine).
- "JavaScirpt" -> JavaScript,Javanese
A timer was created with setInterval() or setTimeout().
- "setInterval" -> set Interval,set-interval,subinterval,interval,interstitial
- "setTimeout" -> set Timeout,set-timeout,timeout
A requestAnimationFrame() call scheduled a new frame
- "requestAnimationFrame" -> metropolitanization
A script called console.time())
- "console.time" -> consolation
A script called console.timeEnd()
- "console.timeEnd" -> consolidation
A timer fired that was scheduled with setInterval() or setTimeout().
- "setInterval" -> set Interval,set-interval,subinterval,interval,interstitial
- "setTimeout" -> set Timeout,set-timeout,timeout
The ready state of an XMLHTTPRequest changed.
- "XMLHTTPRequest" -> Frequentest
An XMLHTTPRequest finished loading.
- "XMLHTTPRequest" -> Frequentest
Nodes that need layout : For Layout records, the number of nodes that were marked as needing layout before the relayout started. These are normally those nodes that were invalidated by developer code, plus a path upward to relayout root.
- "relayout" -> re layout,re-layout,relay out,relay-out,layout
Layout tree size : For Layout records, the total number of nodes under the relayout root (the node that Chrome starts the relayout).
- "relayout" -> re layout,re-layout,relay out,relay-out,layout
{{/partials.standard_devtools_article}}
- "partials.standard_devtools_article" ->
When in the console's multi-line editing mode, you can treat blocks of text as if you were using a standard text editor. Shift + Enter allows you enter multi-line mode in the console.
- "console's" -> consoles,consoler's,consolers,console,consolable,Constable's,consonance's
For a multi-line console which supports persistence, read about Snippets - a feature which can save and execute custom snippets of JavaScripts which are always available inside the DevTools.
- "JavaScripts" -> Java Scripts,JavaScript,JavaScript s,Java-scripts,Transcripts
Support for the console.table command
- "console.table" -> consolable,noncollectable,constable,Constable
There is also an optional 'columns' parameter which takes the form of an array of strings. Below, we define a family object containing many "Person"s and can then choose which columns we would like displayed using it:
- "Person"s" -> Persons,Person's,Person,Peterson
More: Support for the console.table command has landed | G+.
- "console.table" -> consolable,noncollectable,constable,Constable
Objects logged using console.log() can be previewed directly inside the DevTools without further work on your part.
- "console.log" -> consolable
As we've documented you can add style to your console logs via , just like you can in Firebug. e.g
- "e.g" -> erg,egg,EEG
With the console open you can easily clear your console history using the Ctrl + L or Cmd + L shortcut. A clear() command is also available at the shell prompt as is the console.clear() method via the Console API from JavaScript.
- "console.clear" -> consolable
Select an element and type in the console, it will be used by the script. If you have jQuery on the page, you can then use to reselect the element in the page.
- "jQuery" -> j Query,query,equerry
However, the function also accepts an optional second argument for the path context - i.e . This lets us select a specific context (e.g an iframe) and run an XPath query against it.
- "i.e" -> ire,ice,IE
- "e.g" -> erg,egg,EEG
Using console.dir
- "console.dir" -> consoler
The console.dir(object) command lists out all of the properties of a provided object as an expandable JavaScript object. Below is an example displaying an expandable object representing the properties found under document.body.
- "console.dir(object" -> objectionableness
- "document.body" -> documentary
Running the JS console in a specific iframe
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
console.time() begins a new timer using a specific label. When console.timeEnd() is called using the same label the time is stopped and the elapsed time between both is logged to the console. This is particularly useful for benchmarking loops or code which doesn't call a function.
- "console.time" -> consolation
- "console.timeEnd" -> consolidation
With the DevTools open, calling console.profile() begins a JavaScript CPU profile. A label for the profile can be optionally passed, as seen below in console.profile("Processing"). To complete a profile run, call console.profileEnd().
- "console.profile" -> inconsolableness
- "console.profile("Processing" -> teleprocessing
- "console.profileEnd" -> inconsolableness
This record button will turn from gray to red and the Timeline will begin to capture the timelines for your page. Complete a few actions inside your app and after a few seconds, click the button again to stop recording.
- "timelines" -> timeline,timeliness,time lines,time-lines,timeline s,timelessness,timberlines,timeless,smelliness
For example, say your first frame takes 15ms to execute and the next takes 30ms. A common situation is that frames are synchronized to refresh rate and in this case, the second frame took slightly longer than 15ms to render. Here, frame 3 missed the "true" hardware frame and was rendered upon the next frame, hence, the length of the second frame was effectively doubled.
- "15ms" ->
- "30ms" ->
When we target 60fps, we have a max of 16.66ms to do everything. That's not a lot of time and so squeezing as much performance out of your animations as possible is important.
- "60fps" -> fps
- "16.66ms" ->
You can view and share Timelines with other developers thanks to a useful import/export feature. Use Ctrl + E or Cmd + E to start & stop recording then right-click inside the Timeline and use Save Timeline data. The same menu supports Load Timeline data for loading an exported file back in for viewing.
- "Timelines" -> Timeline,Timeliness,Time lines,Time-lines,Timeline s,Timelessness,Timberlines,Timeless,Smelliness
Your code can add annotations to Timeline recordings using the console.timeStamp() method. This helps correlate code in your web app to other activity going on or browser events.
- "console.timeStamp" -> Constantinople
Your application can add annotations to Timeline recordings by calling the console.timeStamp() method. This lets you easily correlate code in your application to other activity in your application or browser events. In the following recording, the Timeline is annotated with the string "Adding result". See Marking the Timeline in Using the Console for example code.
- "console.timeStamp" -> Constantinople
A useful tool for visualizing frame rate and jank is the real-time FPS counter. This can be enabled in the DevTools by going to the Settings menu and checking “Show FPS meter”.
- "jank" -> hank,sank,rank,tank,lank,jack,dank,junk,bank,yank,Hank,Bank,Yank,Janka
More: Profiling Long Paint Times with DevTools' Continuous Painting Mode | HTML5Rocks
- "HTML5Rocks" -> Shamrocks
Keep in mind that just tracking the FPS counter may lead to you not noticing frames with intermittent jank. Be careful when using the content. It is also worth noting that FPS on desktop does not equal FPS on devices and special care should be taken to profile the performance there too.
- "jank" -> hank,sank,rank,tank,lank,jack,dank,junk,bank,yank,Hank,Bank,Yank,Janka
Take a new heap snaphot
- "snaphot" -> snapshot,snap hot,snap-hot
Take a new heap snaphot
- "snaphot" -> snapshot,snap hot,snap-hot
More: BloatBusters - Eliminating Memory Leaks In GMail
- "BloatBusters" -> Bloat Busters,Bloat-busters,Blockbusters,Blockbuster,Bloaters,Blusterers
- "GMail" -> G Mail,Gail,Grail,GM ail,GM-ail,Mail,Email,Gm ail,Gm-ail
Yellow nodes indicate a detached DOM node reference from an object's property or an array element - there should be a chain of properties leading from the DOM window to the element (e.g window.foo.bar[2].baz).
- "e.g" -> erg,egg,EEG
- "window.foo.bar[2].baz" ->
Dominators view helps confirm that no unexpected references to objects are still hanging around (i.e that they are well contained) and that deletion/garbage collection is actually working.
- "Dominators" -> Nominators,Dominator,Dominator's,Dominator s,Dominates,Terminators,Nominator,Indoctrinators
- "i.e" -> ire,ice,IE
Containment view provides a better view of object structure, helping us analyze objects referenced in the global namespace (i.e. window) to find out what is keeping them around. It lets you analyze closures and dive into your objects at a low level.
- "namespace" -> name space,name-space,names pace,names-pace,spacemen
- "i.e" -> ire,ice,IE
More: Taming The Unicorn: Easing JavaScript Memory Profiling In Chrome | AddyOsmani.com
- "AddyOsmani.com" ->
Right-click an element and enable ‘Break on Subtree Modifications': whenever a script traverses that element childs and modifies them, the debugger rolls in automatically to let you inspect what's happening:
- "childs" -> child,childes,child's,chills,child s
Conditional breakpoint actions with console.log
- "console.log" -> consolable
You then right-click the line and "Edit Breakpoint" where you are presented with an expression field. Define your condition here (e.g if the expression evaluates as truthy execution will break here).
- "e.g" -> erg,egg,EEG
- "truthy" -> truth,truths,truth y,Truth,Ruthy
A normal expression may be of the form , however console.log statements are also completely valid input in the field.
- "console.log" -> consolable
This approach works well and we can easily see the console.log statements being fired in the console on breakpoints:
- "console.log" -> consolable
As console.log doesn't have a real return value, undefined means the conditional breakpoint won't result in execution being paused and your code will continue to run. It's much like a hard-coded console.log statement without the need to modify your code directly.
- "console.log" -> consolable
More: Breakpoint Actions In JavaScript | randomthink.net
- "randomthink.net" -> randomization
Easily debug XHRs
- "XHRs" -> X Hrs,XHR,XHR s,Hrs
You can write and execute JavaScript in this console as expected, but what's even better is if you're paused at a breakpoint, JS executed will be within the currently paused context.
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
Watch Expressions (in the sidebar to the right) will keep an eye on expressions so you don't have to keep switching back to the console (e.g X === Y). Call Stack (under it) displays function calls the system has gone through to achieve where it is at present.
- "e.g" -> erg,egg,EEG
DOM Breakpoints display any "Break on" modifications taken by right-clicking on a node in the Elements panel. This is helpful for debugging whether listeners have been correctly attached to nodes and what occurs when they are invokved.
- "invokved" -> involved,invoked,invoke
The XHR Breakpoints panel is also useful as it can setup a breakpoint for XMLHttpRequests. Specify a breakpoint by typing in a substring of the URL you wish to inspect.
- "XMLHttpRequests" -> Equestriennes
Cmd + Opt + F (Max OSX)
- "OSX" -> OX,OS,OS X
Cmd + Opt + F (Max OSX)
- "OSX" -> OX,OS,OS X
When analyzing code generated for production, it is often minified (and in the case of a language that tranpiles to JavaScript, compiled) making it difficult to locate where the lines map to your originally authored code.
- "tranpiles" -> transpires
Compile your CoffeeScript to JavaScript running: coffee -c myexample.coffee
- "myexample.coffee" -> counterexample
Compile your CoffeeScript to JavaScript running: coffee -c myexample.coffee
- "myexample.coffee" -> counterexample
Install CoffeeScript Redux
- "Redux" -> Reduced
Install CoffeeScript Redux
- "Redux" -> Reduced
Create a Source map file example.js.map which will hold the mapping information:
- "example.js.map" -> exampled
Create a Source map file example.js.map which will hold the mapping information:
- "example.js.map" -> exampled
Make sure the generated JavaScript file, example.js, has the source mapping url at the end as follows:
- "example.js" -> examples
- "url" -> URL,curl,purl,hurl,burl,furl,Burl,urn,Erl
Make sure the generated JavaScript file, example.js, has the source mapping url at the end as follows:
- "example.js" -> examples
- "url" -> URL,curl,purl,hurl,burl,furl,Burl,urn,Erl
You could then take this source map and during your optimization/minification phase use a tool like UglifyJS2 to reference this first source map (CS to JS) and have it map the minified JavaScript back to the CoffeeScript and not the compiled JavaScript output. This allows you to debug production code straight back to your source CoffeeScript code.
- "minification" -> magnification,indemnification,mummification,ramification
- "UglifyJS2" -> Ugliness
- "JS" -> DIS,KS,J,S,J'S,ES,IS,AS,RS,TS,LS,CS,US,JG,GS
More: NetTuts - Source Maps 101
- "NetTuts" -> Net Tuts,Net-tuts,Netts
A place to learn how to optimize your development workflow to save time achieving common tasks, such as locating files or functions, persisting edits to scripts or stylesheets or simply rearranging the layout to better suit your needs. Learning about new features such as Snippets which can be used to save and execute custom snippets of JavaScripts which are always available inside the DevTools.
- "JavaScripts" -> Java Scripts,JavaScript,JavaScript s,Java-scripts,Transcripts
Learning about new features such as Snippets which can be used to save and execute custom snippets of JavaScripts which are always available inside the DevTools.
- "JavaScripts" -> Java Scripts,JavaScript,JavaScript s,Java-scripts,Transcripts
Autocompletion of CSS properties
- "Autocompletion" -> Auto completion,Auto-completion,Complementation,Completion
The DevTools support autocompletion of known CSS properties and values (including those requiring a prefix), which is a useful way to determine which properties can be set for the current element.
- "autocompletion" -> auto completion,auto-completion,complementation,completion
Colors can be defined within the Styles pane using named (e.g ‘red'), HSL, HEX or RGB values. You can shift/click to iterate through these if required.
- "e.g" -> erg,egg,EEG
The list of suggestions is context-specific and in certain cases (e.g font) numeric, named and prefixed values supported will also be displayed.
- "e.g" -> erg,egg,EEG
Clicking anywhere within the opening and closing brackets for a CSS rule (including within "element.style"), allows you to add a new CSS property which will similarly be instantly applied.
- "element.style" -> elementariness
Note: To use Sass debugging in Chrome you need to have version 3.3.0 (pre-release) of the Sass compiler, which is the only version that currently supports source map generation.
- "pre-release" -> per-release,ore-release,pee-release,pr-release,re-release,pres-release,pare-release,pore-release,pure-release,prep-release,prey-release,pyre-release,pref-release,rep-release,ere-release
Working with a page containing pre-processed CSS can be a challenge as modifications made to your CSS styles within the DevTools typically won't apply them back to your Sass source files. This means if making changes to your styles on the fly, you would need to go back and manually apply them to your source files using an external editor if you wanted to maintain them.
- "pre-processed" -> per-processed,ore-processed,pee-processed,pr-processed,re-processed,pres-processed,pare-processed,pore-processed,pure-processed,prep-processed,prey-processed,pyre-processed,pref-processed,rep-processed,ere-processed
Check to ensure you have Developer Tools experiments enabled in about:flags.
- "about:flags" -> layabouts
Check to ensure you have Developer Tools experiments enabled in about:flags.
- "about:flags" -> layabouts
If the setup worked as expected, you can go to the Elements panel. The first thing you'll notice is that the filename for your styles will now display the corresponding .scss source file as well as the line number reflecting the line number in your source.
- "scss" -> SCSS,sass
If the setup worked as expected, you can go to the Elements panel. The first thing you'll notice is that the filename for your styles will now display the corresponding .scss source file as well as the line number reflecting the line number in your source.
- "scss" -> SCSS,sass
A place to learn how to view the real underlying structure of the page. For example, you may be curious if an image has an HTML id attribute, and what that attribute's value is. Discovery how to see everything in one DOM tree, including inspection and on-the-fly editing of DOM elements. You will often visit the Elements tabs when you need to identify the HTML snippet for some aspect of the page.
- "attribute's" -> attributes,attributer's,at tribute's,at-tribute's,attributer,attribute,attribution's,attributives
A place to learn how to view the real underlying structure of the page. For example, you may be curious if an image has an HTML id attribute, and what that attribute's value is.
- "attribute's" -> attributes,attributer's,at tribute's,at-tribute's,attributer,attribute,attribution's,attributives
Replay XHRs
- "XHRs" -> X Hrs,XHR,XHR s,Hrs
As you probably know, the Network panel shows a list of all the requests your page has made including XHRs. You can replay any XHR (POST or GET) by right-clicking on the request to display the context-menu then selecting “Replay XHR”.
- "XHRs" -> X Hrs,XHR,XHR s,Hrs
Export request meta-data: right click, "Copy Entry as HAR"
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
Export request meta-data: right click, "Copy Entry as HAR"
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
Export entire waterfall: right click, "Copy All as HAR"
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
Export entire waterfall: right click, "Copy All as HAR"
- "HAR" -> HEIR,RAH,GAR,JAR,HAT,HA,HR,HARE,HEAR,HAIR,HART,HOAR,CHAR,HARD,HARM
More: Wait, DevTools Could Do That? | Igvita.com
- "Igvita.com" -> Commutativity
What is the time to first byte (TTFB) for each request?
- "TTFB" -> TTY
What is the time to first byte (TTFB) for each request?
- "TTFB" -> TTY
For example, navigate to the Echo demo, select the "WebSockets" filter from the bottom of the Network panel then click the "Connect" button. Any messages you send by clicking the 'Send' button can be inspected using the 'Frames' subpanel.
- "subpanel" -> sub panel,sub-panel,subpage
More: Wait, DevTools Could Do That? | Igvita.com
- "Igvita.com" -> Commutativity
More: WebSocket inspection with DevTools | Kaazing
- "Kaazing" -> Amazing
Find and filter XHRs from the Network panel
- "XHRs" -> X Hrs,XHR,XHR s,Hrs
When inspecting network requests in the Network panel you often need to narrow down to a specific request based on a specific keyboard. This can be easily done using theCtrl + F or Cmd + F keyboard shortcut.
- "theCtrl" -> the Ctrl,the-Ctrl,hectare
The "about:net-internals" page is a special URL that dumps a view of the network stack's internal state. This data can be helpful when debugging performance or connectivity problems. It includes information on request performance, proxy settings and DNS cache.
- "about:net-internals" -> turnabout-internals,internationalists
- "DNS" -> DENS,DINS,DONS,DUNS,ENS,DIS,INS,ANS,DOS,ONS,D'S,DANS,DES
Emulating UA Strings & Device Viewports
- "Viewports" -> Viewport,View ports,View-ports,Viewport s,Viewpoints
The DevTools support both overriding position values for navigator.geolocation and simulating geolocation not being available via the overrides menu.
- "navigator.geolocation" -> circumnavigational
Dock-to-right mode is also useful for previewing how your pages look when viewed on screens with smaller viewports. To use this:
- "viewports" -> viewport,view ports,view-ports,viewport s,viewpoints
Should you require it, you can also run Chrome with the “-disable-javascript” flag to achieve the same effect.
- "disable-javascript" -> disable-JavaScript,JavaScript
However, if you have a very wide screen and would like to disable this, simply uncheck the “Split panels vertically when docked to right” option in the Settings panel.
- "uncheck" -> unchecked,check
Preview all inspectable pages
- "inspectable" -> inspect able,inspect-able,respectable,injectable,indispensable,installable
If you find yourself regularly using remote debugging, you might enjoy “about:inspect” which displays all inspectable tabs/extensions in Chrome. Click 'inspect' to switch to a page & launch the DevTools for it in one go.
- "about:inspect" -> inspectorate
- "inspectable" -> inspect able,inspect-able,respectable,injectable,indispensable,installable
Get insights into which sites have appcache'd
- "appcache'd" -> AppCache
You can see information about appcached sites by visiting “about:appcache-internals”. This allows you to see which sites have appcached, when they were last modified, and how much space they're using. You can also remove appcaches here.
- "appcached" -> app cached,app-cached,AppCache,approached,cached,chapped
- "about:appcache-internals" -> AppCache-internals,internationalizations
- "appcaches" -> app caches,app-caches,AppCache,approaches,Apaches,apaches
Note: This is currently only available on Windows and ChromeOS
- "ChromeOS" -> Ch Romeos,Chrome OS,Chrome-OS,Chromes,Chrome's,Ch-romeos,Chromosome,Chrome,Romeos
Click the Chrome menu on the browser toolbar.
- "toolbar" -> tool bar,tool-bar,barstool
Click the Chrome menu on the browser toolbar.
- "toolbar" -> tool bar,tool-bar,barstool
PonyDebugger is a client library and gateway server combination that uses Chrome Developer Tools on your browser to debug your application's network traffic and managed object contexts.
- "PonyDebugger" -> Jitterbugger
JSRunTime: DevTools Extension For Grepping JavaScript Objects
- "JSRunTime" -> Runtime
- "Grepping" -> Prepping,Gripping,Pepping,Remapping,Recapping,Pipping
Andrei Kashcha wrote a very useful extension for DevTools that can grep a reachable graph of JavaScript objects in memory and find matches by their value or name.
- "Kashcha" -> Katuscha
- "grep" -> rep,grip,prep,grew,g rep,Greg
More: JSRuntime - A DevTools Extension For Grepping Objects | G+.
- "JSRuntime" -> Runtime
- "Grepping" -> Prepping,Gripping,Pepping,Remapping,Recapping,Pipping
The DevTools Cheatsheet
- "Cheatsheet" -> Cheat sheet,Cheat-sheet,Cheetahs
TextMate-like features in Chrome DevTools
- "TextMate-like" -> Text Mate-like,Text-mate-like,Teammate-like,Statesmanlike
Become a Javascript Console Power-User
- "Javascript" -> JavaScript,Java script,Java-script
Level up on the Javascript console in the Chrome DevTools. Look at XHR requests, learn console helper functions to monitor events or explore objects better. Paul Irish from the Chrome team gives you a rundown.
- "Javascript" -> JavaScript,Java script,Java-script
Follow Pavel Feldman and Sam Dutton in a review of the newest Developer Tools features: mobile debugging, editing, new Timeline "Frame Mode" and much more.
- "Dutton" -> Mutton,Button,Sutton,Hutton
You can now edit any of the source files in that folder or its subfolders in Chrome. “Source files” in this case is not limited to HTML and CSS and Javascript, but can be anything, including markdown and JSON.
- "subfolders" -> subfolder,sub folders,sub-folders,subfolder s,suborders
- "Javascript" -> JavaScript,Java script,Java-script
In the Sources panel, right-click or Control+click on a file on the website.
- "Control+click" -> Controlling
You can also duplicate a file by selecting Duplicate File. The new file shows up in the Sources panel and you can enter a new name for it (it doesn't just create “Copy of myfile.txt”).
- "myfile.txt" ->