我有一个包含命令行工具和一些Go插件的Go项目。我有一个构建脚本,用于构建CLI,然后进入plugins目录并使用-buildmode=plugin
选项编译每个插件。我想弄清楚launch.json
是否可以配置为有选择地传递buildmode
标志。
如果我先构建插件,然后仅在CLI工具上运行调试器,则插件将不会加载,因为它们是“使用不同版本的软件包X构建的”。
我在tasks.json
中创建了一个任务来调用构建脚本,并将该任务作为preLaunchTask
添加到了调试 session 中,但这并不能解决问题。
#!/bin/bash
set -x
go build ./cmd/...
cd plugins
for DIR in `find . ! -path . -type d`
do
go build -buildmode=plugin $DIR/*.go
done
最佳答案
如果您想将调试状态添加到.so文件中
go build -gcflags "all=-N -l" -x -v -buildmode=plugin -o plugin/plugin.so plugin/plugin.go
但是,当您要在生产环境中进行构建时,请忽略这些选项。go build -buildmode=plugin -o plugin/plugin.so plugin/plugin.go
更多详细信息here关于go - Visual Studio可以调试Go插件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55769301/