ถ้าคุณได้เขียนส่วนขยายเซิร์ฟเวอร์อินเทอร์เน็ต DLL คุณอาจจะสนใจในการทำงานภายใต้การดีบักเกอร์เพื่อให้คุณสามารถติดตามการดำเนินการ จุดสั่งหยุดการตั้งค่า หรือค่าตัวแปรของจอภาพหลังจากที่เรียกว่าส่วนขยาย ได้รับ Microsoft Internet Information Server (IIS) ขึ้น และเรียกใช้ DLL ของคุณในการดีบักเกอร์มีเล่ห์เหลี่ยมเล็กน้อย คุณจำเป็นต้องค้นหาเซิร์ฟเวอร์ที่เงียบสงบที่คุณสามารถแก้จุดบกพร่อง DLL ของคุณในการตั้งค่าการควบคุม เมื่อคุณได้พบกับทรัพยากร คุณสามารถเริ่มต้นการตรวจแก้จุดบกพร่องของ DLL?
เนื่องจากความแตกต่างระหว่างรุ่น 3.0 และของ IIS 4.0 คุณจำเป็นต้องทราบว่ารุ่นใดที่คุณจะใช้ในการตรวจแก้จุดบกพร่องของ DLL?
ทำตามขั้นตอนเหล่านี้เพื่อดีบัก Internet Server นามสกุล DLL ที่ใช้ IIS 3.0:
-e W3Svc
เคล็ดลับในการตรวจแก้จุดบกพร่อง
IIS สามารถเรียกใช้เป็นโปรแกรมประยุกต์แบบโต้ตอบ ทำการดีบักได้ง่ายขึ้นมาก การทำเช่นนี้ คุณจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างกับระบบของคุณ สำหรับบัญชีผู้ใช้ที่คุณกำลังจะเรียกใช้เซิร์ฟเวอร์ภายใต้ คุณจำเป็นต้องเพิ่มสิทธิพิเศษบางอย่าง?
เมื่อต้องการเพิ่มสิทธิ์ เรียกใช้ตัวจัดการผู้ใช้ (ถ้าคุณกำลังใช้ Windows NT 3.51 รัน MUSRMGREXE ถ้าคุณกำลังใช้ Windows NT 4.0 เรียกใช้ USRMGREXE) คลิกสิทธิ์ของผู้ใช้จากเมนูนโยบาย เลือกกล่องกาเครื่องหมายแสดงสิทธิ์ของผู้ใช้ขั้นสูง จากนั้นเลือกการกระทำที่เป็นส่วนหนึ่งของระบบปฏิบัติการจากรายการแบบหล่นลงที่ด้านขวา และเพิ่มบัญชีผู้ใช้?
ทำซ้ำกระบวนการนี้ด้วยสร้างการรักษาความปลอดภัยตรวจสอบบัญชี(ยังอยู่ในรายการแบบหล่นลงบนด้านขวา) ตรวจสอบให้แน่ใจว่า บริการอินเทอร์เน็ตทั้งหมด (WWW, ftp และ gopher) จะหยุดทำงาน และ INETINFOEXE ไม่ทำงาน (ใช้ TLIST เพื่อตรวจสอบ) ออกจากระบบ และเข้าสู่กลับ คุณสามารถโหลดได้แล้ว IIS ด้วยบรรทัดคำสั่ง:
INetInfo.Exe -e W3Svc
โหลด IIS ภายใต้โปรแกรมดีบัก (ตัวอย่างเช่น ใต้ WinDbg), ใช้บรรทัดคำสั่งต่อไปนี้:
WinDbg INetInfo.Exe -e W3Svc
คุณพร้อมที่จะไป ใน Visual c ++ ชี้แก้จุดบกพร่องบนเมนูสร้างนั้นแล้ว คลิกไปที่ การกระทำนี้เริ่มประกาศบริการ WWW และดีบักเกอร์จะทราบสัญลักษณ์ใน DLL ของคุณ คุณสามารถละเว้นคำเตือนว่า แฟ้มนั้นไม่มีข้อมูลการตรวจแก้จุดบกพร่อง?
เมื่อคุณปิดโปรแกรม Visual c ++ บันทึกพื้นที่ทำงานสำหรับ INETINFOEXE วิธีนี้ คุณสามารถหลีกเลี่ยง reentering การตั้งค่าสำหรับเซสชันการตรวจแก้จุดบกพร่อง เพียงแค่เปิดการ INETINFOMDS แฟ้มพื้นที่ทำงานเมื่อคุณพร้อมที่จะเริ่มการดีบักเกอร์อีกครั้ง?
Dll ของแคช
คุณสามารถปรับการตั้งค่ารีจิสทรีที่ HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W3SVC/พารามิเตอร์/CacheExtensions ต้องมีการเตรียมใช้งานใหม่ Dll ในแต่ละครั้งที่มีใช้เซิร์ฟเวอร์ ถ้าการตั้งค่านี้คือ 1 เซิร์ฟเวอร์จะเก็บ Dll ที่โหลดอยู่ในหน่วยความจำที่นานที่สุดเท่าที่เป็นไปได้ นี่คือค่าเริ่มต้นสำหรับเซิร์ฟเวอร์ เนื่องจากมันช่วยให้เซิร์ฟเวอร์ให้ได้ประสิทธิภาพสูงสุด และควรเท่านั้นถูกเปลี่ยนแปลงหากคุณใช้เซิร์ฟเวอร์สำหรับการดีบัก ถ้าคุณทำการตั้งค่า 0 เซิร์ฟเวอร์จะเสมอโหลดนามสกุล Dll ในแต่ละครั้งที่มีใช้?
การบังคับให้เซิร์ฟเวอร์เพื่อโหลด DLL ของคุณจะมีประโยชน์เมื่อ DLL ของคุณอาจจะหยุดทำ หรือ upsetting ข้อมูลสำหรับแต่ละอินสแตนซ์ใด ๆ ที่จะรักษา โดยการบังคับให้เซิร์ฟเวอร์ DLL การเตรียมใช้งานใหม่ คุณสามารถขอรับ DLL ของคุณกลับเข้าสู่สถานะแบบฉบับกับความพยายามเล็ก ๆ ต้องแน่ใจว่าการทดสอบ DLL ของคุณโดยใช้การตั้งค่าปกติของ CacheExtensions อย่างไรก็ตาม เพื่อให้แน่ใจว่า รหัสใน DLL ของคุณไม่สมบูรณ์ขึ้นที่สถานะเริ่มต้น?
มีหลายวิธีในการสร้างสภาพแวดล้อมสำหรับการดีบัก Internet Server นามสกุล Dll และคอมโพเนนต์ของเซิร์ฟเวอร์ของคุณเมื่อใช้ IIS 4.0 หรือรุ่นที่ใหม่กว่า ถ้าคุณกำลังใช้โปรแกรมดีบักความสามารถแนบไปกับกระบวนการ Windows NT คุณสามารถใช้ฟังก์ชันนี้เมื่อต้องการตรวจแก้จุดบกพร่องของคอมโพเนนต์หรือนามสกุลของคุณ ตัวอย่างเช่น ถ้าคุณกำลังดีบัก ด้วย Visual c ++ ผ่านขั้นตอนต่อไปนี้:
ถ้าคุณกำลังใช้ดีบักเกอร์ไม่สามารถแนบไปกับกระบวนการ Windows NT ผ่านขั้นตอนต่อไปนี้เพื่อสร้างสภาพแวดล้อมที่เหมาะสมที่ตรวจแก้จุดบกพร่อง:
ดีบักเกอร์ = lt; DebuggerExeName > โดยที่ DebuggerExeName คือ เส้นทางแบบเต็มในการดีบักเกอร์ที่คุณใช้?
เมื่อมีเริ่มบริการ World Wide Web Publishing ดีบักเกอร์ของคุณจะยังสามารถเปิดใช้ ขณะนี้คุณสามารถกำหนดจุดสั่งหยุดที่เหมาะสมในอินเทอร์เน็ตเซิร์ฟเวอร์ของคุณนามสกุล DLL?
คุณจะไม่สามารถกำหนดจุดสั่งหยุดในโค้ดต้นฉบับของคอมโพเนนต์จนกระทั่งมีการโหลดคอมโพเนนต์ลงในหน่วยความจำ เมื่อต้องการทำเช่นนี้ เริ่ม Internet Explorer และมุมมองเพจ ASP ที่ประกอบด้วยวัตถุ ทันทีที่โหลดหน้า คุณควรตั้งค่าจุดสั่งหยุดในคอมโพเนนต์ของคุณ คลิกฟื้นฟูเพื่อดูหน้าอีกครั้ง และก่อให้เกิดจุดสั่งหยุดคุณเลือก ถ้าคอมโพเนนต์ไม่สามารถโหลดแม้แต่ครั้งเดียว (ตัวอย่างเช่น ถ้าข้อบกพร่องเกิดขึ้นในรหัสเริ่มต้นของคอมโพเนนต์) คุณจำเป็นต้องโหลดคอมโพเนนต์ DLL ก่อนที่จะเริ่มต้นเซสชันการตรวจแก้จุดบกพร่อง (ดูขั้นตอนที่ 11 ด้านล่าง)
ในบางกรณี คุณอาจไม่สามารถใช้อย่างใดอย่างหนึ่งในสองขั้นตอนด้านบน ถ้าคุณมีอุปสรรคในการใช้กลยุทธ์เหล่านี้อย่างใดอย่างหนึ่ง มีอยู่สามวิธีการแบบ ซึ่งได้ถูกอธิบายไว้ในรุ่นก่อนหน้าของ IIS วิธีการนี้ที่สามต้องการกำหนดสิทธิ์การรักษาความปลอดภัยของ Windows NT ตลอดจนการเปลี่ยนแปลงรีจิสทรี นอกจากนี้มันยังจะปิดความสามารถในการเรียกใช้ IIS เป็นบริการ วิธีการนี้ควรจะใช้การถ้ามีการล้มเหลวกลยุทธ์สองที่ก่อนหน้านี้เท่านั้น?
{61738644-F196-11D0-9953-00C04FD919C1 } / / IIS WAMREG admin Service
{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752 } / / IIS Admin Crypto Extension
{A9E69610-B80D-11D0-B9B9-00A0C922E750 } / / บริการ IISADMIN
อาจพบคำสำคัญ LocalService ในคีย์ย่อยเพิ่มเติมของ AppID?
C:\WINNT\System32\Inetsrv\Inetinfo.exe
-e w3svc
หมายเหตุnbsp หลังจากที่คุณเสร็จเซสชันการตรวจแก้จุดบกพร่อง คุณต้องย้อนกลับขั้นตอนที่ 5 ถึง 1 เพื่อคืนค่าการตั้งค่าก่อนหน้า และอนุญาตให้ IIS ให้รันเป็นบริการ(&N)?
หมายเหตุด้านเทคนิคตามหมายเลข|nbsp หมายเหตุด้านเทคนิคตามประเภท(&N)