Konfigurowanie kodu Visual Studio

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:

Debuger VSCode

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}"