Studio มีเครื่องมือและเวิร์กโฟลว์การดีบักมากมายที่พบได้ทั่วไปในสภาพแวดล้อมการพัฒนาแบบรวม (IDE) ซึ่งช่วยให้คุณตรวจสอบและแก้ไขข้อผิดพลาดในสคริปต์ขณะที่มันทำงาน
การดีบักจุดพัก
จุดพักเป็นจุดตรวจสอบที่หยุดหรือ "หยุด" การทำงานของสคริปต์ของคุณที่บรรทัดเฉพาะ คุณสามารถใช้การหยุดเหล่านี้เพื่อตรวจสอบและดีบักเกมของคุณ, ดู ตัวแปร, และตรวจสอบ สแต็คการเรียก จุดพักเป็นหนึ่งในวิธีที่มีประสิทธิภาพที่สุดในการดีบักฟังก์ชัน ดังนั้นจึงเป็นหนึ่งในเครื่องมือการดีบักที่สำคัญที่สุด
การจัดการ
ใน Script Editor คุณสามารถ แทรก จุดพักหลายประเภทและแก้ไขการกำหนดค่าของจุดพักได้ตลอดเวลา รวมถึงในระหว่างการทดสอบการเล่น หากคุณแก้ไขจุดพักในระหว่างการทดสอบการเล่น การแก้ไขจะยังคงอยู่แม้ว่าคุณจะเสร็จสิ้นแล้ว คุณยังสามารถแก้ไขจุดพักที่หยุดการทดสอบการเล่นของคุณอยู่ได้ แต่การเปลี่ยนแปลงจะไม่ถูกนำไปใช้จนกว่าจะถึงการทดสอบการเล่นครั้งถัดไป
แทรก
จุดพักมีหลายรูปแบบและสามารถแทรกได้ที่บรรทัดใด ๆ ของโค้ดที่สามารถทำงานได้ดังนี้:
เพื่อแทรกจุดพักมาตรฐานที่บรรทัดของโค้ด ให้คลิกในพื้นที่ด้านขวาของหมายเลขบรรทัดของมัน โดยทางเลือกอื่น ให้คลิกขวาในพื้นที่และเลือก แทรก จุดพัก ไอคอนจุดพักจะแสดงเป็นวงกลมสีแดง

ปิดใช้งาน
เพื่อปิดใช้งานจุดพักชั่วคราวโดยไม่ต้อง ลบ มัน ใช้เวิร์กโฟลว์ใด ๆ ต่อไปนี้:
- คลิกที่ไอคอนของจุดพัก
- คลิกขวาที่ไอคอนของจุดพักและเลือก ปิดใช้งานจุดพัก
- แก้ไข จุดพักและเปลี่ยนสถานะของช่องทำเครื่องหมาย เปิดใช้งาน
จุดพักที่ปิดใช้งานจะแสดงเป็นเวอร์ชันที่ไม่มีเนื้อหาของไอคอนที่เปิดใช้งาน เช่น วงกลมที่ไม่มีเนื้อหาสำหรับจุดพักมาตรฐานที่ปิดใช้งาน หรือเพชรที่ไม่มีเนื้อหาสำหรับล็อกพ้อยที่ปิดใช้งาน


ลบ
เพื่อที่จะลบจุดพัก ให้คลิกกลางที่ไอคอนของมันหรือคลิกขวาที่ไอคอนของมันและเลือก ลบจุดพัก
แก้ไข
คุณสามารถแก้ไขการกำหนดค่าของจุดพักได้ตลอดเวลา รวมถึงในระหว่างการทดสอบการเล่น หากคุณแก้ไขจุดพักในระหว่างการทดสอบการเล่น การแก้ไขจะยังคงอยู่แม้ว่าคุณจะเสร็จสิ้นแล้ว คุณยังสามารถแก้ไขจุดพักที่หยุดการทดสอบการเล่นของคุณอยู่ได้ แต่การเปลี่ยนแปลงจะไม่ถูกนำไปใช้จนกว่าจะถึงการทดสอบการเล่นครั้งถัดไป
เพื่อแก้ไขจุดพัก:
คลิกขวาที่ไอคอนจุดพักและเลือก แก้ไขจุดพัก
ในหน้าต่าง แก้ไขจุดพัก ให้กำหนดค่าจุดพักตามที่ต้องการ คุณสามารถผสมผสานการกำหนดค่าเหล่านี้เข้าด้วยกันเพื่อให้เหมาะสมที่สุดกับความต้องการในการดีบักของคุณ
ตัวเลือก คำอธิบาย เงื่อนไข นิพจน์ที่ไม่บังคับซึ่งกำหนดว่าจุดพักจะทำงานหรือไม่ หากเงื่อนไขว่างเปล่า จุดพักจะทำงานเสมอ หากมีเงื่อนไข จุดพักจะกลายเป็น จุดพักที่มีเงื่อนไข และจะทำงานเฉพาะเมื่อเงื่อนไขเป็นจริง ตัวอย่างเช่น หากคุณต้องการให้จุดพักทำงานเฉพาะเมื่อค่าตัวแปร var เท่ากับ 10 ให้ตั้งค่าเงื่อนไขเป็น var == 10. ข้อความล็อก นิพจน์ที่พิมพ์ไปยังหน้าต่าง Output เมื่อจุดพักถูกเรียกใช้ รูปแบบของข้อความล็อกจะเหมือนกับที่ของคำสั่ง print() ตัวอย่างเช่น ตั้งค่าข้อความล็อกเป็น "ค่าของ var:", var เพื่อให้แสดงข้อความเดียวกันกับ print("ค่าของ var:", var). ดำเนินการต่อ กำหนดว่าจุดพักจะหยุดสคริปต์หรือไม่หากมันทำงาน ตัวเลือกนี้จะถูกปิดใช้งานโดยค่าเริ่มต้น เว้นแต่จุดพักที่แทรกจะเป็น ล็อกพ้อย. ลบจุดพักเมื่อถูกเรียกใช้ หากเลือก จุดพักจะลบตัวเองโดยอัตโนมัติหลังจากการทดสอบการเล่นครั้งแรก ทำให้มันเป็นจุดพัก ชั่วคราว. เรียกใช้ที่ บริบท ของจุดพักกำหนดว่ามันควรทำงานใน Client (สคริปต์ฝั่งลูกค้า), Server (สคริปต์ฝั่งเซิร์ฟเวอร์), หรือ Edit (การดีบัก ปลั๊กอิน สคริปต์) หากคุณเลือก บริบทที่กำหนดเอง หน้าต่างจะแสดงบริบทการเรียกใช้ปัจจุบัน
เวิร์กโฟลว์
เวิร์กโฟลว์ทั่วไปสำหรับการดีบักจุดพักมีดังนี้:
เปิดสคริปต์ที่คุณต้องการดีบักและ แทรกจุดพัก ที่บรรทัดของโค้ดที่คุณต้องการตรวจสอบ
จาก mezzanine ของ Studio, เริ่มการทดสอบการเล่น เพื่อเริ่มการดีบัก

เมื่อสคริปต์ถึงจุดพัก การทดสอบการเล่นจะ หยุด เว้นแต่จุดพักนั้นจะถูก กำหนดค่า ให้ดำเนินการต่อ ลูกศรสีเหลืองเหนือจุดพักจะแสดงว่าบรรทัดของโค้ดใดจะทำงานถัดไป

ขณะที่สคริปต์หยุด ตรวจสอบหน้าต่าง จุดพัก, หน้าต่าง ดู, หน้าต่าง สแต็คการเรียก, หน้าต่าง Output, และ Script Editor เพื่อค้นหาข้อมูลเกี่ยวกับค่าตัวแปรและการเรียกใช้ฟังก์ชัน
เพื่อดำเนินการต่อหลังจากถึงจุดพัก ให้คลิก ดำเนินการสคริปต์ ใน mezzanine

คุณยังสามารถดำเนินการโค้ดทีละบรรทัดด้วยปุ่มก้าวใน mezzanine:

การกระทำ ทางลัด คำอธิบาย ก้าวเข้า F11 ปุ่ม ก้าวเข้า จะย้ายดีบักเกอร์เข้าไปในโค้ดของฟังก์ชันที่อยู่ในบรรทัดปัจจุบัน หากไม่มีฟังก์ชันในบรรทัดปัจจุบัน ดีบักเกอร์จะย้ายไปยังบรรทัดถัดไป ก้าวข้าม F10 ปุ่ม ก้าวข้าม จะย้ายดีบักเกอร์ไปยังบรรทัดถัดไปของโค้ด โดย ไม่ ย้ายเข้าไปในฟังก์ชัน ก้าวออก ShiftF11 ปุ่ม ก้าวออก จะย้ายดีบักเกอร์ออกจากฟังก์ชันปัจจุบันและไปยังบรรทัดถัดไปหลังจากการเรียกฟังก์ชัน หากบรรทัดปัจจุบันไม่อยู่ในฟังก์ชัน ดีบักเกอร์จะย้ายไปยังบรรทัดถัดไป เมื่อคุณเสร็จสิ้นการดีบักเซสชันปัจจุบัน ให้คลิกปุ่ม หยุด

การตรวจสอบ
Studio รวมถึงหลายหน้าต่างและเครื่องมือเพื่อตรวจสอบค่าตัวแปรและการเรียกใช้ฟังก์ชันขณะทำการดีบัก ด้วยข้อมูลนี้ คุณสามารถค้นหาสาเหตุที่แท้จริงของปัญหาส่วนใหญ่ในสคริปต์ของคุณ

จุดพัก
หน้าต่าง จุดพัก เป็นมุมมองรวมที่แสดงจุดพักทั้งหมดในสคริปต์ทั้งหมด เพื่อเปิดมัน ให้คลิก จุดพัก จากแถบเครื่องมือ สคริปต์ ของ Studio หรือไปที่เมนู หน้าต่าง ⟩ ดีบัก และเปิดใช้งาน จุดพัก
ในหน้าต่าง คอลัมน์ สคริปต์ และ บรรทัด จะแสดงเสมอ และคุณสามารถเปิด/ปิดคอลัมน์การ กำหนดค่า อื่น ๆ ผ่านเมนู ⋮ ที่มุมขวาบน ภายในคอลัมน์ สคริปต์ คลิกขวาที่จุดพักใด ๆ เพื่อแสดงเมนูตัวเลือกเพื่อ แก้ไข, ปิดใช้งาน/เปิดใช้งาน, ลบ, หรือกระโดดไปยังบรรทัดของจุดพักภายในสคริปต์

ในระหว่างการดีบักเซสชัน คอลัมน์ที่อยู่ทางซ้ายสุดจะแสดง (x3) ซึ่งบ่งบอกถึงบริบทหลาย ๆ อย่าง (Client, Server, Edit) สำหรับจุดพัก โดยการขยายสาขาของจุดพักใด ๆ คุณสามารถคลิกที่ไอคอนถัดจากบริบทเฉพาะเพื่อ ปิดใช้งาน/เปิดใช้งาน สำหรับบริบทนั้น เช่น การปิดใช้งานจุดพักเฉพาะในบริบท Client ขณะที่ยังคงเปิดใช้งานในบริบท Server

สแต็คการเรียก
หน้าต่าง สแต็คการเรียก ซึ่งเข้าถึงได้จากแถบเครื่องมือ สคริปต์ ของ Studio หรือเมนู หน้าต่าง ⟩ ดีบัก แสดงว่าบรรทัดใดของโค้ดจะทำงานถัดไปเมื่อดีบักเกอร์ถึงจุดพัก หากคุณเรียกฟังก์ชันจากภายในฟังก์ชันอื่น มันจะแสดงว่าบรรทัดใดที่ฟังก์ชันเหล่านั้นถูกเรียกใช้จาก ซึ่งช่วยให้คุณยืนยันว่าการเรียกใช้งานจริงตรงกับการเรียกใช้งานที่คาดหวังหรือไม่


ขณะที่สคริปต์หยุดที่จุดพัก ใช้ปุ่มก้าวใน mezzanine เพื่อก้าวเข้า, ข้าม, หรือออกจากฟังก์ชัน/บรรทัดตามที่อธิบายไว้ใน เวิร์กโฟลว์

ดู
หน้าต่าง ดู ซึ่งเข้าถึงได้จากแถบเครื่องมือ สคริปต์ ของ Studio หรือเมนู หน้าต่าง ⟩ ดีบัก ช่วยให้คุณดูค่าตัวแปรและนิพจน์ขณะที่คุณก้าวผ่านจุดพัก
แท็บ ตัวแปร แสดงข้อมูลเกี่ยวกับตัวแปรปัจจุบันใน ขอบเขต ซึ่งสามารถกรองได้โดยการคลิกปุ่ม ขอบเขตทั้งหมด ในแถบด้านบนของหน้าต่าง การขยายสาขาจะแสดงสมาชิกของตัวแปรหรืออินสแตนซ์นั้นและค่าของพวกเขา คุณยังสามารถดูตัวแปรใด ๆ โดยการไฮไลต์ใน Script Editor สองครั้ง คลิกขวา และเลือก เพิ่ม ดู จากเมนูป๊อปอัป


Script Editor
ดีบักเกอร์ถูกบูรณาการกับ Script Editor เมื่อเกมของคุณหยุดที่จุดพักในสคริปต์ คุณสามารถวางเมาส์เหนือชื่อของตัวแปรเพื่อดูค่าของมัน ตัวอย่างเช่น คุณสามารถดูองค์ประกอบของตารางและคีย์/ค่าที่มีอยู่ภายใน

เครื่องมือการดีบักเพิ่มเติม
นอกจากดีบักเกอร์แล้ว Studio ยังมีเครื่องมือการดีบักเพิ่มเติมสำหรับคุณในการแก้ไขปัญหาและบั๊กในเกมของคุณ
Command Bar
Command Bar ช่วยให้คุณสามารถรันคำสั่ง Luau ขณะที่เกมกำลังทำงาน มันสามารถเข้าถึงได้ใน Studio จากเมนู หน้าต่าง ⟩ สคริปต์ และใน Developer Console
Developer Console
Developer Console ให้รายละเอียดมากมายรวมถึงผลลัพธ์ของลูกค้าและเซิร์ฟเวอร์, การใช้งานหน่วยความจำ, ประสิทธิภาพเครือข่าย, และอื่น ๆ เพื่อเปิดคอนโซลขณะทดสอบหรือเล่นเกม ให้พิมพ์ /console ลงในแชทหรือกด F9
ไฟล์ล็อก
เมื่อสคริปต์พิมพ์หรือเกิดข้อผิดพลาดใน Studio หรือแอปผู้เล่น แอปจะบันทึกข้อความในไฟล์ล็อกในระบบไฟล์ท้องถิ่น ไฟล์เหล่านี้ตั้งอยู่ในสถานที่ต่าง ๆ ขึ้นอยู่กับระบบปฏิบัติการ
Windows
เพื่อเข้าถึงไฟล์ล็อกใน Windows:
- เปิด File Explorer
- ไปที่ไดเรกทอรี %LOCALAPPDATA%\Roblox\logs
- ดับเบิลคลิกที่ล็อกเพื่อเปิด ไฟล์ล็อกที่มีค่า XXXXX เดียวกันมาจากเซสชัน Studio เดียวกัน
Mac
เพื่อเข้าถึงไฟล์ล็อกใน Mac:
- เปิด Finder
- ในแถบเมนู ให้เลือก ไป ⟩ ไปที่โฟลเดอร์...
- ในกล่องโต้ตอบ ให้ป้อน ~/Library/Logs/Roblox
- ดับเบิลคลิกที่ผลลัพธ์เพื่อไปยังไดเรกทอรีล็อกของ Roblox
- ภายในไดเรกทอรี ดับเบิลคลิกที่ล็อกเพื่อเปิด
iOS
คุณสามารถรวบรวมล็อก iOS โดยใช้ Mac หรือใช้อุปกรณ์ iOS
เพื่อเข้าถึงไฟล์ล็อก iOS บน Mac:
- เชื่อมต่ออุปกรณ์ iOS กับ Mac
- เปิด Finder
- ไปที่ Utilities และเปิดแอป Console
- เพื่อให้ล็อกเรียลไทม์ปรากฏในแอป Console ให้เลือกอุปกรณ์ iOS จากแถบด้านข้าง คลิกปุ่ม เริ่ม และทำซ้ำปัญหาบนอุปกรณ์ iOS
- เพื่อให้ล็อกที่เก็บถาวรปรากฏในแอป Console ให้รัน sudo log collect --device-name "[iOS Device Name]" ใน Terminal ตรวจสอบว่าไม่มีอัญประกาศในชื่อของอุปกรณ์หรือคุณอาจได้รับข้อผิดพลาดเมื่อรันคำสั่ง
Android
เพื่อเข้าถึงไฟล์ล็อกใน Android:
- ไปที่ การตั้งค่า ⟩ ระบบ ⟩ ตัวเลือกนักพัฒนา
- เปิดใช้งาน ตัวเลือกนักพัฒนา
- บนคอมพิวเตอร์ ดาวน์โหลดและติดตั้ง Android Studio
- ใน Android Studio คลิก Logcat
- เชื่อมต่ออุปกรณ์ Android กับคอมพิวเตอร์เพื่อให้ Logcat มีล็อกโดยอัตโนมัติ