

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 本機偵錯函數 AWS SAM
<a name="serverless-sam-cli-using-debugging"></a>

您可以使用 AWS SAM 搭配各種 AWS 工具組和偵錯工具，在本機測試和偵錯無伺服器應用程式。Lambda 函數的逐步偵錯可讓您在本機環境中一次識別和修正應用程式中的問題一行或指令。

執行本機逐步偵錯的一些方法包括設定中斷點、檢查變數，以及一次一行執行函數程式碼。本機逐步偵錯可讓您在雲端找到可能遇到的問題並進行故障診斷，藉此加強回饋迴圈。

您可以使用 AWS Toolkits 進行偵錯，也可以 AWS SAM 在偵錯模式下執行。如需詳細資訊，請參閱本節中的主題。

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

AWS 工具組是整合的開發環境 (IDE) 外掛程式，可讓您一次一行執行許多常見的偵錯任務，例如設定中斷點、檢查變數和執行函數程式碼。 AWS 工具組可讓您更輕鬆地開發、偵錯和部署使用 建置的無伺服器應用程式 AWS SAM。它們提供建置、測試、偵錯、部署和叫用整合至 IDE 的 Lambda 函數的體驗。

如需可與 搭配使用之 AWS Toolkit 的詳細資訊 AWS SAM，請參閱下列內容：
+ [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/)
+ [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/)
+ [AWS Toolkit for JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/)

有各種 AWS Toolkit 可與不同的 IDEs 和執行時間組合搭配使用。下表列出支援 AWS SAM 應用程式逐步偵錯的常見 IDE/執行時間組合：


| IDE | 執行時期 | AWS 工具組 | 步驟式偵錯的指示 | 
| --- | --- | --- | --- | 
| Visual Studio 程式碼 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging.html)  | AWS Toolkit for Visual Studio Code | AWS Toolkit for Visual Studio Code 《 使用者指南》中的[使用 AWS 無伺服器應用程式](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps.html)  | 
| AWS Cloud9 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging.html)  | AWS Cloud9，啟用 AWS Toolkit1 |  *AWS Cloud9 《 使用者指南*》中的[使用 AWS Toolkit 使用無 AWS 伺服器應用程式](https://docs.aws.amazon.com/cloud9/latest/user-guide/serverless-apps-toolkit.html)。  | 
| WebStorm | Node.js | AWS Toolkit for JetBrains2 |  在 中[執行 （叫用） 或偵錯本機函數](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html) *AWS Toolkit for JetBrains*  | 
| PyCharm | Python | AWS Toolkit for JetBrains2 |  在 中[執行 （叫用） 或偵錯本機函數](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html) *AWS Toolkit for JetBrains*  | 
| Rider | .NET | AWS Toolkit for JetBrains2 |  在 中[執行 （叫用） 或偵錯本機函數](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html) *AWS Toolkit for JetBrains*  | 
| IntelliJ | Java | AWS Toolkit for JetBrains2 |  在 中[執行 （叫用） 或偵錯本機函數](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html) *AWS Toolkit for JetBrains*  | 
| GoLand | Go | AWS Toolkit for JetBrains2 |  在 中[執行 （叫用） 或偵錯本機函數](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html) *AWS Toolkit for JetBrains*  | 

**備註**：

1. 若要使用 AWS Cloud9 逐步偵錯 AWS SAM 應用程式，必須啟用 AWS Toolkit。如需詳細資訊，請參閱*AWS Cloud9 《 使用者指南*》中的[啟用 AWS 工具組](https://docs.aws.amazon.com/cloud9/latest/user-guide/toolkit-welcome.html#access-toolkit)。

1. 若要使用 AWS Toolkit for JetBrains 逐步偵錯 AWS SAM 應用程式，您必須先依照在 中安裝 中的指示[進行安裝 AWS Toolkit for JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-toolkit.html)和設定*AWS Toolkit for JetBrains*。

## 在偵錯模式下於 AWS SAM 本機執行
<a name="serverless-sam-cli-running-locally"></a>

除了與 AWS Toolkits 整合之外，您也可以 AWS SAM 在偵錯模式下執行 ，以連接到第三方偵錯工具，例如 [ptvsd](https://pypi.org/project/ptvsd/) 或 [delve](https://github.com/go-delve/delve)。

若要 AWS 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 函數。不過，由於您可以指定單一偵錯連接埠，因此一次只能偵錯一個函數。您需要在 AWS SAM CLI繫結至連接埠之前呼叫 API，以允許偵錯工具連線。