【Tips】V8引擎的调试

  • 在gdb中使用v8自带的调试命令

    首先在/path/to/v8/tools目录下找到一个gdbinit文件,把名字改为gdbinit_v8,然后执行以下命令:

    cp gdbinit_v8 ~/.gdbinit_v8
    gedit ~/.gdbinit
    #-----添加以下内容---------#
    source ~/.gdbinit_v8
    #------------------------#
    

    接着保存.gdbinit文件即可。

  • 调试脚本编写中常用的函数

    %DebugPrint(obj)    // 输出对象地址
    %SystemBreak()      // 触发调试中断
    
  • 启动gdb调试d8(v8编译后的二进制文件),引入调试脚本

    gdb ./d8
    set args --allow-natives-syntax ./test.js  # 添加--allow-natives-syntax这个选项才可以在test.js中使用%DebugPrint等函数
    
  • test.js示例

    var a = [1,2,3];
    var b = [1.1, 2.2, 3.3];
    var c = [a, b];
    %DebugPrint(a);
    %SystemBreak();  //触发第一次调试
    %DebugPrint(b);
    %SystemBreak();  //触发第二次调试
    %DebugPrint(c);
    %SystemBreak();  //触发第三次调试
    
  • gdb-pwndbg调试时常用命令

    job [address_of_obj]  # gdbinit_v8中的特有命令,打印出对象内存结构,注意对象地址为其实际地址加1
    telescope [real_address] [num] # pwndbg命令,打印出real_address地址处num个内存单元的值,该地址为真实地址
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值