Visual Studio Code (VSCode) 是一款免費程式碼編輯器,可在 macOS、Linux 和 Windows 作業系統上執行。它提供完善的工具支援,可支援 Python 和 C++ 開發、視覺化偵錯、與 Git 整合以及許多其他有趣的功能。由於易於使用和擴充功能管理,它是 TensorFlow IO 開發的絕佳編輯器。但是,需要付出一些努力才能正確設定它。由於 VSCode 設定非常彈性,開發人員可以使用 bazel 編譯專案,並在 Python 和 C++ 偵錯工具下執行程式碼。基本工具設定可能因作業系統而異,但設定方法應該類似。
擴充功能
若要安裝擴充功能,請按一下側邊欄上的擴充功能檢視圖示 (擴充功能),或使用快速鍵 Ctrl+Shift+X。然後搜尋以下關鍵字。
- C/C++ - Microsoft 的官方 C++ 擴充功能
- Python - Microsoft 的官方 Python 擴充功能
- Python Extension Pack - 另一個適用於 Python 開發的實用擴充功能
編譯專案
TensorFlow IO 是使用 bazel build 命令編譯的
bazel build -s --verbose_failures --compilation_mode dbg //tensorflow_io/...
如需如何在 Ubuntu 中設定開發環境的詳細資訊,請參閱專案 README 檔案。--compilation_mode dbg 旗標表示產生的二進位檔應包含偵錯符號。一旦您可以從命令列編譯專案,您也可以設定 VSCode 以能夠叫用相同的命令。
開啟「檢視」->「命令面板」(Ctrl+Shift+P) 並開始輸入:「Tasks: Configure Build Task」。如果您是第一次執行此操作,編輯器會建議建立 tasks.json 檔案。建立檔案後,貼上以下 json
{
"version": "2.0.0",
"tasks": [
{
"label": "Build TF.IO (Debug)",
"type": "shell",
"command": "bazel build -s --verbose_failures --compilation_mode dbg //tensorflow_io/...",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
}
]
}
現在,您可以按下 Ctrl+Shift+B,VSCode 將使用上述命令來建置專案。它會使用自己的終端機視窗,其中的所有連結都可點擊。因此,當發生編譯錯誤時,您可以開啟對應的檔案,然後只需按一下終端機視窗中的連結即可導覽至該行。
偵錯專案
偵錯 Python 程式碼非常簡單,請依照官方文件瞭解如何設定 VSCode 以啟用偵錯:https://vscode.dev.org.tw/docs/python/debugging
但是,偵錯 C++ 程式碼需要您的系統上安裝 GDB。如果您有使用 tensorflow-io
程式庫的 bq_sample_read.py
python 腳本,且通常以下列方式執行
python3 bq_sample_read.py --gcp_project_id=...
您可以使用以下命令在 GDB 下執行它
gdb -ex r --args python3 bq_sample_read.py --gcp_project_id=...
如果應用程式在 C++ 程式碼階段當機,您可以在 GDB 主控台中執行 backtrace
以取得錯誤的堆疊追蹤。
VSCode 也支援 GDB 偵錯工具。它允許新增中斷點、觀察變數值以及逐步執行程式碼。若要新增偵錯設定,請按一下側邊欄上的「偵錯檢視」圖示 (偵錯),或使用快速鍵 Ctrl+Shift+D。在這裡,按一下播放按鈕旁邊的小向下箭頭,然後選取「新增設定...」。現在它會建立一個 launch.json
檔案,請將以下設定新增至該檔案
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/usr/bin/python3",
"args": ["bq_sample_read.py", "--gcp_project_id=..."],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [
{
/* path to your bazel-bin folder */
"name": "TFIO_DATAPATH",
"value": "/usr/local/google/home/io/bazel-bin"
},
{
/* other env variables to use */
"name": "GOOGLE_APPLICATION_CREDENTIALS",
"value": "..."
}
],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
如果一切設定正確,您應該能夠執行「執行」->「開始偵錯」(F5) 或「執行」->「不偵錯執行」(Ctrl + F5)。這將在偵錯工具下執行您的程式碼
為了進一步簡化偵錯體驗,您可以設定 GDB 以略過標準 C++ 程式庫。這可讓您忽略您不關心的程式碼。若要執行此操作,請建立一個包含以下內容的 ~/.gdbinit
檔案
skip -gfi /usr/include/c++/*/*/*
skip -gfi /usr/include/c++/*/*
skip -gfi /usr/include/c++/*
格式化檔案
您可以隨時透過「按一下滑鼠右鍵」->「格式化文件」(Ctrl + Shift + I) 重新格式化 C++ 或 Python 檔案,但 VSCode 使用不同的樣式慣例。幸運的是,這很容易變更。
如需 Python 格式化,請參閱 https://donjayamanne.github.io/pythonVSCodeDocs/docs/formatting/
如需 C++ 格式化,請執行以下操作
- 前往「偏好設定」->「設定」
- 搜尋 "C_Cpp.clang_format_fallbackStyle"
- 直接修改
file:setting.json
檔案,方法是新增以下內容
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google}"