下文只讨论delve在golang中进行源码级调试的过程
安装: go get -u github.com/go-delve/delve/cmd/dlv
源码级调试可以选择delve
- 使用-- 来传递flags参数
| cmd | 说明 |
|---|---|
| args | 显示函数参数 |
| break (b) | 设置断点 |
| breakpoints (bp) | 打印断点 |
| call | 注入一个函数调用,并恢复处理 |
| check (checkpoint) | 当前位置创建一个checkpoint |
| checkpoints | 打印已存在的checkpoint |
| clear | 删除breakpoint |
| chear-checkpoint (clearcheck) | 删除checkpoint |
| clearall | 删除多个breakpoint |
| condition (cond) | 设置条件断点、跟踪点 |
| config | 修改配置 |
| config -list | 显示所有配置参数 |
| config -save | 将配置持久化到磁盘 |
| config | 修改配置的值 |
| config substitute-path | 新增替换规则 |
| config substitute-path | 移除替换规则 |
| config alias | 定义一个别名 |
| config alias | 删除一个别名 |
| continue (c) | 继续执行 |
| deferred | 命令延时执行 |
| disassemble (disass) | 汇编 |
| down | 当前栈 下移 |
| edit (ed) | 打开源码 |
| exit (quit/q) | 退出调试 |
| frame | 设置当前栈针,或在某一栈针执行命令 |
| funcs | 显示函数列表 |
| goroutine | 显示或更改当前协程 |
| goroutines | 显示程序所有协程 |
| help (h) | 帮助 |
| list (ls/l) | 显示当前源码 |
| locals | 显示局部变量 |
| next (n) | 源码下一步 |
| on | 设置命中断点执行的命令 |
| print (p) | 打印表达式 |
| regs | 打印cpu寄存器 |
| restart (r) | 重新执行,起点可以是checkpoint,也可以是事件 |
| rewind (rw) | 继续执行 |
| set | 修改变量值 |
| source | 执行一个文件中的所有delve命令 |
| sources | 显示所有的source 文件 |
| statck (bt) | 显示栈 |
| step (s) | 单步,会进入到子函数 |
| step-instruction (si) | 汇编单步 |
| stepout | 跳出当前函数 |
| thread (tr) | 切换线程 |
| threads | 显示所有跟踪线程 |
| trace (t) | 设置一个跟踪点,断点的一种,不过不会中断,只会显示一些信息 |
| types | 显示类型,支持正则匹配,类似funcs |
| up | 栈帧上移 |
| vars | 显示package变量 |
| whatis | 显示表达式类型 |