

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

# 使用本地调试函数 Amazon SAM
<a name="serverless-sam-cli-using-debugging"></a>

您可以 Amazon SAM 与各种 Amazon 工具包和调试器配合使用，在本地测试和调试您的无服务器应用程序。通过逐步调试 Lambda 函数，您可以在本地环境中逐行或逐条指令地识别和修复应用程序中的问题。

您可以执行本地逐步调试的一些方法包括设置断点、检查变量以及逐行执行函数代码。本地分步调试使您可以发现和解决可能在云中遇到的问题，从而缩短反馈循环。

您可以使用 Amazon 工具包进行调试，也可以在调试模式 Amazon SAM 下运行。有关详细信息，请参阅本节中的主题。

## 使用 Amazon 工具包
<a name="serverless-sam-cli-using-aws-toolkits"></a>

Amazon 工具包是集成开发环境 (IDE) 插件，可让您执行许多常见的调试任务，例如设置断点、检查变量和逐行执行函数代码。 Amazon 工具包使您可以更轻松地开发、调试和部署使用构建的无服务器应用程序。 Amazon SAM它们提供了构建、测试、调试、部署和调用集成到 IDE 中的 Lambda 函数的体验。

有关可与之配合使用的 Amazon 工具包的更多信息 Amazon SAM，请参阅以下内容：
+ [Amazon Toolkit for Visual Studio Code](https://docs.amazonaws.cn/toolkit-for-vscode/latest/userguide/)
+ [Amazon Cloud9](https://docs.amazonaws.cn/cloud9/latest/user-guide/)
+ [Amazon Toolkit for JetBrains](https://docs.amazonaws.cn/toolkit-for-jetbrains/latest/userguide/)

有各种各样的 Amazon 工具包适用于 IDEs 和运行时的不同组合。下表列出了支持 Amazon SAM 应用程序分步调试的常用 IDE/runtime 组合：


| IDE | 运行时 | Amazon 工具包 | 逐步调试说明 | 
| --- | --- | --- | --- | 
| Visual Studio Code |  [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging.html)  | Amazon Toolkit for Visual Studio Code | 《Amazon Toolkit for Visual Studio Code 用户指南》中的[使用 Amazon Serverless Application](https://docs.amazonaws.cn/toolkit-for-vscode/latest/userguide/serverless-apps.html)  | 
| Amazon Cloud9 |  [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging.html)  | Amazon Cloud9，启用 Amazon 工具包后 1 |  [使用《*Amazon Cloud9 用户指南*》中的 Amazon Toolkit 使用 Amazon 无服务器应用程序](https://docs.amazonaws.cn/cloud9/latest/user-guide/serverless-apps-toolkit.html)。  | 
| WebStorm | Node.js | Amazon Toolkit for JetBrains2 |  在 *Amazon Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.amazonaws.cn/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 
| PyCharm | Python | Amazon Toolkit for JetBrains2 |  在 *Amazon Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.amazonaws.cn/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 
| Rider | .NET | Amazon Toolkit for JetBrains2 |  在 *Amazon Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.amazonaws.cn/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 
| IntelliJ | Java | Amazon Toolkit for JetBrains2 |  在 *Amazon Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.amazonaws.cn/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 
| GoLand | Go | Amazon Toolkit for JetBrains2 |  在 *Amazon Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.amazonaws.cn/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 

**备注**：

1.  Amazon Cloud9 要使用逐步调试 Amazon SAM 应用程序，必须启用 Amazon Toolkit。有关更多信息，请参阅[《*Amazon Cloud9 用户指南》*中的 “启用 Amazon 工具包](https://docs.amazonaws.cn/cloud9/latest/user-guide/toolkit-welcome.html#access-toolkit)”。

1. 要使用分步调试 Amazon SAM 应用程序，必须先按照中安装中的说明进行[安装](https://docs.amazonaws.cn/toolkit-for-jetbrains/latest/userguide/setup-toolkit.html)和配置。 Amazon Toolkit for JetBrains Amazon Toolkit for JetBrains*Amazon Toolkit for JetBrains*

## 在调试模式下在 Amazon SAM 本地运行
<a name="serverless-sam-cli-running-locally"></a>

[除了与 T Amazon oolkits 集成外，您还可以在调试模式下运行 Amazon SAM 以连接到第三方调试器，例如 [pt](https://pypi.org/project/ptvsd/) vsd 或 delve。](https://github.com/go-delve/delve)

要 Amazon SAM 在调试模式下运行，请使用命令[sam local invoke](sam-cli-command-reference-sam-local-invoke.md)或[sam local start-api](sam-cli-command-reference-sam-local-start-api.md)使用`--debug-port`或`-d`选项。

例如：

```
# Invoke a function locally in debug mode on port 5858
sam local invoke -d 5858 <function logical id>

# Start local API Gateway in debug mode on port 5858
sam local start-api -d 5858
```

**注意**  
如果使用 `sam local start-api`，则本地 API Gateway 实例会公开您的所有 Lambda 函数。但是，因为您能指定一个调试端口，所以每次只能调试一个函数。您需要在 Amazon SAM CLI 绑定到端口之前调用 API，以允许调试器进行连接。