配置 Visual Studio Code

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 扩展包 - 另一个有用的 Python 开发扩展

编译项目

TensorFlow IO 使用 bazel build 命令编译

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

请参阅项目 自述文件,了解如何在 Ubuntu 中设置开发环境的详细信息。此处的 --compilation_mode dbg 标志表示生成的可执行文件应具有调试符号。一旦可以从命令行编译项目,还可以配置 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://vscode.js.cn/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)。这将在调试器下运行你的代码

VSCode debugger

为了进一步简化调试体验,你可以配置 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}"