ASP Lecture Series (สิบเจ็ด) การดีบักสคริปต์ ASP
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-05-30 19:58:42
ไม่ว่าการวางแผนและประสบการณ์ของคุณจะซับซ้อนเพียงใด ข้อผิดพลาดของสคริปต์ (จุดบกพร่อง) อาจทำให้สคริปต์ฝั่งเซิร์ฟเวอร์ ASP ของคุณทำงานไม่ถูกต้องตั้งแต่แรก กล่าวคือ การดีบัก คือการค้นหาและแก้ไขข้อผิดพลาดของสคริปต์ เป็นสิ่งสำคัญมากในการพัฒนาโปรแกรม ASP ที่ประสบความสำเร็จและมีประสิทธิภาพ
เครื่องมือดีบักสคริปต์ Microsoft
Microsoft® Script Debugger เป็นเครื่องมือดีบักที่มีประสิทธิภาพซึ่งช่วยให้คุณค้นหาข้อผิดพลาดได้อย่างรวดเร็วและทดสอบสคริปต์ฝั่งเซิร์ฟเวอร์แบบโต้ตอบได้ Script Debugger ทำงานร่วมกับ Windows Internet Explorer เวอร์ชัน 3.0 หรือใหม่กว่า ด้วยสิ่งนี้ คุณสามารถ:
รันสคริปต์ฝั่งเซิร์ฟเวอร์ทีละบรรทัด
เปิดหน้าต่างคำสั่งเพื่อตรวจสอบค่าของตัวแปร คุณสมบัติ หรือองค์ประกอบอาร์เรย์ในขณะที่สคริปต์ฝั่งเซิร์ฟเวอร์กำลังดำเนินการ
ตั้งค่าสถานะหยุดชั่วคราวในบรรทัดเฉพาะเพื่อระงับสคริปต์ฝั่งเซิร์ฟเวอร์ (โดยใช้เครื่องมือแก้ไขจุดบกพร่องหรือคำสั่งสคริปต์)
ติดตามกระบวนการในขณะที่เรียกใช้สคริปต์ฝั่งเซิร์ฟเวอร์
หมายเหตุ คุณสามารถใช้เครื่องมือตรวจแก้จุดบกพร่องเพื่อดูสคริปต์และค้นหาข้อผิดพลาด แต่คุณไม่สามารถแก้ไขสคริปต์ได้โดยตรง เพื่อแก้ไขข้อผิดพลาด คุณต้องแก้ไขสคริปต์ด้วยโปรแกรมแก้ไข บันทึก จากนั้นรันสคริปต์
(ฟีเจอร์นี้ไม่พร้อมใช้งานบน Windows 95 หรือใหม่กว่า)
การเปิดใช้งานการดีบัก ก่อนที่คุณจะเริ่มการดีบักสคริปต์ฝั่งเซิร์ฟเวอร์ คุณต้องกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณให้สนับสนุนการดีบัก ASP ก่อน
หลังจากที่คุณเปิดใช้งานการแก้ไขข้อบกพร่องของเว็บเซิร์ฟเวอร์ คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแก้ไขข้อบกพร่องสคริปต์ของคุณ:
เปิด Microsoft Script Debugger ด้วยตนเอง และตรวจแก้จุดบกพร่องสคริปต์ฝั่งเซิร์ฟเวอร์ ASP
ใช้ Internet Explorer เพื่อขอไฟล์ .asp หากไฟล์มีข้อผิดพลาดหรือเพิ่มคำสั่งหยุดการดำเนินการโดยไม่ตั้งใจ Microsoft Script Debugger จะเริ่มทำงานโดยอัตโนมัติ แสดงสคริปต์ และระบุแหล่งที่มาของข้อผิดพลาด
ข้อผิดพลาดของสคริปต์ เมื่อทำการดีบักสคริปต์ฝั่งเซิร์ฟเวอร์ คุณอาจพบข้อผิดพลาดหลายประเภท ข้อผิดพลาดบางประการทำให้สคริปต์ทำงานไม่ถูกต้อง ทำให้โปรแกรมหยุดทำงานหรือส่งคืนผลลัพธ์ที่ไม่ถูกต้อง
ข้อผิดพลาดทางไวยากรณ์ ข้อผิดพลาดทางไวยากรณ์มักพบข้อผิดพลาดที่เกิดจากไวยากรณ์ของสคริปต์ไม่ถูกต้อง ตัวอย่างเช่น คำสั่งที่สะกดผิดหรือพารามิเตอร์ที่ไม่ถูกต้องที่ส่งไปยังฟังก์ชันจะทำให้เกิดข้อผิดพลาด ข้อผิดพลาดทางไวยากรณ์อาจทำให้สคริปต์ของคุณไม่ทำงาน
ข้อผิดพลาดรันไทม์ ข้อผิดพลาดรันไทม์เกิดจากคำสั่งสคริปต์ที่พยายามดำเนินการที่เป็นไปไม่ได้ในระหว่างการเรียกใช้สคริปต์ ตัวอย่างเช่น สคริปต์ต่อไปนี้มีฟังก์ชันที่หารด้วยศูนย์ (การดำเนินการทางคณิตศาสตร์ที่ผิดกฎหมาย) ซึ่งจะทำให้เกิดข้อผิดพลาดรันไทม์:
<ภาษาสคริปต์ = "VBScript" runat = เซิร์ฟเวอร์>
ผลลัพธ์ = ค้นหาคำตอบ (15)
document.write ("คำตอบคือ" &ผลลัพธ์)
ฟังก์ชั่น Findanswer(x)
'คำสั่งนี้สร้างข้อผิดพลาดรันไทม์
ค้นหาคำตอบ = x/0
ฟังก์ชันสิ้นสุด
</สคริปต์>
ข้อผิดพลาดที่ทำให้เกิดข้อผิดพลาดรันไทม์ต้องได้รับการแก้ไขเพื่อให้สคริปต์ไม่ขัดจังหวะในขณะที่กำลังทำงานอยู่
ข้อผิดพลาดเกี่ยวกับลอจิก ข้อผิดพลาดลอจิกมักจะแฝงอยู่และตรวจพบได้ยาก หากมีข้อผิดพลาดทางตรรกะที่เกิดจากการพิมพ์ผิดพลาดหรือกระแสตรรกะของโปรแกรมไม่ถูกต้อง สคริปต์อาจทำงานได้สำเร็จแต่ให้ผลลัพธ์ที่ไม่ถูกต้อง ตัวอย่างเช่น สคริปต์ฝั่งเซิร์ฟเวอร์ที่วางแผนจัดเรียงรายการค่าจะส่งกลับผลลัพธ์การเรียงลำดับที่ไม่ถูกต้อง หากใช้สัญลักษณ์ "<" เพื่อเปรียบเทียบค่าแทนสัญลักษณ์ ">"
เทคนิคการแก้ไขข้อผิดพลาด สามารถใช้เทคนิคการแก้ไขข้อบกพร่องต่างๆ มากมายเพื่อค้นหาแหล่งที่มาของข้อผิดพลาดและทดสอบแอปพลิเคชัน
การดีบัก Just-In-Time (JIT) เมื่อข้อผิดพลาดรันไทม์ขัดจังหวะการทำงานของสคริปต์ ASP ตัวดีบักเกอร์สคริปต์ของ Microsoft จะเริ่มทำงานโดยอัตโนมัติ แสดงไฟล์ .asp ชี้ตัวชี้คำสั่งไปยังบรรทัดที่ทำให้เกิดข้อผิดพลาด และสร้าง ข้อความแสดงข้อผิดพลาด การดีบักประเภทนี้เรียกว่าการดีบักแบบทันเวลา (JIT) โดยที่คอมพิวเตอร์จะหยุดการทำงานของโปรแกรมชั่วคราว คุณต้องใช้โปรแกรมแก้ไขของคุณเพื่อแก้ไขข้อผิดพลาดเหล่านี้ บันทึกการแก้ไขของคุณ จากนั้นเรียกใช้สคริปต์อีกครั้ง
การดีบักเบรกพอยต์ เมื่อเกิดข้อผิดพลาดและเป็นการยากที่จะค้นหาแหล่งที่มาของข้อผิดพลาด คุณสามารถใช้วิธีการดีบักของเบรกพอยต์ที่กำหนดไว้ล่วงหน้าได้ เบรกพอยต์หยุดสคริปต์ชั่วคราวที่บรรทัดใดบรรทัดหนึ่ง คุณสามารถตั้งค่าเบรกพอยต์ที่แตกต่างกันตั้งแต่หนึ่งจุดขึ้นไปที่จุดที่เป็นปัญหาในสคริปต์ จากนั้นใช้ดีบักเกอร์เพื่อแก้ไขค่าของตัวแปรหรือคุณสมบัติที่ตั้งค่าไว้ในสคริปต์ หลังจากที่คุณแก้ไขข้อผิดพลาดเหล่านี้ คุณสามารถล้างจุดพักเพื่อให้สคริปต์ของคุณทำงานอย่างต่อเนื่อง
โปรดใช้ Microsoft Script Debugger เพื่อเปิดสคริปต์และตั้งค่าเบรกพอยต์ จากนั้นขอสคริปต์นี้กับเว็บเบราว์เซอร์ของคุณ เมื่อมีการดำเนินการบรรทัดที่มีเบรกพอยต์ในสคริปต์ คอมพิวเตอร์เริ่มดีบักเกอร์สคริปต์ และตัวชี้คำสั่งจะชี้ไปที่บรรทัดที่มีการตั้งค่าเบรกพอยต์
ดีบักเกอร์คำสั่งหยุด VBScript คุณยังสามารถเพิ่มเบรกพอยต์ให้กับสคริปต์ฝั่งเซิร์ฟเวอร์ที่เขียนด้วย VBScript โดยการแทรกคำสั่ง Stop ก่อนส่วนที่เป็นปัญหาของสคริปต์ฝั่งเซิร์ฟเวอร์ ตัวอย่างเช่น สคริปต์ ASP ต่อไปนี้ประกอบด้วยคำสั่ง Stop เพื่อหยุดการดำเนินการชั่วคราวก่อนที่จะแสดงผลลัพธ์:
-
ค่าวัน = 3
TheDay = WeekDayName(ค่าวัน)
หยุด 'ตั้งเบรกพอยต์ที่นี่
Response.Write("วันนี้คือ " + TheDay)
-
เมื่อคุณร้องขอสคริปต์ก่อนหน้านี้ที่ใช้โดยเว็บเบราว์เซอร์ ดีบักเกอร์จะเริ่มต้นและแสดงไฟล์ .asp โดยอัตโนมัติ และตัวชี้คำสั่งจะระบุตำแหน่งของคำสั่งหยุด อย่าลืมลบคำสั่ง Stop ออกจากไฟล์ .asp ที่ส่งมาเสมอ
การดีบักด้วยคำสั่งดีบักเกอร์ JScript หากต้องการเพิ่มเบรกพอยต์ให้กับสคริปต์ฝั่งเซิร์ฟเวอร์ที่เขียนด้วย Microsoft® JScript ให้แทรกคำสั่งดีบักเกอร์ก่อนบรรทัดที่เป็นปัญหา ตัวอย่างเช่น สคริปต์ต่อไปนี้ประกอบด้วยคำสั่งดีบักเกอร์ที่ขัดจังหวะการดำเนินการ และเริ่ม Microsoft Script Debugger โดยอัตโนมัติทุกครั้งที่สคริปต์วนซ้ำค่าใหม่
<%@ ภาษา = "JScript" %>
-
สำหรับ (นับ var = 1; นับ <= 10; นับ ++) {
เหตุการณ์ var = นับ%2;
ดีบักเกอร์ // ตั้งค่าเบรกพอยต์
ถ้า (เหตุการณ์ == 0) {
response.write("ค่าคู่คือ " + count + "<br>")
-
-
-
อย่าลืมลบคำสั่งดีบักเกอร์ออกจากไฟล์ .asp ที่ส่งมา
หมายเหตุ: อย่าสับสนระหว่างคำสั่งดีบักเกอร์กับคำสั่งแบ่ง JScript ในระหว่างการทำงานของโปรแกรม คำสั่ง break จะออกจากลูปปัจจุบันเท่านั้น และจะไม่เปิดใช้งาน Microsoft Script Debugger หรือหยุดการทำงานของโปรแกรมชั่วคราว
เทคนิคการดีบักสคริปต์ นอกเหนือจากการดีบักเกอร์สคริปต์แล้ว ชุดเทคนิคการดีบักที่ดียังสามารถลดเวลาที่ใช้ในการวิเคราะห์แหล่งที่มาของข้อผิดพลาดของสคริปต์ได้มาก แม้ว่าข้อผิดพลาดส่วนใหญ่จะเกิดจากสาเหตุที่ชัดเจน คำสั่งที่สะกดผิด หรือตัวแปรที่หายไป ข้อผิดพลาดด้านลอจิกและการดำเนินการบางประเภทก็อาจเกิดจากสาเหตุที่ไม่ชัดเจนได้เช่นกัน