作者: madcoder 原文来源:https://tidb.net/blog/b983bf5d
TiDB 是一个优秀的开源项目,在学习其核心架构和原理后,想必有小伙伴也想看看代码的具体实现,官方也贴心的给出了环境部署文档 。这里抛砖引玉,详细介绍如何搭建和调试 TiDB 环境 – 以 PD 为例。
1. 安装 VSCode
vscode 安装就不累述了,聪明的读者一定都会。需要注意的是需要在 VSCode 中安装 Remote Explorer 插件。
2. WSL 安装 Ubuntu
你可以通过以下命令查看可安装的 Ubuntu 版本:
选择你需要的版本进行安装,例如:
wsl.exe --install Ubuntu-22.04
复制代码
安装完成后,添加软件来源:
sudo vim /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
sudo apt-get update
sudo apt-get install golang-go
复制代码
注意:这里 jammy 对应的是 Ubuntu-22.04,如果你使用的是 Ubuntu 20.04,那么你应该使用 focal;是 Ubuntu 18.04,那么你应该使用 bionic。sudo apt-get install golang-go 这里主要安装一些第三方库编译时的依赖,比如:github.com/goccy/go-graphviz\@v0.0.9/internal/ccall。
下载 pd 源码:git clone
https://github.com/tikv/pd.git
3. 安装 Go 环境
下载并解压Go 安装包 :
tar -C /usr/local -xvf go1.22.3.linux-amd64.tar.gz
复制代码
设置环境变量:
export PATH=$PATH:/usr/local/go/bin #/etc/profile
go env -w GOPROXY=https://goproxy.cn,direct
复制代码
4. 安装 dlv 调试工具
go install github.com/go-delve/delve/cmd/dlv@latest
mv $GOPATH/go/bin/* /usr/local/go
复制代码
检查环境:
xxx@DESKTOP-MDMMJR5:~/go/bin$ dlv version
Delve Debugger
Version: 1.22.1
Build: $Id: 0c3470054da6feac5f6dcf3e3e5144a64f7a9a48 $
xxx@DESKTOP-MDMMJR5:~/go/bin$ go version
go version go1.22.3 linux/amd64
xxx@DESKTOP-MDMMJR5:~/go/bin$ go env
GO111MODULE=''
GOARCH='amd64'
复制代码
最后,按 F5 键提示安装一些调试工具,点击 ”install all” 即可。
2024-05-15 22:59:31.572 [info] Tools environment: GOPATH=/home/xxx/go
2024-05-15 22:59:31.573 [info] Installing 5 tools at /home/xxx/go/bin
2024-05-15 22:59:31.573 [info] gopls
2024-05-15 22:59:31.573 [info] gotests
2024-05-15 22:59:31.573 [info] gomodifytags
2024-05-15 22:59:31.573 [info] impl
2024-05-15 22:59:31.573 [info] goplay
复制代码
5. 调试截图
环境部署过程有什么问题,欢迎留言讨论,你的问题可能也是别人的问题,抛出问题你就已经领先一步啦 ^-^。
评论