我有一个包含命令行工具和一些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/

10-12 05:03