前言

在前边几篇文章中分享了Go编译过程中的源码实现,本文主要是想分享一下我是怎么调试Go的源代码的(如果你很熟悉的话,可以跳过本文)。本文主要是分享两种Go源码的调试方法

  • Goland的debug
  • dlv工具

本文我还会以抽象语法树为例,来通过dlv对它的构建过程进行调试

Goland的debug调试Go源码

下边以调试Go编译的入口文件为例

编辑debug配置

填写配置信息

打断点,并开始执行

调试

这些调试按钮的功能其实跟其他的IDEA是一样的,之前整理过,这里不重复整理了,不清楚的小伙伴可以看这里

dlv工具调试Go源码

安装

这里以mac为例

启动

常用命令

可以通过下边的方式查看一些常用的命令

dlv调试抽象语法树构建

下边利用dlv来调试Go编译过程中的抽象语法树构建。我这里没有粘代码,你可以打开源代码对着下边看

  • 启动dlv,并调试Go编译的入口文件

  • 设置断点、continue的使用、n的使用(r 设置编译器编译目标文件)

  • 在指定文件的指定位置设置断点

  • 打印抽象语法树构建出来的结果(xtop)

你也可以打印xtop下边元素的值,比如查看xtop第一个元素的左节点