zoukankan      html  css  js  c++  java
  • Delve调试器简单使用说明

    Delve

    简介

    Delve是一个专门用来调试Go程序的工具(Go编程语言的调试器)
    可调试Go语言程序
    也可调试汇编程序

    在Delve中加载程序

    有两种方法可以将程序加载到Delve调试器中
    1.当源代码尚未编译为二进制时,使用denbug参数

    dlv debug
    

    2.使用exec参数

    go build hello.go
    dlv exec ./helllo
    

    Delve调试器的简单用法

    • 进入调试
    dlv debug
    
    • 查看Deleve提供的调试命令列表
    dlv help
    
    • 断点
      • 每个go程序的入口是main.main函数,可以用break在此设置一个断点
    break main.main
    
    • 查看已经设置的所有断点
    breakpoints
    
    • 查看全部包级变量
    vars main
    
    • 让程序运行到下一个断点处
    continue
    
    • 单步执行进入函数内部
    next
    
    • 进入函数之后通过args和locals命令查看函数的参数和局部变量
    args
    locals
    
    • 组合使用break和continue命令,设置条件断点
      • 在循环内部设置条件断点,当循环变量i等于3时断点生效
    break main.go:10
    condition 2 i==3
    
    • 打印变量
    print nums
    
    • 查看当前执行函数的栈帧信息
    stack
    
    • 查看当前Goroutine相关的信息
    goroutine
    goroutines
    
    • 退出调试器
    quit
    
    • 先进入main,再转到其他函数
      • 单步执行
    next
    

    移动到调用函数

    step
    
    • 使用filename:linenumber(文件名:行号)设置断点
    break function.go:5
    
    • 在栈帧之间移动,使用frame命令(在stack命令显示的栈帧中移动)
    frame 0
    frame 1
    
    • 逐步退出
    setpout
    
    • 打印变量类型
    whatis
    
    • 功能接近指令说明
      • next 跳转到下一行源码处
      • continue 运行到下一个断点处
      • step 单步执行程序
      • step-instruction 单步执行一条cpu指令

    Deleve调试汇编程序

    调试汇编程序时,我们需要时刻关注寄存器的状态
    如果涉及函数调用或局部变量或参数,还需要重点关注栈寄存器SP的状态

    • 用disassemble反汇编命令查看函数对应的汇编代码
    disassemble
    
    • 单步执行汇编指令命令
    step-instruction
    
    • 查看全部寄存器状态
    regs
    
    • 查看内存内的数据
    (dlv)print *(*[5]byte)(uintptr(0x00000000010a4060))
    [5]uint8 [72,101,108,108,111]
    

    通过help查看支持的指令与指令含义

    参考

    dlv参考1
    dlv参考1_en
    Go语言高级编程-Delve调试器

  • 相关阅读:
    2021.1.11
    2021.1.10(每周总结)
    2021.1.9
    2021.1.8
    2021.1.7
    构建之法阅读笔记01
    [java] XML DTD XSD
    详解 泛型 与 自动拆装箱
    详解 正则表达式
    详解 LinkedHashMap
  • 原文地址:https://www.cnblogs.com/biby/p/15295240.html
Copyright © 2011-2022 走看看