图解 Google V8
李兵
前盛大创新院高级研究员
26763 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
图解 Google V8
15
15
1.0x
00:00/00:00
登录|注册

08|答疑:如何构建和使用V8的调试工具d8?

使用d8分析V8的优化操作
V8合并函数的情况
内部方法
查看垃圾回收
打印优化数据
测试d8
添加d8路径到环境变量
编译d8
配置工程
下载V8源码
思考题
使用d8
构建d8
如何构建和使用V8的调试工具d8

该思维导图由 AI 生成,仅供参考

你好,我是李兵。
今天是我们第一单元的答疑环节,课后有很多同学留言问我关于 d8 的问题,所以今天我们就来专门讲讲,如何构建和使用 V8 的调试工具 d8。
d8 是一个非常有用的调试工具,你可以把它看成是 debug for V8 的缩写。我们可以使用 d8 来查看 V8 在执行 JavaScript 过程中的各种中间数据,比如作用域、AST、字节码、优化的二进制代码、垃圾回收的状态,还可以使用 d8 提供的私有 API 查看一些内部信息。

如何通过 V8 的源码构建 D8?

通常,我们没有直接获取 d8 的途径,而是需要通过编译 V8 的源码来生成 d8,接下来,我们就先来看看如何构建 d8。
其实并不难,总的来说,大体分为三部分。首先我们需要先下载 V8 的源码,然后再生成工程文件,最后编译 V8 的工程并生成 d8。
接下来我们就来具体操作一下。考虑到使用 Windows 系统的同学比较多,所以下面的操作,我们的默认环境是 Windows 系统,Mac OS 和 Liunx 的配置会简单一些。

安装 VPN

V8 并不是一个单一的版本库,它还引用了很多第三方的版本库,大多是版本库我们都无法直接访问,所以,在下载代码过程中,你得先准备一个 VPN。

下载编译工具链:depot_tools

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

V8调试工具d8是一款强大的工具,能够帮助开发者查看V8执行JavaScript过程中的各种中间数据,包括作用域、AST、字节码、优化的二进制代码和垃圾回收状态。本文介绍了如何构建和使用d8,包括下载V8源码、安装编译工具链depot_tools、设置环境变量、安装VS2019、配置工程和编译d8的步骤。此外,还详细介绍了如何使用d8进行调试,包括打印字节码、优化后的代码以及执行状态等。通过本文,读者可以快速了解如何构建和使用V8的调试工具d8,为他们在开发过程中提供了有力的技术支持。文章还介绍了如何通过d8查看优化数据、垃圾回收状态以及使用V8提供的内部方法。总之,本文内容丰富,涵盖了V8调试工具d8的构建和使用,以及相关的技术细节,对于想要深入了解V8调试工具的开发者来说,是一篇非常有价值的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《图解 Google V8》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(26)

  • 最新
  • 精选
  • h.g.
    置顶
    mac brew install v8 就可以直接使用 d8 了

    作者回复: 赞

    2020-05-24
    6
    31
  • champ可口可乐了
    找到了编译好的d8工具: mac平台: https://storage.googleapis.com/chromium-v8/official/canary/v8-mac64-dbg-8.4.109.zip linux32平台: https://storage.googleapis.com/chromium-v8/official/canary/v8-linux32-dbg-8.4.109.zip linux64平台: https://storage.googleapis.com/chromium-v8/official/canary/v8-linux64-dbg-8.4.109.zip win32平台: https://storage.googleapis.com/chromium-v8/official/canary/v8-win32-dbg-8.4.109.zip win64平台: https://storage.googleapis.com/chromium-v8/official/canary/v8-win64-dbg-8.4.109.zip

    作者回复: 不错

    2020-04-17
    4
    26
  • sugar
    这篇太棒了,终于有这样的手把手带着调试v8的课节了…真的希望这个系列课程中能多加餐一些面向v8底层 c++调试的一些内容,市面上这类资料良莠不齐 且很多资料时效性已经非常差了不具有参考性。几年前,那时我第一次编译chromium,一台顶配的macbookpro生生跑了一下午,然后要是想自己试着改一些地方的代码 反复编译出来看效果就更费劲了。当时一直苦于没人带走了很多弯路,如今看到老师您的这篇专栏喜出望外,真的很希望能多聊些深入的东西,照顾一下各个阶段的学员哈

    作者回复: chromium是个庞然大物,下载代码和配置工程和编译代码都是非常费时费力的,调试也是非常麻烦,各种跳转,各种跨进程通信

    2020-04-02
    18
  • 文蔺
    经过一番猛折腾 最后发现了jsvu 这个工具才是安装 d8 最简单的方式。https://github.com/GoogleChromeLabs/jsvu

    作者回复: 赞

    2020-04-19
    3
    12
  • 子云
    我有几点疑问呀。 一:test.js 里似乎不能出现 require 和 import,d8 直接会报错连语法树都编译不了,。 二:垃圾回收那个例子 ``` // 本节里的这个例子,我数了数一共打印了 14 次 Scavenge.... function strToArray(str) { let i = 0; const len = str.length; let arr = new Uint16Array(str.length); for (; i < len; ++i) { arr[i] = str.charCodeAt(i); } return arr; } // 换成下面这个,之打印一次 Scavenge..... ,这是为什么? function strToArray(str) { let i = 0; const len = str.length; let arr = str.split(','); return arr; } ```

    作者回复: d8比较简单,不支持太复杂的功能,最好是单一文件 第二个strtoarray中没有分配新的大数据,也就不会很快沾满新生代,当然就不会频繁触发垃圾回收器了

    2020-05-05
    2
  • 高亮~
    glcient sync 命令应该是错的 应该是gclient sync

    作者回复: 嗯,我改下

    2020-04-04
    2
  • Aaaaaaaaaaayou
    老师,代码中有 require 引用模块的语句,使用 d8 调试的时候会报 require is not defined,个人理解 require 应该是 nodejs 这个运行环境才能识别。我现在的目标是想看下有模块引入的时候 AST 是什么样子的,请问这个有其他方式吗

    作者回复: d8比较简单,不支持太复杂的功能

    2020-04-22
    2
  • Bazinga
    mac 安装了 depot_tools 怎么配置,直接运行 glcient sync 运行不出啊

    作者回复: 需要将depot_tools的目录设置到环境变量中

    2020-04-02
    5
  • 踢车牛
    搞了两天,终于在 mac 上把 v8 编译成功了,记录下踩过的坑 1. v8 编译依赖于 xcode, 首先安装相应的 xcode,然后 sudo xcode-select -s /Users/videojj/test/Xcode.app。 2. 代理最好开成全局模式,否则,可能某些地址会访问不到,我通过 fetch v8 是就经常失败,然后全局模式后就成功了。 3. xcode 大约 7G, v8 7.48G, depot_tools 400M,因此要想编译成功,首先硬盘空间要够。
    2020-04-11
    1
    7
  • justorez
    用 jsvu 方便一下 npm i jsvu -g 选装 V8 debug 即可。
    2023-02-10归属地:北京
    1
    3
收起评论
大纲
固定大纲
如何通过 V8 的源码构建 D8?
安装 VPN
下载编译工具链:depot_tools
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部