[开发工具] MIT 6.824 的 Lab1 的GoLand 调试配置

807 阅读1分钟

使用 IDE的本地调试配置最大的好处是可以取代命令行。

一、多个 Worker 的运行

需求是在目录/home/usr/Project/Distribute/mit2/src/main下编译并运行多个mrworker.go,并添加wc.so 插件中的函数。

  • cmd
    /home/user/Project/Distribute/mit2/src/main目录下的终端内执行:
go run -race mrworker.go wc.so
  • 等价于GoLand中的调试配置:

image.png

※注意,如果需要同时运行多个实例,勾选右上角的

image.png

二、单个 coordinator的运行

  • cmd:
    /home/user/Project/Distribute/mit2/src/main目录下的终端内执行:
go run -race mrcoordinator.go pg-*.txt
  • 等价的调试配置:

image.png

三、lab给出的测试脚本的运行:

  • cmd:
    /home/user/Project/Distribute/mit2/src/main目录下的终端内执行:
 bash test-mr.sh
  • 等价于配置的 Shell Script: image.png

四、备注

眼尖的读者可能已经发现命令行中有一个参数-race,而在GoLand配置文件中只有-i

  • -race是在编译多goroutine并发代码时要求Go开启竞态检测。即,如果并发代码的读写导致共享变量的数据不一致,Go 将引发警报。

  • -igo buildgo clean中各有不同含义[3]。-i会使go build命令安装那些编译目标依赖的且还未被安装的代码包。「安装」是说产生与代码包对应的归档文件,并将其放置到当前工作区目录的pkg子目录的相应子目录中。在默认情况下,这些代码包是不会被安装的。

    目前的进度先不考虑竞态检测。

五、参考文献

  1. 参考 GoLand的官方文档是最快的: Run/debug configurations | GoLand Documentation (jetbrains.com)

  2. 关于Go的其它命令&参数:go command - cmd/go - Go Packages

  3. GO 命令教程 · 中文版