ระดับหน้าของ ASP.NET Tracการดีบัก การจัดการข้อผิดพลาด
⚡ สรุปอย่างชาญฉลาด
การดีบัก ASP.NET tracการจัดการข้อผิดพลาดและการแสดงผลใน Visual Studio ช่วยให้นักพัฒนาสามารถตรวจจับปัญหาได้ตั้งแต่เนิ่นๆ และติดตามคำขอได้อย่างราบรื่น trace.axd และเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าแสดงข้อผิดพลาดที่กำหนดเองเมื่อเกิดข้อยกเว้นที่ไม่ได้จัดการในระหว่างวงจรการพัฒนาและการใช้งานจริง
ในแอปพลิเคชันใดๆ ข้อผิดพลาดจะเกิดขึ้นในระหว่างกระบวนการพัฒนา สิ่งสำคัญคือต้องสามารถค้นพบข้อผิดพลาดได้ตั้งแต่เนิ่นๆ
ใน Visual Studio สามารถทำเช่นนี้ได้สำหรับแอปพลิเคชัน ASP.NET Visual Studio ใช้สำหรับการดีบักและมีเทคนิคการจัดการข้อผิดพลาดสำหรับ ASP.NET
การดีบักใน ASP.NET คืออะไร
การแก้จุดบกพร่อง การเพิ่มเบรกพอยต์คือกระบวนการเพิ่มเบรกพอยต์ให้กับแอปพลิเคชัน เบรกพอยต์เหล่านี้ใช้เพื่อหยุดการทำงานของโปรแกรมชั่วคราว ซึ่งช่วยให้นักพัฒนาเข้าใจว่าเกิดอะไรขึ้นในโปรแกรม ณ จุดเวลาใดเวลาหนึ่ง
ลองยกตัวอย่างโปรแกรมหนึ่ง โปรแกรมแสดงข้อความ “เรากำลังดีบัก” ให้ผู้ใช้เห็น สมมติว่าเมื่อเรารันโปรแกรม ข้อความนั้นไม่แสดงขึ้นมาด้วยเหตุผลบางอย่าง เพื่อระบุปัญหา เราจำเป็นต้องเพิ่มเบรกพอยต์ เราสามารถเพิ่มเบรกพอยต์ในบรรทัดโค้ดที่แสดงข้อความนั้น เบรกพอยต์นี้จะหยุดการทำงานของโปรแกรมชั่วคราว ณ จุดนี้ โปรแกรมเมอร์สามารถดูได้ว่าอะไรอาจผิดพลาด โปรแกรมเมอร์จึงแก้ไขโปรแกรมตามนั้น
ในตัวอย่างนี้ เราจะใช้แอปพลิเคชันสาธิต (DemoApplication) ที่เราสร้างไว้ในบทก่อนหน้านี้ ในตัวอย่างต่อไปนี้ เราจะเห็น:
- วิธีทำให้แอปพลิเคชันสาธิตแสดงสตริง
- วิธีเพิ่มเบรกพอยต์ให้กับแอปพลิเคชัน
- วิธีดีบักแอปพลิเคชันโดยใช้เบรกพอยต์นี้
วิธีการดีบักแอปพลิเคชันใน ASP.NET
ด้านล่างนี้คือขั้นตอนในการสร้างแอปพลิเคชันสาธิต เพิ่มจุดหยุดการทำงาน และดีบักใน ASP.NET:
ขั้นตอนที่ 1) เปิดแอปพลิเคชันใน Visual Studio
ขั้นแรก ตรวจสอบให้แน่ใจก่อนว่าแอปพลิเคชันเว็บของเราเปิดอยู่ใน Visual Studio แล้ว ตรวจสอบให้แน่ใจว่า DemoApplication เปิดอยู่ใน Visual Studio
ขั้นตอนที่ 2) ตอนนี้เปิดไฟล์ Demo.aspx.cs และเพิ่มบรรทัดโค้ดด้านล่าง
- เราเพิ่งเพิ่มบรรทัดโค้ด Response.Write เพื่อแสดงสตริง
- ดังนั้นเมื่อแอปพลิเคชันทำงาน ควรแสดงสตริง “เรากำลังแก้ไขจุดบกพร่อง” ในเว็บเบราว์เซอร์
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("We are debugging"); } } }
ขั้นตอนที่ 3) เพิ่มจุดหยุดการทำงาน (breakpoint) ให้กับแอปพลิเคชัน
จุดพักคือจุดใน Visual Studio ที่คุณต้องการให้หยุดการดำเนินการโปรแกรม
- ในการเพิ่มเบรกพอยต์ คุณต้องคลิกที่คอลัมน์ที่คุณต้องการแทรกเบรกพอยต์ ในกรณีของเรา เราต้องการให้โปรแกรมหยุดที่บรรทัดโค้ด “Response.Write” คุณไม่จำเป็นต้องเพิ่มคำสั่งใดๆ เพื่อเพิ่มเบรกพอยต์ เพียงแค่คลิกที่บรรทัดที่คุณต้องการเพิ่มเบรกพอยต์เท่านั้น
- เมื่อเสร็จแล้ว คุณจะสังเกตเห็นว่าโค้ดถูกทำเครื่องหมายเป็นสีแดง นอกจากนี้ ฟองอากาศสีแดงจะปรากฏขึ้นในคอลัมน์ถัดจากบรรทัดโค้ด
หมายเหตุ คุณสามารถเพิ่มจุดหยุดการทำงานหลายจุดในแอปพลิเคชันได้
ขั้นตอนที่ 4) เรียกใช้งานแอปพลิเคชันในโหมดดีบัก
ตอนนี้คุณต้องเรียกใช้แอปพลิเคชันของคุณโดยใช้โหมดดีบัก ใน Visual Studio เลือกตัวเลือกเมนู Debug->Start Debugging
ผลลัพธ์:-
เมื่อคุณทำตามขั้นตอนทั้งหมดอย่างถูกต้อง โปรแกรมจะทำงานผิดพลาด Visual Studio จะไปที่จุดหยุดการทำงานและทำเครื่องหมายบรรทัดโค้ดเป็นสีเหลือง
ตอนนี้หากโปรแกรมเมอร์รู้สึกว่าโค้ดไม่ถูกต้อง การดำเนินการก็สามารถหยุดได้ รหัสนั้นสามารถแก้ไขได้ตามนั้น หากต้องการดำเนินโปรแกรมต่อ โปรแกรมเมอร์ต้องคลิกปุ่ม F5 บนแป้นพิมพ์
ความหมายของ Tracใช้งานใน ASP.NET ใช่ไหม?
การใช้งาน tracไอเอ็นจี ช่วยให้ตรวจสอบได้ว่ามีหน้าเว็บใดบ้างที่ร้องขอแล้วเกิดข้อผิดพลาด เมื่อ tracเมื่อเปิดใช้งาน ing จะมีหน้าพิเศษที่เรียกว่า trace.axd ถูกเพิ่มเข้าไปในแอปพลิเคชันแล้ว (ดูภาพด้านล่าง) หน้าเว็บนี้เชื่อมต่อกับแอปพลิเคชันและจะแสดงคำขอทั้งหมดและสถานะของคำขอเหล่านั้น
วิธีเปิดใช้งาน Tracการสร้างแอปพลิเคชันใน ASP.NET
เรามาดูกันว่าจะเปิดใช้งานได้อย่างไร tracกำลังหา แอปพลิเคชัน ASP.NET:
ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตของเรากันเถอะ เปิดไฟล์ web.config จาก Solution Explorer
ขั้นตอน 2) เพิ่มโค้ดบรรทัดต่อไปนี้ลงในไฟล์ web.config tracคำสั่ง e ใช้เพื่อเปิดใช้งาน tracสำหรับการสมัคร
- ขีดจำกัดคำขอใน tracคำสั่ง e ระบุจำนวนคำขอหน้าเว็บที่ต้องดำเนินการ tracเอ็ด
- ในตัวอย่างนี้ เรากำหนดขีดจำกัดไว้ที่ 40 เรากำหนดขีดจำกัดเพราะค่าที่สูงกว่านี้จะทำให้ประสิทธิภาพของแอปพลิเคชันลดลง
<?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0" /> <trace enabled="true" pageOutput="false" requestLimit="40" localOnly="false" /> </system.web> </configuration>
เรียกใช้งานแอปพลิเคชันสาธิตใน Visual Studio
ผลลัพธ์:-
หากคุณเข้าชมเว็บไซต์ตอนนี้ URL http://localhost:53003/trace.axdคุณจะเห็นข้อมูลสำหรับแต่ละคำขอ ที่นี่คุณสามารถตรวจสอบได้ว่ามีข้อผิดพลาดใดเกิดขึ้นในแอปพลิเคชันหรือไม่ ข้อมูลประเภทต่อไปนี้จะแสดงบนหน้านี้:
- เวลาที่ขอหน้าเว็บ
- ชื่อของเว็บเพจที่กำลังร้องขอ
- รหัสสถานะของคำขอเว็บ (รหัสสถานะ 200 หมายความว่าคำขอสำเร็จ)
- ลิงก์ "ดูรายละเอียด" ช่วยให้คุณดูรายละเอียดเพิ่มเติมเกี่ยวกับการร้องขอเว็บได้ รายละเอียดที่สำคัญอย่างหนึ่งคือข้อมูลส่วนหัว ซึ่งแสดงข้อมูลที่ส่งในส่วนหัวของการร้องขอเว็บแต่ละครั้ง
ระดับหน้า Tracการใช้งานใน ASP.NET
ระดับหน้า Tracไอเอ็นจี ใน ASP.NET จะแสดงข้อมูลทั่วไปทั้งหมดเกี่ยวกับหน้าเว็บขณะที่กำลังประมวลผล ซึ่งมีประโยชน์ในการแก้ไขข้อบกพร่องหากหน้าเว็บทำงานผิดปกติด้วยเหตุผลใดก็ตาม Visual Studio ให้ข้อมูลโดยละเอียดเกี่ยวกับแง่มุมต่างๆ ของหน้าเว็บ เช่น เวลาที่ใช้สำหรับแต่ละเมธอดที่ถูกเรียกใช้ในคำขอเว็บ
ตัวอย่างเช่น หากเว็บแอปพลิเคชันของคุณมีปัญหาด้านประสิทธิภาพ ข้อมูลนี้สามารถช่วยในการแก้ไขปัญหาได้ ข้อมูลนี้จะแสดงขึ้นเมื่อแอปพลิเคชันทำงานใน Visual Studio
วิธีเปิดใช้งาน Tracการทำงานที่ระดับหน้าใน ASP.NET
เรามาดูกันว่าจะเปิดใช้งานระดับหน้าได้อย่างไร tracสำหรับแอปพลิเคชัน ASP.NET:
ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตกันเลย เปิดไฟล์ demo.aspx จาก Solution Explorer
ขั้นตอน 2) เพิ่มโค้ดบรรทัดด้านล่างเพื่อเปิดใช้งานหน้าเว็บ tracในการประกาศหน้า ให้เพิ่มแอตทริบิวต์เข้าไป Trace=”true” บรรทัดโค้ดนี้จะอนุญาตให้มีการตั้งค่าระดับหน้า tracไอเอ็นจี
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" Trace="true" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> </form> </body> </html>
เรียกใช้แอพพลิเคชันใน Visual Studio
ผลลัพธ์:-
เมื่อแสดงหน้าเว็บ Demo.aspx คุณจะได้รับข้อมูลมากมายเกี่ยวกับหน้าเว็บ ข้อมูลเช่นเวลาสำหรับแต่ละแง่มุมของวงจรชีวิตของหน้าเว็บจะแสดงบนหน้านี้
การจัดการข้อผิดพลาด: การแสดงหน้าข้อผิดพลาดแบบกำหนดเอง
In ASP.NETคุณสามารถให้ผู้ใช้เห็นหน้าข้อผิดพลาดแบบกำหนดเองได้ หากแอปพลิเคชันมีข้อผิดพลาดใดๆ หน้าแบบกำหนดเองจะแสดงข้อผิดพลาดนั้นให้ผู้ใช้เห็น
ในตัวอย่างนี้ เราจะเริ่มจากการเพิ่มหน้า HTML ก่อน หน้านี้จะแสดงข้อความให้ผู้ใช้เห็นว่า “เรากำลังตรวจสอบปัญหาอยู่” จากนั้นเราจะเพิ่มโค้ดแสดงข้อผิดพลาดลงในหน้า demo.aspx เพื่อให้หน้าแสดงข้อผิดพลาดปรากฏขึ้น มาทำตามขั้นตอนด้านล่างกันเลย
ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตกันเถอะ เรามาเพิ่มหน้า HTML ลงในแอปพลิเคชันกัน
- คลิกขวาที่ DemoApplication ใน Solution Explorer
- เลือกตัวเลือกเมนู เพิ่ม -> หน้า HTML
ขั้นตอน 2) ในขั้นตอนถัดไป เราต้องระบุชื่อให้กับหน้า HTML ใหม่
- ตั้งชื่อว่า ErrorPage
- คลิกปุ่มตกลงเพื่อดำเนินการต่อ
ขั้นตอน 3) หน้าต่างแสดงข้อผิดพลาดจะเปิดขึ้นโดยอัตโนมัติใน Visual Studio หากคุณไปที่ Solution Explorer คุณจะเห็นไฟล์ที่ถูกเพิ่มเข้ามา
เพิ่มบรรทัดโค้ด “เรากำลังตรวจสอบปัญหาอยู่” ลงในหน้า HTML คุณไม่จำเป็นต้องปิดไฟล์ HTML ก่อนทำการเปลี่ยนแปลงไฟล์ web.config
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> We are looking into the problem </body> </html>
ขั้นตอน 4) ตอนนี้คุณต้องทำการเปลี่ยนแปลงในไฟล์ web.config การเปลี่ยนแปลงนี้จะแจ้งให้ทราบว่าเมื่อใดก็ตามที่เกิดข้อผิดพลาดในแอปพลิเคชัน หน้าข้อผิดพลาดที่กำหนดเองจะต้องแสดงขึ้น แท็ก customErrors อนุญาตให้กำหนดหน้าข้อผิดพลาดที่กำหนดเองได้ คุณสมบัติ defaultRedirect จะถูกตั้งค่าเป็นชื่อของหน้าข้อผิดพลาดที่กำหนดเองที่เราสร้างไว้ในขั้นตอนก่อนหน้านี้
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime targetFramework="4.0" />
<customErrors mode="On" defaultRedirect="ErrorPage.html">
</customErrors>
</system.web>
</configuration>
ขั้นตอน 5) ต่อไปเรามาเพิ่มโค้ดที่ผิดพลาดลงในหน้า demo.aspx.cs กัน เปิดหน้านี้โดยการดับเบิ้ลคลิกไฟล์ใน Solution Explorer
เพิ่มโค้ดด้านล่างลงในไฟล์ Demo.aspx.cs
- โค้ดเหล่านี้ถูกออกแบบมาเพื่ออ่านข้อความจากไฟล์
- ไฟล์ดังกล่าวควรอยู่ในไดรฟ์ D โดยมีชื่อว่า Example.txt
- แต่ในสถานการณ์ของเรา ไฟล์นี้ไม่มีอยู่จริง ดังนั้นรหัสนี้จะส่งผลให้เกิดข้อผิดพลาดเมื่อแอปพลิเคชันทำงาน
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String path = @"D:\Example.txt"; string[] lines; lines = File.ReadAllLines(path); } } }
ตอนนี้รันโค้ดใน Visual Studio และคุณควรได้รับผลลัพธ์ด้านล่าง
ผลลัพธ์:-
หน้าเว็บด้านบนแสดงให้เห็นว่าเกิดข้อผิดพลาดขึ้นในแอปพลิเคชัน ส่งผลให้ผู้ใช้เห็นหน้า ErrorPage.html
ASP.NET ข้อยกเว้นที่ไม่สามารถจัดการได้
แม้ในสถานการณ์ที่ดีที่สุด ก็อาจมีข้อผิดพลาดที่คาดไม่ถึงเกิดขึ้นได้ สมมติว่าผู้ใช้เข้าชมหน้าเว็บผิดหน้าในแอปพลิเคชัน นี่เป็นสิ่งที่คาดเดาไม่ได้ ในกรณีเช่นนี้ ASP.NET สามารถเปลี่ยนเส้นทางผู้ใช้ไปยังไฟล์ ErrorPage.html ได้
เรามาดูตัวอย่างกันครับ
- เราจะใช้แอปพลิเคชันสาธิตตัวเดิมที่มีไฟล์ ErrorPage.html อยู่
- และเราจะพยายามดูหน้าเว็บที่ไม่มีอยู่ในแอปพลิเคชันของเรา
- ในกรณีนี้ เราควรจะถูกเปลี่ยนเส้นทางไปยังหน้า ErrorPage.html ของเรา มาดูขั้นตอนในการทำเช่นนั้นกัน
ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตกันเลย เปิดไฟล์ Global.asax.cs จาก Solution Explorer
หมายเหตุ ไฟล์ Global.asax.cs ใช้สำหรับเพิ่มโค้ดที่จะมีผลใช้ได้กับทุกหน้าในแอปพลิเคชัน
ขั้นตอน 2) เพิ่มโค้ดบรรทัดต่อไปนี้ลงในไฟล์ Global.asax.cs โค้ดเหล่านี้จะใช้ตรวจสอบข้อผิดพลาดและแสดงหน้า ErrorPage.html ตามความเหมาะสม
namespace DemoApplication { public class Global : System.Web.HttpApplication { protected void Application_Error(object sender, EventArgs e) { HttpException lastErrorWrapper = Server.GetLastError() as HttpException; if (lastErrorWrapper.GetHttpCode() == 404) Server.Transfer("~/ErrorPage.html"); } } }
Code คำอธิบาย:-
- บรรทัดแรกคือตัวจัดการเหตุการณ์ Application_Error เหตุการณ์นี้จะถูกเรียกใช้เมื่อใดก็ตามที่เกิดข้อผิดพลาดในแอปพลิเคชัน โปรดทราบว่าชื่อเหตุการณ์ต้องเป็น Application_Error และพารามิเตอร์ควรเป็นไปตามที่แสดงไว้ข้างต้น
- จากนั้นเราจะกำหนดอ็อบเจ็กต์ของชนิดคลาส HttpException ซึ่งเป็นอ็อบเจ็กต์มาตรฐานที่จะเก็บรายละเอียดทั้งหมดของข้อผิดพลาด จากนั้นเราจะใช้เมธอด Server.GetLastError เพื่อรับรายละเอียดทั้งหมดของข้อผิดพลาดครั้งล่าสุดที่เกิดขึ้นในแอปพลิเคชัน
- จากนั้นเราจะตรวจสอบว่ารหัสข้อผิดพลาดของข้อผิดพลาดล่าสุดคือ 404 หรือไม่ (รหัสข้อผิดพลาด 404 เป็นรหัสมาตรฐานที่แสดงเมื่อผู้ใช้เข้าชมหน้าเว็บที่ไม่พบ) หากรหัสข้อผิดพลาดตรงกัน เราจะโอนผู้ใช้ไปยังหน้า ErrorPage.html
ตอนนี้ลองรันโค้ดใน Visual Studio แล้วคุณจะได้ผลลัพธ์ดังต่อไปนี้
ผลลัพธ์:-
เรียกดูหน้า http://localhost:53003/Demo1.aspx- โปรดจำไว้ว่า Demo1.aspx ไม่มีอยู่ในแอปพลิเคชันของเรา จากนั้นคุณจะได้ผลลัพธ์ด้านล่าง
หน้าเว็บด้านบนแสดงให้เห็นว่าเกิดข้อผิดพลาดขึ้นในแอปพลิเคชัน ส่งผลให้ผู้ใช้เห็นหน้า ErrorPage.html
การบันทึกข้อผิดพลาดของ ASP.NET
การบันทึกข้อผิดพลาดของแอปพลิเคชันช่วยให้นักพัฒนาสามารถดีบักและแก้ไขข้อผิดพลาดได้ในภายหลัง ASP.NET มีฟังก์ชันในการบันทึกข้อผิดพลาด โดยจะทำในไฟล์ Global.asax.cs เมื่อตรวจพบข้อผิดพลาด ในระหว่างกระบวนการบันทึก ข้อความแสดงข้อผิดพลาดสามารถเขียนลงในไฟล์บันทึกได้
เรามาดูตัวอย่างกันครับ
- เราจะใช้แอปพลิเคชันสาธิตตัวเดิมที่มีไฟล์ ErrorPage.html อยู่
- และเราจะพยายามดูหน้าเว็บที่ไม่มีอยู่ในแอปพลิเคชันของเรา
- ในกรณีนี้เราควรเปลี่ยนเส้นทางไปที่หน้า ErrorPage.html
- และในขณะเดียวกัน เราจะบันทึกข้อความแสดงข้อผิดพลาดลงในไฟล์บันทึก มาดูขั้นตอนการดำเนินการกันเลย
ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตกันเลย เปิดไฟล์ Global.asax.cs จาก Solution Explorer
ขั้นตอน 2) เพิ่มโค้ดบรรทัดด้านล่างลงในไฟล์ Global.asax.cs โค้ดนี้จะตรวจสอบข้อผิดพลาดและแสดงหน้า ErrorPage.html ตามความเหมาะสม นอกจากนี้ ในขณะเดียวกัน เราจะบันทึกรายละเอียดข้อผิดพลาดลงในไฟล์ชื่อ AllErrors.txt ในตัวอย่างนี้ เราจะเขียนโค้ดเพื่อสร้างไฟล์นี้ในไดรฟ์ D
namespace DemoApplication { public class Global : System.Web.HttpApplication { protected void Application_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); String str = ""; str = exc.Message; String path = @"D:\AllErrors.txt"; File.WriteAllText(path, str); Server.Transfer("~/ErrorPage.html"); } } }
Code คำอธิบาย:-
- บรรทัดแรกคือการดึงข้อผิดพลาดโดยใช้เมธอด Server.GetLastError จากนั้นกำหนดค่าให้กับตัวแปร exc
- จากนั้นเราสร้างตัวแปรสตริงว่างชื่อ str เราจะดึงข้อความแสดงข้อผิดพลาดจริงโดยใช้คุณสมบัติ exc.Message คุณสมบัติ exc.Message จะมีข้อความที่ถูกต้องสำหรับข้อผิดพลาดใดๆ ที่เกิดขึ้นขณะเรียกใช้แอปพลิเคชัน จากนั้นจึงกำหนดค่านี้ให้กับตัวแปรสตริง
- ถัดไป เรากำหนดไฟล์ชื่อ AllErrors.txt ไฟล์นี้จะเป็นที่ที่ข้อความแสดงข้อผิดพลาดทั้งหมดจะถูกส่งไป เราเขียนสตริง str ซึ่งประกอบด้วยข้อความแสดงข้อผิดพลาดทั้งหมดลงในไฟล์นี้
- สุดท้าย เราจะโอนผู้ใช้ไปยังไฟล์ ErrorPage.html
ผลลัพธ์:-
เรียกดูหน้า http://localhost:53003/Demo1.aspx- โปรดจำไว้ว่า Demo1.aspx ไม่มีอยู่ในแอปพลิเคชันของเรา จากนั้นคุณจะได้ผลลัพธ์ด้านล่าง
และในขณะเดียวกัน หากคุณเปิดไฟล์ AllErrors.txt คุณจะเห็นข้อมูลด้านล่างนี้
สามารถส่งข้อความแสดงข้อผิดพลาดไปยังนักพัฒนาในภายหลังเพื่อวัตถุประสงค์ในการดีบักได้





























