การกำหนดค่า Visual Studio Code

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 build:

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

ดูไฟล์โปรเจ็กต์ README สำหรับรายละเอียดเกี่ยวกับวิธีตั้งค่าสภาพแวดล้อมการพัฒนาใน Ubuntu --compilation_mode dbg flag ที่นี่บ่งชี้ว่าไบนารีที่สร้างขึ้นควรมีสัญลักษณ์การดีบัก เมื่อคุณสามารถคอมไพล์โปรเจ็กต์จากบรรทัดคำสั่งแล้ว คุณยังสามารถกำหนดค่า VSCode เพื่อให้สามารถเรียกใช้คำสั่งเดียวกันได้

เปิด View->Command Palette ( Ctrl+Shift+P ) และเริ่มพิมพ์: "งาน: กำหนดค่างาน Build" หากคุณกำลังทำเช่นนี้เป็นครั้งแรก ตัวแก้ไขจะแนะนำให้สร้างไฟล์ 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 บนระบบของคุณ หากคุณมีสคริปต์ bq_sample_read.py python ที่ใช้ไลบรารี 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 อนุญาตให้เพิ่มเบรกพอยต์ สังเกตค่าของตัวแปร และอ่านโค้ดทีละขั้นตอน หากต้องการเพิ่มการกำหนดค่าการแก้ไขข้อบกพร่อง ให้กดไอคอน Debug View (Debug) บนแถบด้านข้าง หรือใช้ทางลัด 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
        }
    ]
}

หากทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง คุณควรจะสามารถทำได้ Run -> Start Debugging ( F5 ) หรือ Run -> Run Without Debugging ( 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}"