D8 (Debug8) is V8's own minimalist debug shell.
D8 is useful for running some JavaScript locally or debugging changes you have made to V8. A normal V8 build using [[GN|Building with GN]] for x64 will output a D8 binary in out.gn/x64.optdebug/d8
. You can call D8 with the --help
argument for more information about usage and flags.
Printing output is probably going to be very important if you plan to use D8 to run JavaScript files, rather than interactively. This is very simple with the print()
function:
--- test.js --- print("Hello, World!");
out.gn/x64.optdebug/d8 test.js > Hello, World!
Using read()
you can store the contents of a file into a variable.
d8> var license = read("LICENSE"); d8> license "This license applies to all parts of V8 that are not externally maintained libraries. The externally maintained libraries used by V8 are: ... (etc.) "
Use readline()
to interactively enter text:
d8> var greeting = readline(); Welcome d8> greeting "Welcome"
load()
runs another JavaScript file in the current context, meaning that you can then access anything declared in that file.
--- util.js --- function greet(name) { return "Hello, " + name; }
d8> load('util.js'); d8> greet('World!'); "Hello, World!"
It's possible to make command line arguments available to your JavaScript code at runtime with D8. Just pass them after --
on the command line and you will be able to access them at the top level of your script using the arguments
object.
out.gn/x64.optdebug/d8 -- hi
You can now access an array of the arguments using the arguments
object:
d8> arguments[0] "hi" d8>
Kevin Ennis' D8 Guide has really good information about exploring V8 using D8.