使用 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中的调试配置:
※注意,如果需要同时运行多个实例,勾选右上角的
二、单个 coordinator的运行
cmd:
在/home/user/Project/Distribute/mit2/src/main目录下的终端内执行:
go run -race mrcoordinator.go pg-*.txt
- 等价的调试配置:
三、lab给出的测试脚本的运行:
cmd:
在/home/user/Project/Distribute/mit2/src/main目录下的终端内执行:
bash test-mr.sh
- 等价于配置的
Shell Script:
四、备注
眼尖的读者可能已经发现命令行中有一个参数-race,而在GoLand配置文件中只有-i。
-
-race是在编译多goroutine并发代码时要求Go开启竞态检测。即,如果并发代码的读写导致共享变量的数据不一致,Go将引发警报。 -
-i在go build和go clean中各有不同含义[3]。-i会使go build命令安装那些编译目标依赖的且还未被安装的代码包。「安装」是说产生与代码包对应的归档文件,并将其放置到当前工作区目录的pkg子目录的相应子目录中。在默认情况下,这些代码包是不会被安装的。目前的进度先不考虑竞态检测。
五、参考文献
-
参考
GoLand的官方文档是最快的: Run/debug configurations | GoLand Documentation (jetbrains.com) -
关于
Go的其它命令&参数:go command - cmd/go - Go Packages