本地直通调试Golang功能 - AWS Serverless Application Model
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本地直通调试Golang功能

与Node.js、Java和Python相比,Golang功能直通调试略有不同。我们要求 德尔维 作为调试器,并在运行时用它包绕您的功能。调试器在无头模式下运行,在调试端口上侦听。

调试时,必须以调试模式编译您的功能:

GOARCH=amd64 GOOS=linux go build -gcflags='-N -l' -o <output path> <path to code directory>

Delve调试器

您必须编译 德尔维 在容器中运行,并提供其本地路径, --debugger-path 参数。

构建 德尔维 本地,如下所示:

GOARCH=amd64 GOOS=linux go build -o <delve folder path>/dlv github.com/go-delve/delve/cmd/dlv

Delve调试器路径

输出路径需要结束于 /dlv。Docker容器希望dlv二进制文件位于 <delve folder path>。如果不是,则会出现安装问题。

注意

--debugger-path 是包含从上一个代码编译的dlv二进制文件的目录的路径。

示例:

调用 AWS SAM 类似于以下内容:

sam local start-api -d 5986 --debugger-path <delve folder path>

Delve调试程序API版本

要运行 德尔维 使用您选择的API版本的调试程序,请使用 附加调试参数 -delveAPI.

注意

对于 IDEs 例如 GoLand、MicrosoftVisualStudioCode等,运行 德尔维 在API版本中 2 模式。

示例

调用 AWS SAM 与 德尔维 API版本2模式下的调试器:

sam local start-api -d 5986 --debugger-path <delve folder path> --debug-args "-delveAPI=2"

Example

以下是要附加到调试会话的MicrosoftVisualStudioCode的示例启动配置。

{ "version": "0.2.0", "configurations": [ { "name": "Connect to Lambda container", "type": "go", "request": "launch", "mode": "remote", "remotePath": "", "port": <debug port>, "host": "127.0.0.1", "program": "${workspaceRoot}", "env": {}, "args": [], }, ] }