Настройка кода Visual Studio

Visual Studio Code (VSCode) — бесплатный редактор кода, работающий в операционных системах macOS, Linux и Windows. Он имеет элегантную поддержку инструментов, которая поддерживает разработку Python и C++, визуальную отладку, интеграцию с git и многие другие интересные функции. Благодаря простоте использования и управлению расширениями это отличный редактор для разработки TensorFlow IO. Однако для правильной настройки необходимы некоторые усилия. Поскольку конфигурация VSCode очень гибкая, она позволяет разработчикам компилировать проект с использованием bazel и запускать код в отладчиках Python и C++. Настройка базового инструмента может отличаться в зависимости от операционной системы, но подход к настройке должен быть одинаковым.

Расширения

Чтобы установить расширение, щелкните значок просмотра расширений (Расширения) на боковой панели или используйте сочетание клавиш Ctrl+Shift+X. Затем найдите ключевое слово ниже.

  • C/C++ — официальное расширение C++ от Microsoft.
  • Python — официальное расширение Python от Microsoft.
  • Python Extension Pack — еще одно полезное расширение для разработки на Python.

Составление проектов

TensorFlow IO компилируется с помощью команды сборки bazel:

bazel build -s --verbose_failures --compilation_mode dbg //tensorflow_io/...

Подробную информацию о настройке среды разработки в Ubuntu см. в файле README проекта. Флаг dbg --compilation_mode указывает, что создаваемый двоичный файл должен содержать символы отладки. Как только вы сможете скомпилировать проект из командной строки, вы также можете настроить VSCode для вызова той же команды.

Откройте «Вид->Палитра команд» ( Ctrl+Shift+P ) и начните вводить: «Задачи: настроить задачу сборки». Если вы делаете это впервые, редактор предложит создать файл 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://code.visualstudio.com/docs/python/debugging .

Однако для отладки кода C++ требуется, чтобы в вашей системе был установлен GDB . Если у вас есть скрипт Python bq_sample_read.py , который использует библиотеку tensorflow-io и обычно выполняется следующим образом:

python3 bq_sample_read.py --gcp_project_id=...

Вы можете выполнить его под GDB, используя следующее:

gdb -ex r --args python3 bq_sample_read.py --gcp_project_id=...

Если приложение выходит из строя на этапе кода C++, вы можете запустить backtrace в консоли GDB, чтобы получить трассировку стека ошибки.

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 ). Это запустит ваш код в отладчике:

Отладчик VSCode

Чтобы еще больше упростить процесс отладки, вы можете настроить GDB на пропуск стандартных библиотек C++. Это позволяет вам игнорировать код, который вам не нужен. Для этого создайте файл ~/.gdbinit следующего содержания:

skip -gfi /usr/include/c++/*/*/*
skip -gfi /usr/include/c++/*/*
skip -gfi /usr/include/c++/*

Форматирование файлов

Вы всегда можете переформатировать файл C++ или Python, щелкнув правой кнопкой мыши -> Форматировать документ ( Ctrl + Shift + I ), но 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}"