Configuración del código de Visual Studio

Visual Studio Code (VSCode) es un editor de código gratuito que se ejecuta en los sistemas operativos macOS, Linux y Windows. Tiene soporte de herramientas elegante que admite el desarrollo de Python y C++, depuración visual, integración con git y muchas más características interesantes. Debido a su facilidad de uso y gestión de extensiones, es un excelente editor para el desarrollo de TensorFlow IO. Sin embargo, es necesario algo de esfuerzo para configurarlo correctamente. Dado que la configuración de VSCode es muy flexible, permite a los desarrolladores compilar proyectos usando bazel y ejecutar el código en los depuradores de Python y C++. La configuración de la herramienta básica puede diferir según los sistemas operativos, pero el enfoque de configuración debe ser similar.

Extensiones

Para instalar una extensión, haga clic en el icono de vista de extensiones (Extensiones) en la barra lateral o use el acceso directo Ctrl+Shift+X. Luego busque la palabra clave a continuación.

Compilando proyectos

TensorFlow IO se compila mediante el comando de compilación de bazel:

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

Consulte el archivo README del proyecto para obtener detalles sobre cómo configurar el entorno de desarrollo en Ubuntu. El indicador --compilation_mode dbg aquí indica que el binario producido debe tener símbolos de depuración. Una vez que pueda compilar el proyecto desde la línea de comandos, también puede configurar VSCode para poder invocar el mismo comando.

Abra Ver->Paleta de comandos ( Ctrl+Shift+P ) y comience a escribir: "Tareas: Configurar tarea de compilación". Si está haciendo esto por primera vez, el editor le sugerirá crear el archivo task.json. Una vez que lo tengas pega el siguiente 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": []
        }
    ]
}

Ahora, puede presionar Ctrl+Shift+B y VSCode usará el comando anterior para construir el proyecto. Utiliza su propia ventana de terminal, donde se puede hacer clic en todos los enlaces. Entonces, cuando ocurre un error de compilación, abre el archivo correspondiente y navega hasta la línea simplemente haciendo clic en el enlace en la ventana del terminal.

Proyectos de depuración

Depurar el código Python es trivial, siga la documentación oficial para descubrir cómo configurar VSCode para habilitarlo: https://code.visualstudio.com/docs/python/debugging

Sin embargo, la depuración del código C++ requiere que GDB esté instalado en su sistema. Si tiene un script de Python bq_sample_read.py que usa la biblioteca tensorflow-io y normalmente se ejecuta de la siguiente manera:

python3 bq_sample_read.py --gcp_project_id=...

Puede ejecutarlo bajo GDB usando lo siguiente:

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

Si la aplicación falla en la fase de código C++, puede ejecutar backtrace en la consola GDB para obtener el seguimiento de la pila del error.

VSCode también admite el depurador GDB. Permite agregar puntos de interrupción, observar valores de variables y recorrer el código paso a paso. Para agregar una configuración de depuración, presione el ícono Vista de depuración (Depurar) en la barra lateral o use el acceso directo Ctrl+Shift+D . Aquí, presione la pequeña flecha hacia abajo al lado del botón de reproducción y seleccione "Agregar configuración...". Ahora creará un archivo launch.json , al cual agregue la siguiente configuración:

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

Si todo está configurado correctamente, debería poder ejecutar Ejecutar -> Iniciar depuración ( F5 ) o Ejecutar -> Ejecutar sin depurar ( Ctrl + F5 ). Esto ejecutará su código en el depurador:

Depurador de VSCode

Para simplificar aún más la experiencia de depuración, puede configurar GDB para omitir las bibliotecas estándar de C++. Esto le permite ignorar el código que no le interesa. Para hacer esto, cree un archivo ~/.gdbinit con el siguiente contenido:

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

Formatear archivos

Siempre puede reformatear un archivo C++ o Python haciendo clic derecho -> Formatear documento ( Ctrl + Shift + I ), pero VSCode usa una convención de estilo diferente. Por suerte, es fácil de cambiar.

Para formatear Python, consulte https://donjayamane.github.io/pythonVSCodeDocs/docs/formatting/

Para formatear C++, haga lo siguiente:

  • Vaya a Preferencias -> Configuración
  • Busque "C_Cpp.clang_format_fallbackStyle"
  • Modifique el file:setting.json directamente agregando el siguiente contenido
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google}"