• v8调试笔记


    记录一些奇技淫巧,方便查阅

    0.调试环境配置

    v8调试环境可以使用v8安装目录下的/tools/gdbinit并将它加入根目录下.gdbinit配置里,修改.gdbinit配置

    sudo gedit ~/.gdbinit

    添加配置(可以配合其他gdb插件如pwndbg使用),

    source path/to/gdbinit

    使用gdb调试时可以先加载要调试的d8文件,然后设置启动参数

    set args --allow-natives-syntax xxx.js

    其中xxx.js可以在要调试的地方设置输出点和断点

    %DebugPrint(obj)    // 输出对象地址
    %SystemBreak()      // 触发调试中断

    使用d8 --help | grep print可以查看d8的辅助调试命令,以下纪录一些常用的

    1.job addr查看addr处的js数据类型结构体

    2.--print-ast 查看v8生成的抽象语法树

    3.--print-bytecode 查看生成的字节码

    4.--trace-parse 查看v8解析编译代码的顺序和生成时间(v8解析js代码时并没有解析编译全部代码,因为不是所有代码都会马上执行,使用此命令可以查看js中v8立即运行的解析编译的代码部分)

    5.--trace-opt-verbose 查看代码优化情况和优化原因,--trace-deopt 查看代码去优化的情况和原因

    6.--print-opt-code 查看优化过的汇编代码(%OptimizeFunctionOnNextCall()

    7.--trace-gc 查看gc

    8.--trace-ic 查看函数使用的对象类型

    9.--code-comments 优化代码注释

    10.--trace-bailout 查找不能被优化的代码

    11.--expose-gc 允许手动执行垃圾回收机制

  • 相关阅读:
    RFC7296--Internet密钥交换协议版本2(IKEv2)
    IPSec 100问
    strongswan--函数定义宏
    RFC6311--协议支持IKEv2 / IPsec的高可用性
    IPSec之security acl
    华罗庚
    韩罗塔核心算法
    javaBean
    Servlet
    javaee Api
  • 原文地址:https://www.cnblogs.com/snip3r/p/12506768.html
Copyright © 2020-2023  润新知