การดีบักที่มีประสิทธิภาพและคุณภาพของโค้ดเป็นแนวคิดที่แยกกันไม่ออกในการพัฒนาซอฟต์แวร์ ฟังก์ชันการแก้ไขข้อบกพร่องของ Visual Studio (VS) Code ถูกควบคุมโดยไฟล์ launch.json เป็นหลัก ไฟล์นี้ช่วยให้นักพัฒนาสามารถกำหนดค่าและจัดการการตั้งค่าการดีบักได้ตามการมองเห็น

บทความนี้จะแนะนำคุณตลอดการเปิดและจัดการไฟล์ launch.json เพื่อการดีบักที่เหมาะสมที่สุด
เปิด launch.json ใน Visual Studio Code
ในการกำหนดค่าและจัดการการตั้งค่าการดีบัก VS Code คุณจะต้องเข้าถึงไฟล์ launch.json ไฟล์นี้มีบทบาทสำคัญในการปรับแต่งการดีบัก
- เปิดรหัส Visual Studio
- กด Ctrl + Shift + P เพื่อเปิด Command Palette
- พิมพ์ “Open launch.json” ใน Command Palette แล้วกด “Enter” นี่ควรเปิดไฟล์ launch.json ให้คุณ
- หากไฟล์ launch.json ไม่เปิดขึ้น ให้ตรวจสอบว่ามีโฟลเดอร์ '.vscode' อยู่ในโฟลเดอร์รูทของโปรเจ็กต์
- หากไม่มี ให้สร้างโฟลเดอร์ใหม่ชื่อ “.vscode” ภายในโฟลเดอร์ User ของคุณ
- สร้างไฟล์ “launch.json” ใหม่และวางไว้ในโฟลเดอร์นี้
ไฟล์ launch.json จะพร้อมกำหนดค่าหลังจากเปิดใช้งาน
ภาพรวมโครงสร้าง Launch.json
launch.json แสดงส่วน 'เวอร์ชัน' และ 'การกำหนดค่า' ส่วน 'การกำหนดค่า' เป็นอาร์เรย์ที่มีตัวเลือกการแก้ไขจุดบกพร่องต่างๆ ซึ่งคุณจะใช้เพื่อกำหนดค่าโครงร่างการแก้ไขจุดบกพร่องของคุณ
แต่ละวัตถุในอาร์เรย์ 'การกำหนดค่า' แสดงถึงสถานการณ์การดีบัก อ็อบเจ็กต์เหล่านี้มีคุณสมบัติที่กำหนดสภาพแวดล้อมการดีบัก เช่น ภาษา โปรแกรม และการตั้งค่าดีบักเกอร์
คุณสมบัติทั่วไปบางอย่างที่คุณจะพบในการกำหนดค่า launch.json ได้แก่:
- “ชื่อ” – ชื่อที่อ่านง่ายสำหรับการกำหนดค่าเพื่อระบุในเมนูแบบเลื่อนลง
- “type” – ระบุประเภทของดีบักเกอร์ (เช่น “node,” “python” หรือ “cppvsdbg”)
- “คำขอ” – กำหนดประเภทของคำขอ ไม่ว่าจะเป็น “เปิดใช้” (เพื่อเริ่มอินสแตนซ์ใหม่) หรือ “แนบ” (เพื่อแนบดีบักเกอร์กับกระบวนการที่มีอยู่)
- “โปรแกรม” – เส้นทางไฟล์สำหรับไฟล์ที่คุณต้องการดีบัก
- “args” – อาร์เรย์ของอาร์กิวเมนต์บรรทัดคำสั่งเพื่อส่งไปยังโปรแกรมระหว่างการดีบัก
- “preLaunchTask” – งานที่ต้องทำก่อนเริ่มดีบักเกอร์
การทำความเข้าใจโครงสร้างไฟล์ launch.json ช่วยให้คุณทราบว่าตัวเลือกใดควรเปลี่ยนและตัวเลือกใดควรปล่อยไว้ในขณะที่ปรับแต่งสภาพแวดล้อมการดีบักของคุณ
การกำหนดการตั้งค่าการเปิดใช้งานสำหรับภาษาต่างๆ
ขั้นตอนในการกำหนดการตั้งค่าการเรียกใช้อาจแตกต่างกันเล็กน้อยขึ้นอยู่กับภาษา ต่อไปนี้เป็นขั้นตอนสำหรับภาษายอดนิยมหลายภาษา
JavaScript และ TypeScript
- สร้างไฟล์ launch.json ใหม่และกำหนดค่าคุณสมบัติ 'type' เป็น 'node' สำหรับ JavaScript หรือ 'pwa-node' สำหรับ TypeScript
- ตั้งค่าคุณสมบัติ 'คำขอ' เป็น 'เปิด' หรือ 'แนบ'
- คุณควรระบุไฟล์จุดเริ่มต้นโดยใช้คุณสมบัติ 'โปรแกรม'
หลาม
- ติดตั้งตัวแปล Python และส่วนขยายสำหรับ Visual Studio Code
- ตั้งค่าคุณสมบัติ 'type' เป็น 'python' ในไฟล์ launch.json ใหม่
- กำหนดค่าคุณสมบัติ 'คำขอ' เป็น 'เปิดใช้' หรือ 'แนบ'
- ระบุไฟล์ Python เพื่อเรียกใช้โดยใช้คุณสมบัติ 'โปรแกรม'
- คุณอาจต้องตั้งค่าคุณสมบัติ 'pythonPath' เพิ่มเติมเป็นเส้นทางของตัวแปล Python หากไม่ได้อยู่ในตำแหน่งเริ่มต้น
C# และ .NET Core
- ติดตั้งส่วนขยาย C# สำหรับ Visual Studio Code
- ในไฟล์ launch.json ใหม่ ให้ตั้งค่าคุณสมบัติ 'type' เป็น 'coreclr' สำหรับ .NET Core หรือ 'clr' สำหรับ .NET Framework
- กำหนดค่าคุณสมบัติ 'คำขอ' เป็น 'เปิดใช้' หรือ 'แนบ'
- ระบุไฟล์จุดเริ่มต้นโดยใช้คุณสมบัติ 'โปรแกรม'
- ตั้งค่าคุณสมบัติ 'cwd' เป็นไดเร็กทอรีการทำงานของโปรเจ็กต์ปัจจุบันหากจำเป็น
ชวา
- ติดตั้ง Java Extension Pack
- สร้างไฟล์ launch.json ใหม่ และตั้งค่าคุณสมบัติ 'type' เป็น 'java'
- กำหนดค่าคุณสมบัติ 'คำขอ' เป็น 'เปิดใช้' หรือ 'แนบ'
- ระบุคลาสหลักด้วยคุณสมบัติ 'mainClass'
- ตั้งค่าคุณสมบัติ “projectName” เป็นชื่อโปรเจ็กต์ Java ของคุณ
- กำหนดค่าคุณสมบัติ “classpath” เพื่อรวมไลบรารี Java ที่คุณจะใช้ระหว่างการพัฒนา Java
การดีบักสูตรการกำหนดค่า
ส่วนต่อไปนี้ครอบคลุมสูตรการกำหนดค่าการดีบักต่างๆ
วิธีแคปหน้าจอยาวๆ
การแนบดีบักเกอร์กับกระบวนการทำงาน
ในการแนบดีบักเกอร์กับกระบวนการที่กำลังทำงานอยู่:
- ตั้งค่าคุณสมบัติ 'คำขอ' เป็น 'แนบ'
- เลือก ID กระบวนการหรือตัวกรองเพื่อค้นหากระบวนการที่จะดีบัก
การดีบักแอปพลิเคชันระยะไกล
สำหรับการดีบักแอปพลิเคชันระยะไกล:
- ใช้ประเภท 'ระยะไกล'
- ระบุที่อยู่ พอร์ต และข้อมูลการรับรองความถูกต้องของโฮสต์เพื่อสร้างการเชื่อมต่อ
การทดสอบหน่วยการดีบักและชุดการทดสอบ
เมื่อแก้ไขการทดสอบหน่วยและชุดทดสอบ:
- ใช้การกำหนดค่าที่มีเฟรมเวิร์กการทดสอบและการตั้งค่าเพื่อดีบักการทดสอบหน่วยและชุดทดสอบ
- กำหนดชุดทดสอบหรือไฟล์ทดสอบแต่ละไฟล์ในคุณสมบัติ 'program' หรือ 'args' สำหรับการกำหนดเป้าหมายการทดสอบเฉพาะ
ส่งผ่านตัวแปรสภาพแวดล้อม
คุณสมบัติ “env” ใน launch.json สามารถส่งผ่านตัวแปรสภาพแวดล้อมไปยังแอปพลิเคชันของคุณในขณะทำการดีบัก คุณสมบัตินี้เป็นวัตถุที่มีคู่ของคีย์-ค่าสำหรับตัวแปรสภาพแวดล้อมที่คุณต้องการตั้งค่า
การดีบักขั้นสูง
มาสำรวจเทคนิคการดีบักขั้นสูงสำหรับผู้ใช้ที่ต้องการบีบพลังจากไฟล์ดีบั๊กเพิ่มขึ้นอีกเล็กน้อย
เบรกพอยต์แบบมีเงื่อนไขและล็อกพอยต์
เบรกพอยต์แบบมีเงื่อนไขและจุดล็อกพอยต์จะปรับปรุงการดีบักโดยการหยุดชั่วคราวหรือบันทึกข้อความภายใต้เงื่อนไขเฉพาะเท่านั้น หากต้องการใช้:
- คลิกขวาที่หมายเลขบรรทัดที่คุณต้องการกำหนดจุดพักหรือจุดตรวจสอบ
- เลือก “เพิ่มจุดพักแบบมีเงื่อนไข” หรือ “เพิ่มจุดตรวจสอบ”
- ป้อนเงื่อนไขหรือข้อความเพื่อเรียกการดำเนินการ
แผนที่แหล่งที่มา
ซอร์สแมปช่วยให้คุณสามารถดีบักโค้ดที่ถูกแปลงหรือย่อขนาด
- ตั้งค่าคุณสมบัติ “sourceMap” เป็น “จริง” ในการกำหนดค่า launch.json เพื่อใช้ซอร์สแมป
- ตรวจสอบให้แน่ใจว่ากระบวนการสร้างของคุณสร้างซอร์สแมปและโค้ดที่แปลงแล้ว
การรวมดีบักเกอร์ภายนอก
คุณสามารถรวมดีบักเกอร์และเครื่องมือภายนอก เช่น gdb หรือ lldb เข้ากับ VS Code ได้หากต้องการ
- ติดตั้งส่วนขยายดีบักเกอร์ที่เลือก
- กำหนดการตั้งค่าของดีบักเกอร์ในไฟล์ launch.json
การดีบักแอพพลิเคชั่นแบบมัลติเธรด
เมื่อทำการดีบักแอพพลิเคชั่นแบบมัลติเธรด คุณสามารถควบคุมการดำเนินการของแต่ละเธรดได้
- ใช้มุมมอง 'เธรด' ในแถบด้านข้างดีบักเพื่อจัดการเธรดระหว่างเซสชันดีบัก
- คุณสามารถหยุดชั่วคราว ดำเนินการต่อ หรือทำตามขั้นตอนการดำเนินการโค้ดสำหรับแต่ละเธรดแยกกัน
การดีบักหลายเป้าหมาย
การกำหนดค่าการเปิดตัวแบบผสมช่วยให้สามารถแก้ไขข้อบกพร่องของเป้าหมายหลายรายการพร้อมกันได้ หากคุณต้องการใช้ประโยชน์จากคุณสมบัตินี้ ให้เพิ่มอาร์เรย์ 'สารประกอบ' พร้อมชื่อการกำหนดค่าเพื่อจัดกลุ่มเข้าด้วยกัน เรียกใช้โดยเลือกชื่อการกำหนดค่าแบบผสมจากเมนูดร็อปดาวน์ Debug
วิธีเปิดเอกสารคำบนโทรศัพท์ Android
กำหนดค่าการเรียกใช้งานหลายรายการที่กำหนดเป้าหมายบริการ ฟังก์ชัน หรือจุดสิ้นสุดที่แตกต่างกันเพื่อดีบักไมโครเซอร์วิสและแอปพลิเคชันแบบไร้เซิร์ฟเวอร์ ใช้การกำหนดค่าการเปิดตัวแบบผสมเพื่อเรียกใช้เป้าหมายเหล่านี้ร่วมกัน
สำหรับพื้นที่ทำงานหลายรูท ให้สร้างไฟล์ launch.json แยกต่างหากสำหรับแต่ละโฟลเดอร์ กำหนดการตั้งค่าการเรียกใช้สำหรับแต่ละโฟลเดอร์รูททีละรายการเพื่อดีบักโปรเจ็กต์แยกกันหรือพร้อมกันโดยใช้สารประกอบ
การแก้ไขปัญหา launch.json ทั่วไป
ในบางครั้ง การดีบักมีแนวโน้มที่จะเกิดชุดข้อบกพร่องของมันเอง มาดูปัญหาทั่วไปสองสามข้อและวิธีแก้ปัญหากัน
ข้อผิดพลาดในการตรวจสอบสคีมา
ข้อผิดพลาดในการตรวจสอบ Schema เกิดขึ้นเมื่อไฟล์ launch.json มีคุณสมบัติหรือค่าที่ไม่ถูกต้อง ในการแก้ไขข้อผิดพลาดของสคีมา:
- ตรวจสอบข้อความแสดงข้อผิดพลาดจากแผงปัญหา
- อัปเดตไฟล์ launch.json ตามข้อมูลจากข้อความแสดงข้อผิดพลาด
การดีบักล้มเหลว
การตั้งค่าการเรียกใช้ที่ไม่ถูกต้องอาจทำให้การดีบักล้มเหลว
- ตรวจสอบการกำหนดค่าการเปิดใช้เพื่อหาเส้นทางไฟล์ที่ไม่ถูกต้อง
- ตรวจสอบดีบักเกอร์หรือประเภทคำขอที่ขาดหายไปหรือไม่ถูกต้อง
- อัปเดตการตั้งค่าตามต้องการ
การวินิจฉัยปัญหาการกำหนดค่าการเปิดใช้งาน
ในการวินิจฉัยปัญหาเกี่ยวกับการกำหนดค่าการเปิดใช้:
- เปิดใช้งานการบันทึกการวินิจฉัยโดยการตั้งค่าคุณสมบัติ 'การติดตาม' เป็น 'รายละเอียด'
- ตรวจสอบบันทึกที่สร้างขึ้นใน Debug Console เพื่อระบุและแก้ไขปัญหาใดๆ
เคล็ดลับสำหรับ launch.json
ใช้ launch.json อย่างเหมาะสมด้วยเคล็ดลับเหล่านี้:
- ใช้ชื่อที่สื่อความหมายสำหรับการกำหนดค่าการเปิดใช้เพื่อให้ระบุได้ง่าย วิธีปฏิบัตินี้ช่วยให้คุณค้นหาการกำหนดค่าที่เหมาะสมได้อย่างรวดเร็วเมื่อทำงานกับสถานการณ์จำลองการดีบักหลายรายการ
- แบ่งปันการกำหนดค่าการเปิดตัวกับทีมของคุณโดยรวมไฟล์ launch.json ไว้ในระบบควบคุมเวอร์ชันของโครงการ สมาชิกในทีมทุกคนสามารถเข้าถึงการกำหนดค่าและการตั้งค่าการดีบักแบบเดียวกันได้
- ระบบควบคุมเวอร์ชันเช่น Git สามารถติดตามการเปลี่ยนแปลงไฟล์ launch.json ของคุณได้ คุณสามารถใช้การควบคุมเวอร์ชันเพื่อเปลี่ยนกลับเป็นการกำหนดค่าก่อนหน้าและทำงานร่วมกับสมาชิกในทีมคนอื่นๆ โดยแชร์การตั้งค่าที่แนะนำกับพวกเขา
- ติดตั้งส่วนขยายที่รองรับภาษา ดีบักเกอร์ หรือเครื่องมือเฉพาะที่เหมาะกับความต้องการของโครงการ กำหนดค่าไฟล์ launch.json เพื่อใช้ส่วนขยายเหล่านี้และคุณลักษณะของส่วนขยายเหล่านี้ในระหว่างเซสชันการดีบัก
เปิดใช้การดีบัก
ด้วยการใช้พลังของ launch.json คุณสามารถปรับประสบการณ์การแก้จุดบกพร่องให้เหมาะกับสไตล์การเขียนโค้ดของคุณได้ดีที่สุด สิ่งนี้จะปรับปรุงคุณภาพและประสิทธิภาพของโค้ดของคุณ
คุณต้องกำหนดการตั้งค่าการเปิดตัวบ่อยแค่ไหน? คุณมีเคล็ดลับการกำหนดค่าหรือไม่? กรุณาแบ่งปันประสบการณ์ของคุณในส่วนความคิดเห็นด้านล่าง