Visual Studio Code (VSCode) to darmowy edytor kodu, który działa w systemach operacyjnych macOS, Linux i Windows. Posiada elegancką obsługę narzędzi, która obsługuje rozwój Pythona i C++, debugowanie wizualne, integrację z git i wiele innych interesujących funkcji. Dzięki łatwości obsługi i zarządzaniu rozszerzeniami jest doskonałym edytorem do programowania TensorFlow IO. Jednak jego prawidłowe skonfigurowanie wymaga pewnego wysiłku. Ponieważ konfiguracja VSCode jest bardzo elastyczna, pozwala programistom kompilować projekt przy użyciu bazela i uruchamiać kod w debuggerach Pythona i C++. Konfiguracja narzędzia podstawowego może się różnić w zależności od systemu operacyjnego, ale podejście do konfiguracji powinno być podobne.
Rozszerzenia
Aby zainstalować rozszerzenie, kliknij ikonę widoku rozszerzeń (Rozszerzenia) na pasku bocznym lub użyj skrótu Ctrl+Shift+X. Następnie wyszukaj poniżej słowo kluczowe.
- C/C++ — oficjalne rozszerzenie C++ firmy Microsoft
- Python — oficjalne rozszerzenie Pythona od firmy Microsoft
- Pakiet rozszerzeń Pythona - kolejne przydatne rozszerzenie do programowania w języku Python
Kompilowanie projektów
TensorFlow IO jest kompilowany przy użyciu polecenia bazel build:
bazel build -s --verbose_failures --compilation_mode dbg //tensorflow_io/...
Zobacz plik README projektu, aby uzyskać szczegółowe informacje na temat konfiguracji środowiska programistycznego w Ubuntu. --compilation_mode dbg flaga wskazuje, że utworzony plik binarny powinien mieć symbole debugowania. Gdy już będziesz mógł skompilować projekt z wiersza poleceń, możesz także skonfigurować VSCode, aby móc wywoływać to samo polecenie.
Otwórz Widok->Command Pallete ( Ctrl+Shift+P ) i zacznij pisać: „Zadania: Skonfiguruj zadanie budowania”. Jeśli robisz to po raz pierwszy, edytor zasugeruje utworzenie pliku task.json. Gdy już to zrobisz, wklej następujący plik 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": []
}
]
}
Teraz możesz nacisnąć Ctrl+Shift+B , a VSCode użyje powyższego polecenia do zbudowania projektu. Korzysta z własnego okna terminala, w którym można kliknąć wszystkie linki. Jeśli więc wystąpi błąd kompilacji, otwórz odpowiedni plik i przejdź do wiersza, klikając łącze w oknie terminala.
Debugowanie projektów
Debugowanie kodu Pythona jest banalne, postępuj zgodnie z oficjalną dokumentacją, aby dowiedzieć się, jak skonfigurować VSCode, aby to umożliwić: https://code.visualstudio.com/docs/python/debugging
Jednak debugowanie kodu C++ wymaga zainstalowania w systemie GDB . Jeśli masz skrypt Pythona bq_sample_read.py
, który korzysta z biblioteki tensorflow-io
i zwykle jest wykonywany w następujący sposób:
python3 bq_sample_read.py --gcp_project_id=...
Możesz go wykonać w GDB, używając następujących poleceń:
gdb -ex r --args python3 bq_sample_read.py --gcp_project_id=...
Jeśli aplikacja ulegnie awarii w fazie kodu C++, możesz uruchomić backtrace
w konsoli GDB, aby uzyskać ślad stosu błędu.
VSCode obsługuje także debuger GDB. Pozwala dodawać punkty przerwania, obserwować wartości zmiennych i krok po kroku przechodzić przez kod. Aby dodać konfigurację debugowania, naciśnij ikonę Widok debugowania (Debuguj) na pasku bocznym lub użyj skrótu Ctrl+Shift+D . W tym miejscu naciśnij małą strzałkę w dół obok przycisku odtwarzania i wybierz „Dodaj konfigurację…”. Utworzy teraz plik launch.json
, do którego dodaj następującą konfigurację:
{
"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
}
]
}
Jeśli wszystko jest poprawnie skonfigurowane, powinieneś móc wykonać polecenie Uruchom -> Rozpocznij debugowanie ( F5 ) lub Uruchom -> Uruchom bez debugowania ( Ctrl + F5 ). Spowoduje to uruchomienie kodu w debugerze:
Aby jeszcze bardziej uprościć debugowanie, możesz skonfigurować GDB tak, aby pomijał standardowe biblioteki C++. Dzięki temu możesz zignorować kod, na którym Ci nie zależy. W tym celu utwórz plik ~/.gdbinit
o następującej zawartości:
skip -gfi /usr/include/c++/*/*/*
skip -gfi /usr/include/c++/*/*
skip -gfi /usr/include/c++/*
Formatowanie plików
Zawsze możesz sformatować plik C++ lub Pythona , klikając prawym przyciskiem myszy -> Formatuj dokument ( Ctrl + Shift + I ), ale VSCode używa innej konwencji stylu. Na szczęście łatwo to zmienić.
Aby zapoznać się z formatowaniem w języku Python, zobacz https://donjayamanne.github.io/pythonVSCodeDocs/docs/formatting/
W przypadku formatowania C++ wykonaj następujące czynności:
- Przejdź do Preferencje -> Ustawienia
- Wyszukaj „C_Cpp.clang_format_fallbackStyle”
- Zmodyfikuj bezpośrednio
file:setting.json
dodając następującą zawartość
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google}"