

 AWS Cloud9 不再提供給新客戶。 AWS Cloud9 的現有客戶可以繼續正常使用該服務。[進一步了解](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# 在 IDE AWS Cloud9 中使用建置器、執行器和偵錯器
<a name="build-run-debug"></a>

*建置器*會指示 AWS Cloud9 整合式開發環境 (IDE) 如何建置專案的檔案。*執行器*會指示 AWS Cloud9 IDE 如何執行特定類型的檔案。執行器可以使用「除錯器」**來協助尋找檔案中來源碼的任何問題。

您可以使用 AWS Cloud9 IDE 以下列方式建置、執行和偵錯程式碼：
+ 使用建置器來建置專案檔案。如需詳細資訊，請參閱[建置專案的檔案](#build-run-debug-build)。
+ 使用執行器來執行 (和選擇性除錯) 您的程式碼。如需詳細資訊，請參閱[內建建置、執行和偵錯支援](#build-run-debug-supported)和[執行程式碼](#build-run-debug-run)。
+ 以不同於原始定義的方式變更內建執行器來執行 (和選擇性除錯) 您的程式碼。如需詳細資訊，請參閱[變更內建執行器](build-run-debug-change-runner.md)。
+ 以自訂檔案名稱組合、命令列選項、除錯模式、目前工作目錄和環境變數使用執行器來執行 (和選擇性除錯) 您的程式碼。如需詳細資訊，請參閱[建立執行組態](build-run-debug-create-run-config.md)。
+ 建立您自己的建置器或執行器。如需詳細資訊，請參閱[建立建置器或執行器](#build-run-debug-create-builder-runner)。

## 內建組建、執行和除錯支援
<a name="build-run-debug-supported"></a>

IDE AWS Cloud9 提供內建支援，可建置、執行和偵錯多種語言的程式碼。如需完整清單，請參閱「[語言支援](language-support.md)」。

選單列以 **Run** (執行)、**Build System** (建置系統) 和 **Run** (執行)、**Build** (建置) 選單命令提供內建組建支援。若要為未列出的程式設計語言或工具新增支援，請參閱「[建立建置器或執行器](#build-run-debug-create-builder-runner)」。

內建執行支援包括 **Run** (執行) 按鈕，以及選單列的 **Run** (執行)、**Run With** (執行工具) 和 **Run** (執行)、**Run Configurations** (執行組態) 選單命令。若要為未列出的程式設計語言或工具新增支援，請參閱「[建立建置器或執行器](#build-run-debug-create-builder-runner)」和「[建立執行組態](build-run-debug-create-run-config.md)」。

內建除錯支援可透過 **Debugger** (除錯器) 視窗獲得。若要顯示 **Debugger** (除錯器) 視窗，請選擇 **Debugger** (除錯器) 按鈕。如果 **Debugger** (除錯器) 按鈕不可見，請在選單列上選擇 **Window** (視窗)、**Debugger** (除錯器)。

## 建置專案檔案
<a name="build-run-debug-build"></a>

1. 開啟對應至您希望建置之程式碼的檔案。

1. 在選單列上，選擇 **Run, Build System** (執行、建置系統)，然後選擇要使用的建置器名稱 (若尚未選擇)。如果您希望使用的建置器未列出，請停止此程序，先完成「[建立建置器或執行器](#build-run-debug-create-builder-runner)」中的步驟，再返回此程序。

1. 選擇 **Run, Build** (執行、建置)。

## 執行您的程式碼
<a name="build-run-debug-run"></a>

1. 開啟對應至您希望執行的程式碼檔案 (若尚未開啟及選取該檔案)。

1. 在選單列上，選擇下列其中一項動作：
   + 若要以最接近的相符內建執行器來執行程式碼，請選擇 **Run, Run** (執行、執行)。如果 AWS Cloud9 找不到，則會停用此命令。
   + 若要使用 AWS Cloud9 上次使用的執行組態執行程式碼，請選擇**執行、執行最後**。
   + 若要以特定執行器來執行程式碼，請選擇 **Run, Run With** (執行、執行工具)，然後選擇執行器的名稱。如果您希望使用的執行器未列出，請停止此程序，先完成「[建立建置器或執行器](#build-run-debug-create-builder-runner)」中的步驟，再返回此程序。
   + 若要以特定執行器與自訂檔案名稱組合、命令列選項、除錯模式，目前工作目錄和環境變數來執行程式碼，請選擇 **Run, Run Configurations** (執行、執行組態)，然後選擇執行組態的名稱。在顯示的執行組態標籤中，選擇 **Runner：Auto** (執行器：自動)，選擇您希望使用的執行器，然後選擇 **Run** (執行)。如果您希望使用的執行器未列出，請停止此程序，先完成「[建立建置器或執行器](#build-run-debug-create-builder-runner)」中的步驟，再返回此程序。

## 除錯您的程式碼
<a name="build-run-debug-debug"></a>

1. 在程式碼的執行組態標籤上選擇 **Run in Debug Mode** (以除錯模式執行)。錯誤圖示會在白色背景中轉換為綠色。如需詳細資訊，請參閱「[執行您的程式碼](#build-run-debug-run)」和「[建立執行組態](build-run-debug-create-run-config.md)」。

1. 在您的程式碼中設定執行期間您想要暫停的中斷點，如下所示：

   1. 開啟每個您想要設定中斷點的檔案。

   1. 在您想要設定中斷點之檔案的每個點上，選擇行號左側裝訂邊中的空白區域。即會顯示紅色圓圈。

      若要移除中斷點，請在裝訂邊中選擇現有的中斷點。

      若要停用中斷點，而非將其移除，請在 **Debugger** (除錯器) 視窗、**Breakpoints** (中斷點) 中，清除對應至您希望停用之中斷點的方塊。若要再次啟用中斷點，請選取您清除的方塊。

      若要一次停用所有中斷點，請在 **Debugger** (除錯器) 視窗中選擇 **Deactivate All Breakpoints** (停用所有中斷點)。若要再次啟用所有中斷點，請選擇 **Activate All Breakpoints** (啟用所有中斷點)。

      如果 **Debugger** (除錯器) 視窗不可見，請選擇 **Debugger** (除錯器) 按鈕。如果 **Debugger** (除錯器) 按鈕不可見，請在選單列上選擇 **Window** (視窗)、**Debugger** (除錯器)。

1. 在您希望取得值的暫停點上設定任一監看運算式，如下所示：

   1. 在 **Debugger** (除錯器) 視窗的 **Watch Expressions** (監看運算式) 中，選擇 **Type an expression here** (在此處輸入運算式)。

   1. 輸入您希望監看的運算式，然後按下 `Enter`。

      若要變更現有的監看運算式，請用滑鼠右鍵按一下監看運算式，然後選擇 **Edit Watch Expression** (編輯監看運算式)。輸入變更，然後按下 `Enter`。

      若要移除現有的監看運算式，請用滑鼠右鍵按一下監看運算式，然後選擇 **Remove Watch Expression** (移除監看運算式)。

1. 如「[執行您的程式碼](#build-run-debug-run)」中所述來執行您的程式碼。

每當執行暫停，您可以將指標停留在顯示的任何程式碼片段 (例如變數) 上，以便在工具提示中顯示任何可用的相關資訊。

# 變更內建執行器
<a name="build-run-debug-change-runner"></a>

此步驟說明如何將內建執行器變更為執行 （以及選擇性除錯） 程式碼，方式與原始定義方式不同。

1. 在選單列上，選擇 **Run, Run With** (執行、執行工具)，然後選擇您希望變更的內建執行器。

1. 選擇執行組態標籤上顯示的 **Stop** (停止) 使執行器停止嘗試執行您的程式碼。

1. 選擇 **Runner: My Runner (執行器：我的執行器)**，其中 **My Runner (我的執行器)** 即為您希望變更的執行器名稱，然後選擇 **Edit Runner (編輯執行器)**。

1. 在顯示的 **My Runner.run (My Runner.run)** 索引標籤上變更執行器目前的定義。請參閱「[定義建置器或執行器](build-run-debug-define-builder-runner.md)」。

1. 選擇 **File, Save As** (檔案、另存新檔)。在 `my-environment/.c9/runners`目錄中儲存具有相同名稱 (**My Runner.run**) 的檔案，其中 `my-environment`是您 AWS Cloud9 開發環境的名稱。

**注意**  
您對內建執行器所做的任何變更僅適用於您進行變更的環境。若要將變更套用至個別的環境，請開啟其他環境，然後遵循上述步驟開啟、編輯和儲存相同的變更至該內建執行器。

# 建立執行組態
<a name="build-run-debug-create-run-config"></a>

此步驟說明如何使用檔案名稱、命令列選項、除錯模式、目前工作目錄和環境變數的自訂組合來執行 （以及選擇性除錯） 程式碼。

在選單列上，選擇 **Run, Run Configurations, New Run Configuration** (執行、執行組態、新增執行組態)。請在顯示的執行組態標籤上執行下列動作：

1. 在 **Run** (執行) 和 **Restart** (重新啟動) 旁的方塊中，輸入將會針對此執行組態顯示在 **Run, Run Configurations** (執行、執行組態) 選單上的名稱。

1. 在 **Command (命令)** 方塊中輸入您希望使用的任何自訂命令列選項。

1. 若要讓此執行組態使用執行器預先定義的除錯設定，請選擇 **Run in Debug Mode** (以除錯模式執行)。錯誤圖示將會在白色背景中轉換為綠色。

1. 若要讓此執行組態使用特定的工作目錄，請選擇 **CWD**、選擇要使用的目錄，然後選擇 **Select** (選取)。

1. 若要讓此執行組態使用特定的環境變數，請選擇 **ENV**，然後輸入每個環境變數的名稱和值。

若要使用此執行組態，請開啟對應至您希望執行的程式碼檔案。請在選單列上，選擇 **Run, Run Configurations** (執行、執行組態)，然後選擇此執行組態名稱。在顯示的執行組態標籤中，選擇 **Runner：Auto** (執行器：自動)，選擇您希望使用的執行器，然後選擇 **Run** (執行)。

**注意**  
任何您建立的執行組態僅適用於您建立該執行組態的環境。若要將該執行組態新增至不同的環境，請開啟其他環境，然後遵循上述步驟在該環境中建立相同的執行組態。

## 建立建置器或執行器
<a name="build-run-debug-create-builder-runner"></a>

此步驟說明如何建立自己的建置器或執行器。

1. 若要建立建置器，請在選單列上，選擇 **Run, Build System, New Build System** (執行、建置系統、新增建置系統)。若要建立執行器，請在選單列上，選擇 **Run, Run With, New Runner** (執行、執行工具、新增執行器)。

1. 在顯示的建置器標籤 (標記為 **My Builder.build**) 或執行器標籤 (標記為 **My Runner.run** (我的 Runner.run)) 上定義建置器或執行器。請參閱「[定義建置器或執行器](build-run-debug-define-builder-runner.md)」。

1. 在您定義建置器或執行器後，請選擇 **File, Save As** (檔案、另存新檔)。針對建置器，請使用 `.build` 副檔名將檔案儲存在 `my-environment/.c9/builders` 目錄中，其中 `my-environment` 即為您的環境名稱。針對執行器，請使用 `.run` 檔案副檔名將檔案儲存在 `my-environment/.c9/runners` 目錄中，其中 `my-environment` 即為您環境的名稱。您指定的檔案名稱將會顯示在 **Run, Build System** (執行、建置系統) 選單 (或建置器) 上，或 **Run, Run With** (執行、執行工具) 選單 (或執行器) 上。因此，除非您指定不同的檔案名稱，預設情況下顯示名稱將會是 **My Builder** (我的建置器) (針對建置器) 或 **My Runner** (我的執行器) (針對執行器)。

若要使用此建置器或執行器，請參閱「[建置專案檔案](#build-run-debug-build)」或「[執行您的程式碼](#build-run-debug-run)」。

**注意**  
任何您建立的建置器或執行器僅適用於您建立建置器或執行器的環境。若要將該建置器或執行器新增至不同的環境，請開啟其他環境，然後遵循上述步驟在該環境中建立相同的建置器或執行器。

# 定義建置器或執行器
<a name="build-run-debug-define-builder-runner"></a>

本主題說明如何定義建置器或執行器。定義建置器或執行器之前，請確定您[已建立建置器或執行器](build-run-debug.md#build-run-debug-create-builder-runner)。



在顯示的建置器或執行器標籤上，使用 JSON 來定義執行器或建置器。開始使用下列程式碼做為範本。

針對建置器，請使用此程式碼。

```
{
  "cmd": [],
  "info": "",
  "env": {},
  "selector": ""
}
```

針對執行器，請使用此程式碼。

```
{
  "cmd": [],
  "script": "",
  "working_dir": "",
  "info": "",
  "env": {},
  "selector": "",
  "debugger": "",
  "debugport": ""
}
```

在上述程式碼中：
+  `cmd`：代表以逗號分隔的字串清單 AWS Cloud9 ，供 做為單一命令執行。

   AWS Cloud9 執行此命令時，清單中的每個字串都會以單一空格分隔。例如， AWS Cloud9 會以 `"cmd": [ "ls", "$file", "$args"]`執行`ls $file $args`，其中 AWS Cloud9 會以目前檔案的完整路徑`$file`取代 ，並以檔案名稱後面輸入`$args`的任何引數取代 。如需詳細資訊，請參閱本節後文所述之支援的變數清單。
+  `script`：代表終端機中執行器執行的 bash 指令碼 (如需可讀性，也可以指定為行陣列)。
+  `working_dir`：代表執行器將在其中執行的目錄。
+  `info`：代表您希望在執行開始時向使用者顯示的任何文字字串。此字串可包含變數，例如 `Running $project_path$file_name...`，其中 AWS Cloud9 將`$project_path`取代為目前檔案的目錄路徑，並將 取代`$file_name`為目前檔案的名稱部分。請參閱本節後文所述之支援的變數清單。
+  `env`：代表 AWS Cloud9 要使用的任何命令列引數陣列，例如：

  ```
  "env": {
    "LANG": "en_US.UTF-8",
    "SHLVL": "1"
  }
  ```
+  `selector`：代表 AWS Cloud9 您想要用來識別套用至此執行器之檔案名稱的任何規則表達式。例如，您可以指定 `source.py` 用於 Python 檔案。
+  `debugger`：表示您想要 AWS Cloud9 使用且與此執行器相容的任何可用除錯器的名稱。例如，您可以指定 `v8` 用於 V8 除錯器。
+  `debugport`：表示 AWS Cloud9 您想要在偵錯期間使用的連接埠號碼。例如，您可以指定 `15454` 用於連接埠號碼。

下列資料表顯示您可以使用的變數。


****  

|  **變數**  |  **Description**  | 
| --- | --- | 
|   `$file_path`   |  目前檔案的目錄，例如 `/home/ec2-user/environment` 或 `/home/ubuntu/environment`。  | 
|   `$file`   |  目前檔案的完整路徑，例如 `/home/ec2-user/environment/hello.py` 或 `/home/ubuntu/environment/hello.py`。  | 
|   `$args`   |  在檔案名稱後輸入的任何引數，例如 `"5" "9"`。  | 
|   `$file_name`   |  目前檔案的名稱部分，例如 `hello.py`。  | 
|   `$file_extension`   |  目前檔案的副檔名，例如 `py`。  | 
|   `$file_base_name`   |  不含檔案副檔名的目前檔案名稱，例如 `hello`。  | 
|   `$packages`   |  套件資料夾的完整路徑。  | 
|   `$project`   |  目前專案資料夾的完整路徑。  | 
|   `$project_path`   |  目前專案檔案的目錄，例如 `/home/ec2-user/environment/` 或 `/home/ubuntu/environment/`。  | 
|   `$project_name`   |  不含檔案副檔名的目前專案檔案名稱，例如 `my-demo-environment`。  | 
|   `$project_extension`   |  目前專案檔案的副檔名。  | 
|   `$project_base_name`   |  不含副檔名的目前專案檔案名稱。  | 
|   `$hostname`   |  環境的主機名稱，例如 `192.0.2.0`。  | 
|   `$hostname_path`   |  含專案檔案相關路徑的環境主機名稱，例如 `https://192.0.2.0/hello.js`。  | 
|   `$url`   |  存取環境的完整 URL，例如 `https://192.0.2.0.`。  | 
|   `$port`   |  指派給環境的連接埠，例如 `8080`。  | 
|   `$ip`   |  對環境執行程序的 IP 地址，例如 `0.0.0.0`。  | 

舉例來說，下列名為 `G++.build` 的建置器檔案會針對使用 `-o` 選項執行 **`g++`** 命令的 GCC 來定義建置器，以將目前檔案 (例如 `hello.cpp`) 編譯至物件模組。然後會將物件模組以與目前檔案相同的名稱 (例如 `hello`) 連結至程式。在此處，相同的命令為 `g++ -o hello hello.cpp`。

```
{
  "cmd": [ "g++", "-o", "$file_base_name", "$file_name" ],
  "info": "Compiling $file_name and linking to $file_base_name...",
  "selector": "source.cpp"
}
```

再舉另一個例子，下列名為 `Python.run` 的執行器檔案會定義一個執行器，該執行器會使用所提供的任何引數來使用 Python 執行目前檔案。例如，如果目前檔案名為 `hello.py`，且己提供 `5` 和 `9` 引數，則相同的命令為 `python hello.py 5 9`。

```
{
  "cmd": [ "python", "$file_name", "$args" ],
  "info": "Running $file_name...",
  "selector": "source.py"
}
```

最後，下列名為 `Print Run Variables.run` 的執行器檔案會定義一個執行器，該執行器在輸出每個可用變數的值之後即停止。

```
{
  "info": "file_path = $file_path, file = $file, args = $args, file_name = $file_name, file_extension = $file_extension, file_base_name = $file_base_name, packages = $packages, project = $project, project_path = $project_path, project_name = $project_name, project_extension = $project_extension, project_base_name = $project_base_name, hostname = $hostname, hostname_path = $hostname_path, url = $url, port = $port, ip = $ip"
}
```