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)。这将在调试器下运行你的代码
为了进一步简化调试体验,你可以配置 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}"