ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้
ลงชื่อเข้าใช้ด้วย Microsoft
ลงชื่อเข้าใช้หรือสร้างบัญชี
สวัสดี
เลือกบัญชีอื่น
คุณมีหลายบัญชี
เลือกบัญชีที่คุณต้องการลงชื่อเข้าใช้

สนับสนุนสำหรับ Windows Vista Service Pack 1 (SP1) สิ้นสุดในวันที่ 12 กรกฎาคม 2011 หากต้องการรับการปรับปรุงความปลอดภัยสำหรับ Windows ต่อไป จะต้องแน่ใจว่าคุณกำลังเรียกใช้ Windows Vista ที่มี Service Pack 2 (SP2) สำหรับข้อมูลเพิ่มเติม การอ้างอิงถึงเว็บไซต์นี้ของ Microsoft:สนับสนุนจะสิ้นสุดลงสำหรับ Windows บางรุ่น

สรุป

สัญลักษณ์การตรวจแก้จุดบกพร่องของ Windows ต้องสามารถตรวจสอบหลังจากเริ่มการทำงานของเคอร์เนลดีบักเกอร์ (I386kd.exe | Windbg.exe) ดีบักเกอร์อาจโหลด และนำเสนอพรอมต์ แต่ถ้าสัญลักษณ์ไม่ถูกต้อง คำสั่งการตรวจแก้จุดบกพร่องในอนาคตไม่ได้อ้างอิงฟังก์ชันที่เหมาะสมและตัวแปร ซึ่งก่อผลเป็นครั้งคราว รายการด้านล่างนี้ มีค่าสถานะสีแดงไม่กี่และสองวิธีการมีผลบังคับใช้ตรวจสอบตำแหน่งของสัญลักษณ์

ข้อมูลเพิ่มเติม

บทความนี้อนุมานว่า เคอร์เนลดีบักเกอร์กำลังทำงานอยู่ และได้โหลดแฟ้ม Memory.dmp หรือเชื่อมต่อกับเครื่องระยะไกล คำสั่งที่แสดงจะไม่ครบถ้วนจัดทำเอกสาร และมีแสดงเฉพาะการสมัครใช้งานผลลัพธ์

เนื้อหาของบทความ

  • กำลังโหลดเคอร์เนลดีบักเกอร์

  • ตรวจสอบเวลาที่สร้างด้วย! โปรแกรมควบคุม

  • ใช้ Link.exe เพื่อตรวจสอบเวลาที่สร้าง

  • Unassembling ฟังก์ชัน

  • สัญลักษณ์ของ Service Pack

กำลังโหลดเคอร์เนลดีบักเกอร์

การโหลดปกติของเคอร์เนลดีบักเกอร์แสดงหนึ่งตามพร้อมท์ที่ปรากฏต่อไปนี้:

kd > ระบบ Uniprocessor 0: kd > ระบบมัลติโปรเซสเซอร์พร้อมท์ที่แสดงอยู่ด้านล่างบ่งชี้ว่า แฟ้มสำหรับแฟ้ม Ntoskrnl.exe สัญลักษณ์ไม่ถูกต้อง ตรวจสอบให้แน่ใจว่า เคอร์เนลมัลติโปรเซสเซอร์หรือ uniprocessor ที่เหมาะสมและ HAL จะถูกคัดลอกไปยังแผนภูมิสัญลักษณ์หรือไม่ ตัวอย่าง:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]could not determine the current processor, using zeroKernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001*** Contents Deleted ***16kd> เมื่อโหลดแฟ้ม Memory.dmp เคอร์เนลเวอร์ชันได้เช่นเดียวกับการนับจำนวนตัวประมวลผลของเคอร์เนลดีบักเกอร์จะแสดงอยู่ในสองสามบรรทัดแรก ยืนยันว่า การนับจำนวนตัวประมวลผลที่สอดคล้องกับเคอร์เนลที่เหมาะสมและ HAL โปรแกรมควบคุมสัญลักษณ์ข้อมูลจะแสดงเป็นสัญลักษณ์จะโหลด หรือเลื่อนเวลาออกไป โหลดตัวอย่าง:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]Kernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001re-loading all kernel symbolsKD: unloading symbols for "ntoskrnl.exe"KD: deferring symbol load for "ntoskrnl.exe" at 80100000KD: Loaded (2248) fpo entries for image (ntoskrnl.exe)KD: "ntoskrnl.exe" loaded 4074 symbols (80100000-801bbb80)KD: loaded symbols for "ntoskrnl.exe"KD: deferring symbol load for "atapi.sys" at fc810000KD: deferring symbol load for "diskdump.sys" at fc800000KD: deferring symbol load for "hal.dll" at 80400000KD: deferring symbol load for "atapi.sys" at 80010000KD: deferring symbol load for "SCSIPORT.SYS" at 80013000KD: deferring symbol load for "Atdisk.sys" at 80001000KD: deferring symbol load for "Scsidisk.sys" at 8001b000KD: deferring symbol load for "Fastfat.sys" at 80372000Unable to read image header for Floppy.SYS at fc820000 - status c0000001*** Contents Deleted ***KD: deferring symbol load for "srv.sys" at fc9e0000KD: deferring symbol load for "ntdll.dll" at 77f80000finished re-loading all kernel symbolsNT!_PspUnhandledExceptionInSystemThread+0x18:80131ff8 b801000000 mov eax,0x1kd> หมายเหตุว่า เคอร์เนลดีบักเกอร์ถูก "ไม่สามารถอ่านหัวเรื่องภาพสำหรับ Floppy.sys ใน fc820000 - c0000001 สถานะ" ข้อความนี้เป็นเรื่องปกติเนื่องจากหัวข้อเฉพาะโปรแกรมควบคุมที่ไม่อยู่ในขณะนี้ในหน่วยความจำ

ตรวจสอบเวลาที่สร้างด้วย! โปรแกรมควบคุม

ใช้แบบ! โปรแกรมควบคุมโหลดคำสั่งเพื่อแสดงรายการโปรแกรมควบคุมที่อยู่ในหน่วยความจำ ทำบันทึกย่อของวันและเวลาของไดรเวอร์และหรือไม่จะไม่สามารถถูกโหลด (คอลัมน์รหัสขนาดและขนาดของข้อมูลในตัวอย่างต่อไปนี้จะถูกเอาออกให้พอดีกับความกว้างของบทความ)kd> !driversBase Code Size Data Size Driver Name Creation Time80100000 Ntoskrnl.exe Fri May 26 18:18:36 199580400000 Hal.dll Thu May 11 13:54:18 199580010000 Atapi.sys Tue May 23 21:01:41 199580013000 Scsiport.sys Fri May 05 23:11:06 199580001000 Atdisk.sys Fri May 05 23:10:40 19958001b000 Scsidisk.sys Fri May 05 23:11:01 199580372000 Fastfat.sys Mon May 22 23:57:13 1995fc820000 Floppy.sys Header Paged Outfc830000 Scsicdrm.sys Wed May 10 21:57:03 1995fc840000 Fs_Rec.sys Header Paged Outfc850000 Null.sys Header Paged Outfc860000 Beep.sys Header Paged Outfc870000 I8042prt.sys Fri May 05 23:10:42 1995fc880000 Mouclass.sys Fri May 05 23:10:45 1995fc890000 Kbdclass.sys Fri May 05 23:10:44 1995fc8b0000 Videoprt.sys Fri May 05 23:10:05 1995fc8a0000 S3.sys Fri May 19 21:18:06 1995fc8c0000 Vga.sys Fri May 05 23:10:10 1995fc8d0000 Msfs.sys Fri May 05 23:11:57 1995fc8e0000 Npfs.sys Fri May 05 23:11:40 1995fc900000 Ndis.sys Mon May 22 20:23:18 1995fc8f0000 El59x.sys Fri Feb 10 16:18:09 1995fc940000 Tdi.sys Fri May 05 23:13:09 1995fc920000 Nbf.sys Mon May 08 15:00:47 1995fc950000 Netbios.sys Fri May 05 23:13:19 1995fc960000 Parport.sys Header Paged Outfc970000 Parallel.sys Header Paged Outfc980000 Serial.sys Fri May 05 23:11:20 1995fc990000 Afd.sys Header Paged Outfc9a0000 Rdr.sys Wed May 17 17:18:16 1995fc9e0000 Srv.sys Wed May 24 21:56:59 1995TOTAL: 1ab460 (1709 kb) 3b7c0 ( 237 kb) ( 0 kb 0 kb)kd> หมายเหตุเวลาที่ใช้สร้างแฟ้ม ซึ่งก็คือวันมีการคอมไพล์แฟ้ม วันนี้จะใกล้เคียงกับประทับ Date\Time บนแฟ้มจริงเมื่อดู Winnt\System32\Drivers โฟลเดอร์ย่อยโดยใช้ตัวจัดการแฟ้ม ถ้าคุณสมัครใช้งานกับเครือข่ายนักพัฒนา Microsoft (MSDN) หรือมีการ Windows อุปกรณ์โปรแกรมควบคุม Kit (DDK), คุณสามารถใช้เครื่องมือ Link.exe เพื่อยืนยันว่า แฟ้ม Dbg แฟ้มเดียวกันที่ถูกสร้างเมื่อโปรแกรมควบคุมที่ถูกคอมไพล์ "วันประทับเวลา" ในตัวอย่างด้านล่างนี้ตรงกับ "สร้างเวลา" ของ Netbios.sys ในผลลัพธ์ข้างต้น ใช้ Link.exe เพื่อตรวจสอบค่า "วันการประทับเวลา" ของแฟ้ม Dbg:

เชื่อมโยง - การถ่ายโอนข้อมูล - ส่วนหัวของ \symbols\sys\netbios.dbgMicrosoft (R) COFF แฟ้มไบนารีรุ่น Dumper 3.00.5270 ลิขสิทธิ์ (C) Microsoft Corp 1992-1995 สงวนลิขสิทธิ์ การถ่ายโอนข้อมูลของแฟ้ม Netbios.dbg

ลายเซ็น 4944 0 ค่าสถานะ 14C ลักษณะ 306 ของเครื่องจักร (i386)2FAAE94F วันประทับเวลา 05 พฤษภาคม Fri 23:13:19 1995

8D0B checksum ของรูป 10000 พื้นฐานของขนาด 70A0 รูปภาพ** เนื้อหาถูกลบ ** ถ้า! โปรแกรมควบคุมสั่งก่อให้เกิดบรรทัดใด ๆ ที่มีลักษณะดังต่อไปนี้ ตารางที่มีความสำคัญในการถ่ายโอนข้อมูลเสียหาย วิเคราะห์เพิ่มเติมของการถ่ายโอนข้อมูลอาจไม่สามารถทำ

ไม่สามารถอ่าน DosHeader ใน 0583002a - สถานะ 00000000 ไม่สามารถอ่าน DosHeader ใน 0587002a - สถานะ 00000000 ไม่สามารถอ่าน DosHeader ใน 0588002a - สถานะ 00000000 ไม่สามารถอ่าน DosHeader ใน 058a002a - สถานะ 00000000 ไม่สามารถอ่าน DosHeader ใน 058c002a - สถานะ 00000000

Unassembling ฟังก์ชัน

เคอร์เนลดีบักเกอร์จะอ้างอิงฟังก์ชันและตัวแปรส่วนกลางตามชื่อในการเปิดใช้งานแฟ้มสัญลักษณ์นั้น จุดตรวจสอบสองของฟังก์ชัน unassembled เพื่อตรวจสอบว่า พวกเขาหวังเหมาะสมหรือไม่ ฟังก์ชันหลายฟังก์ชันของคอมไพเลอร์ปรับให้เหมาะสม และไม่จำเป็นต้องสอดคล้องกับตัวอย่างด้านล่างนี้ได้ ฟังก์ชันของคอมไพเลอร์ปรับให้เหมาะสมจะถูกระบุ โดย FPO อยู่ในวงเล็บในชื่อฟังก์ชัน ฟังก์ชันเริ่มต้นตามปกติ ด้วยอย่างใดอย่างหนึ่ง "กด ebp" หรือ "mov eax, fs [000000000] " ความรู้พื้นฐานของเครื่องจักรภาษาและประสบการณ์การใช้งานจะช่วยให้การจดจำฟังก์ชันเหล่านี้

  • แสดงรายการโมดูลที่โหลด x *

  • สัญลักษณ์รายการสำหรับโมดูลเฉพาะ (ตัวอย่างเช่น Ntoskrnl.exe) x nt ! *

  • เลือกฟังก์ชันเพื่อ unassemble ของคอมไพเลอร์ปรับให้เหมาะสมนั่นคือ u NT ! _NtUnlockFile

สัญลักษณ์ที่ดี

kd> u NT!_NtUnlockFileu NT!_NtUnlockFileNT!_NtUnlockFile:80156bd8 64a100000000     mov     eax,fs:[00000000]80156bde 55               push    ebp80156bdf 8bec             mov     ebp,esp80156be1 6aff             push    0xff80156be3 68200d1080       push    0x80100d2080156be8 68304f1380       push    0x80134f3080156bed 50               push    eax80156bee 64892500000000   mov     fs:[00000000],espkd> 

Unassembly ของฟังก์ชันจะมีลักษณะคล้ายกับข้อความด้านบน อย่างไรก็ตาม unassembly อยู่ภายใต้การเปลี่ยนแปลง ถ้า unassembly มีลักษณะเหมาะสม คุณสามารถสมมติว่า สัญลักษณ์ได้มีการโหลดอย่างถูกต้องสำหรับโมดูลนี้ Unassembly ต่อไปนี้ขึ้นต้นด้วย " jnz NT ! _NTUnlockFile + 0x22 " เด่นชัด จุดเริ่มต้นของฟังก์ชันจะไม่เริ่มต้น ด้วยรหัสคำสั่งการกระโดด ตรวจสอบแผนภูมิสัญลักษณ์อีกครั้งหรือไม่

สัญลักษณ์ที่ไม่ถูกต้อง

kd> u NT!_NTUnlockFileu NT!_NTUnlockFileNT!_NtUnlockFile:801574a4 7520             jnz     NT!_NtUnlockFile+0x22 (801574c6)801574a6 6a00             push    0x0801574a8 8d45dc           lea     eax,[ebp-0x24]801574ab 50               push    eax801574ac 53               push    ebx801574ad ff356c361480     push    dword ptr [NT!_CcNoDelay+0x4 (8014366c)]801574b3 6a01             push    0x1801574b5 ff7508           push    dword ptr [ebp+0x8] 

สัญลักษณ์ของ Service Pack

มีเวลาเมื่อเป็นเรื่องยากที่จะตรงกับสัญลักษณ์ ด้วยการติดตั้งเฉพาะ ณ จุดใดจุดหนึ่งในเวลา บริการอาจมีการเพิ่มที่จำเป็นต้องคัดลอกแฟ้มจากการติดตั้งซีดีรอม Windows การคัดลอกไฟล์ที่ถูกปรับปรุง ด้วยเซอร์วิสแพ็ค ตรวจสอบให้แน่ใจว่าคุณได้ใช้ service pack และดิสก์สนับสนุนอื่น ๆ อีกครั้งหลังจากการเปลี่ยนแปลงการตั้งค่าระบบ ซึ่งคัดลอกแฟ้มจากซีดีรอมการติดตั้ง Windows สัญลักษณ์ควรใช้ในใบสั่งเดียวกันกับการติดตั้ง

ข้อมูลเพิ่มเติม

เมื่อต้องการค้นหาชุดข้อมูลเคอร์เนลดีบัก How To ของบทความ ค้นหาโดยใช้คำสำคัญ: debugref เทคนิคการใช้สัญลักษณ์ 2.0.x Windbg ในดีบักเกอร์รุ่น 2.0.x หรือมากกว่าของ Debuggers ของ Microsoft ที่มีขั้นตอนการตรวจสอบเพิ่มเติมสัญลักษณ์ที่สามารถใช้ สำหรับข้อมูลเพิ่มเติม อ้างอิงถึงเว็บไซต์ต่อไปนี้ของ Microsoft:

ชุดพัฒนาโปรแกรมควบคุม

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย

ข้อมูลนี้เป็นประโยชน์หรือไม่

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

ขอบคุณสำหรับคำติชมของคุณ!

×