Định cấu hình mã Visual Studio

Visual Studio Code (VSCode) là trình chỉnh sửa mã miễn phí, chạy trên hệ điều hành macOS, Linux và Windows. Nó có hỗ trợ công cụ tinh tế hỗ trợ phát triển Python & C++, gỡ lỗi trực quan, tích hợp với git và nhiều tính năng thú vị khác. Nhờ tính dễ sử dụng và quản lý tiện ích mở rộng, đây là một trình soạn thảo tuyệt vời để phát triển TensorFlow IO. Tuy nhiên, cần phải nỗ lực một chút để cấu hình nó đúng cách. Vì cấu hình VSCode rất linh hoạt nên nó cho phép các nhà phát triển biên dịch dự án bằng cách sử dụng bazel và chạy mã trong trình gỡ lỗi Python và C++. Việc thiết lập công cụ cơ bản có thể khác nhau tùy theo hệ điều hành, nhưng cách tiếp cận cấu hình phải tương tự nhau.

Tiện ích mở rộng

Để cài đặt tiện ích mở rộng, hãy nhấp vào biểu tượng chế độ xem tiện ích mở rộng (Tiện ích mở rộng) trên Thanh bên hoặc sử dụng phím tắt Ctrl+Shift+X. Sau đó tìm kiếm từ khóa bên dưới.

  • C/C++ - Phần mở rộng C++ chính thức của Microsoft
  • Python - Tiện ích mở rộng Python chính thức của Microsoft
  • Gói mở rộng Python - một tiện ích mở rộng hữu ích khác để phát triển Python

Biên soạn dự án

TensorFlow IO được biên dịch bằng lệnh xây dựng bazel:

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

Xem tệp README của dự án để biết chi tiết về cách thiết lập môi trường phát triển trong Ubuntu. Cờ --compilation_mode dbg ở đây cho biết rằng tệp nhị phân được tạo ra phải có ký hiệu gỡ lỗi. Khi bạn có thể biên dịch dự án từ dòng lệnh, bạn cũng có thể định cấu hình VSCode để có thể gọi lệnh tương tự.

Mở View->Command Pallete ( Ctrl+Shift+P ) và bắt đầu nhập: "Nhiệm vụ: Định cấu hình tác vụ xây dựng". Nếu bạn thực hiện việc này lần đầu tiên, trình soạn thảo sẽ đề xuất tạo tệp task.json. Khi bạn đã có nó, hãy dán json sau:

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

Bây giờ, bạn có thể nhấn Ctrl+Shift+B và VSCode sẽ sử dụng lệnh trên để xây dựng dự án. Nó sử dụng cửa sổ terminal riêng, nơi tất cả các liên kết đều có thể nhấp vào được. Vì vậy, khi xảy ra lỗi biên dịch, bạn mở tệp tương ứng và điều hướng đến dòng bằng cách chỉ cần nhấp vào liên kết trong cửa sổ terminal.

Gỡ lỗi dự án

Việc gỡ lỗi mã Python không hề đơn giản, hãy làm theo tài liệu chính thức để tìm ra cách định cấu hình VSCode để kích hoạt mã đó: https://code.visualstudio.com/docs/python/debugging

Tuy nhiên, việc gỡ lỗi mã C++ yêu cầu phải cài đặt GDB trên hệ thống của bạn. Nếu bạn có tập lệnh python bq_sample_read.py sử dụng thư viện tensorflow-io và thường được thực thi theo cách sau:

python3 bq_sample_read.py --gcp_project_id=...

Bạn có thể thực thi nó trong GDB bằng cách sử dụng như sau:

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

Nếu ứng dụng gặp sự cố trong giai đoạn mã C++, bạn có thể chạy backtrace trong bảng điều khiển GDB để lấy dấu vết lỗi.

VSCode cũng có hỗ trợ trình gỡ lỗi GDB. Nó cho phép thêm các điểm dừng, quan sát giá trị của các biến và duyệt qua mã theo cách từng bước. Để thêm cấu hình gỡ lỗi, hãy nhấn biểu tượng Chế độ xem gỡ lỗi (Debug) trên Thanh bên hoặc sử dụng phím tắt Ctrl+Shift+D . Tại đây, nhấn mũi tên xuống nhỏ bên cạnh nút phát và chọn "Thêm cấu hình...". Bây giờ nó sẽ tạo một tệp launch.json , vui lòng thêm cấu hình sau:

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

Nếu mọi thứ được cấu hình chính xác, bạn sẽ có thể thực hiện Chạy -> Bắt đầu gỡ lỗi ( F5 ) hoặc Chạy -> Chạy mà không gỡ lỗi ( Ctrl + F5 ). Điều này sẽ chạy mã của bạn trong trình gỡ lỗi:

Trình gỡ lỗi VSCode

Để đơn giản hóa hơn nữa trải nghiệm gỡ lỗi, bạn có thể định cấu hình GDB để bỏ qua các thư viện C++ tiêu chuẩn. Điều này cho phép bạn bỏ qua mã mà bạn không quan tâm. Để thực hiện việc này, hãy tạo tệp ~/.gdbinit với nội dung sau:

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

Định dạng tập tin

Bạn luôn có thể định dạng lại tệp C++ hoặc Python bằng cách Nhấp chuột phải -> Định dạng Tài liệu ( Ctrl + Shift + I ), nhưng VSCode sử dụng quy ước kiểu khác. May mắn thay, nó rất dễ thay đổi.

Để biết định dạng Python, hãy xem https://donjayamanne.github.io/pythonVSCodeDocs/docs/formatting/

Để định dạng C++, hãy làm như sau:

  • Đi tới Tùy chọn -> Cài đặt
  • Tìm kiếm "C_Cpp.clang_format_fallbackStyle"
  • Sửa đổi trực tiếp file:setting.json bằng cách thêm nội dung sau
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google}"