Τρόπος επαλήθευσης σύμβολα εντοπισμού σφαλμάτων των Windows

Υποστήριξη για τα 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 > σύστημα μονού επεξεργαστή

0: kd > σύστημα πολλαπλών επεξεργαστών
Η προτροπή εμφανίζεται παρακάτω υποδεικνύει ότι το αρχείο σύμβολο για το αρχείο Ntoskrnl.exe είναι εσφαλμένη. Ελέγξτε για να βεβαιωθείτε ότι το κατάλληλο πολλών επεξεργαστών ή μονού επεξεργαστή πυρήνα και HAL αντιγράφονται στο δέντρο συμβόλων.


Παράδειγμα:
Symbol search path is: C:\symbols
kd: crash dump initialized [c:\dump\memory.dmp]
could not determine the current processor, using zero
Kernel Version 1057 Free loaded @ 0x80100000
Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001
*** Contents Deleted ***
16kd>

Όταν το πρόγραμμα εντοπισμού σφαλμάτων πυρήνα φορτώνει το αρχείο Memory.dmp, την έκδοση του πυρήνα, καθώς και η αρίθμηση του επεξεργαστή εμφανίζεται με τις πρώτες γραμμές. Επιβεβαιώστε ότι η καταμέτρηση επεξεργαστή αντιστοιχεί με κατάλληλη πυρήνα και HAL. Πληροφορίες του προγράμματος οδήγησης σύμβολο εμφανίζεται καθώς φορτώνονται είτε τα σύμβολα ή αναβληθεί.

Φόρτωση δειγμάτων:
Symbol search path is: C:\symbols
kd: crash dump initialized [c:\dump\memory.dmp]
Kernel Version 1057 Free loaded @ 0x80100000
Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001
re-loading all kernel symbols
KD: unloading symbols for "ntoskrnl.exe"
KD: deferring symbol load for "ntoskrnl.exe" at 80100000
KD: 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 fc810000
KD: deferring symbol load for "diskdump.sys" at fc800000
KD: deferring symbol load for "hal.dll" at 80400000
KD: deferring symbol load for "atapi.sys" at 80010000
KD: deferring symbol load for "SCSIPORT.SYS" at 80013000
KD: deferring symbol load for "Atdisk.sys" at 80001000
KD: deferring symbol load for "Scsidisk.sys" at 8001b000
KD: deferring symbol load for "Fastfat.sys" at 80372000
Unable to read image header for Floppy.SYS at fc820000 - status c0000001
*** Contents Deleted ***
KD: deferring symbol load for "srv.sys" at fc9e0000
KD: deferring symbol load for "ntdll.dll" at 77f80000
finished re-loading all kernel symbols
NT!_PspUnhandledExceptionInSystemThread+0x18:
80131ff8 b801000000 mov eax,0x1
kd>

Σημειώστε ότι το πρόγραμμα εντοπισμού σφαλμάτων πυρήνα ήταν "Δεν είναι δυνατή η ανάγνωση της κεφαλίδας εικόνας για Floppy.sys στο fc820000 - c0000001 κατάστασης". Αυτό το μήνυμα είναι κανονική επειδή η κεφαλίδα του συγκεκριμένου προγράμματος οδήγησης δεν είναι αυτήν τη στιγμή στη μνήμη.

Έλεγχος ώρα δημιουργίας με! προγράμματα οδήγησης

Χρησιμοποιήστε το ! προγράμματα οδήγησης εντολή για να παραθέσετε τα προγράμματα οδήγησης που φορτώνονται στη μνήμη. Να σημειώσετε τις ημερομηνίες και τις ώρες των προγραμμάτων οδήγησης και κατά πόσο ήταν δυνατό να φορτωθεί. (Οι στήλες κώδικα και το μέγεθος των δεδομένων στο ακόλουθο παράδειγμα καταργούνται για να προσαρμοστεί στο πλάτος του άρθρου).
kd> !drivers
Base Code Size Data Size Driver Name Creation Time
80100000 Ntoskrnl.exe Fri May 26 18:18:36 1995
80400000 Hal.dll Thu May 11 13:54:18 1995
80010000 Atapi.sys Tue May 23 21:01:41 1995
80013000 Scsiport.sys Fri May 05 23:11:06 1995
80001000 Atdisk.sys Fri May 05 23:10:40 1995
8001b000 Scsidisk.sys Fri May 05 23:11:01 1995
80372000 Fastfat.sys Mon May 22 23:57:13 1995
fc820000 Floppy.sys Header Paged Out
fc830000 Scsicdrm.sys Wed May 10 21:57:03 1995
fc840000 Fs_Rec.sys Header Paged Out
fc850000 Null.sys Header Paged Out
fc860000 Beep.sys Header Paged Out
fc870000 I8042prt.sys Fri May 05 23:10:42 1995
fc880000 Mouclass.sys Fri May 05 23:10:45 1995
fc890000 Kbdclass.sys Fri May 05 23:10:44 1995
fc8b0000 Videoprt.sys Fri May 05 23:10:05 1995
fc8a0000 S3.sys Fri May 19 21:18:06 1995
fc8c0000 Vga.sys Fri May 05 23:10:10 1995
fc8d0000 Msfs.sys Fri May 05 23:11:57 1995
fc8e0000 Npfs.sys Fri May 05 23:11:40 1995
fc900000 Ndis.sys Mon May 22 20:23:18 1995
fc8f0000 El59x.sys Fri Feb 10 16:18:09 1995
fc940000 Tdi.sys Fri May 05 23:13:09 1995
fc920000 Nbf.sys Mon May 08 15:00:47 1995
fc950000 Netbios.sys Fri May 05 23:13:19 1995
fc960000 Parport.sys Header Paged Out
fc970000 Parallel.sys Header Paged Out
fc980000 Serial.sys Fri May 05 23:11:20 1995
fc990000 Afd.sys Header Paged Out
fc9a0000 Rdr.sys Wed May 17 17:18:16 1995
fc9e0000 Srv.sys Wed May 24 21:56:59 1995
TOTAL: 1ab460 (1709 kb) 3b7c0 ( 237 kb) ( 0 kb 0 kb)
kd>

Σημειώστε την ώρα δημιουργίας του αρχείου, που είναι η ημερομηνία του αρχείου έχει μεταγλωττιστεί. Αυτή η ημερομηνία είναι κοντά η σήμανση Date\Time στο ίδιο το αρχείο, όταν προβάλλετε τον υποφάκελο Winnt\System32\Drivers χρησιμοποιώντας τη Διαχείριση αρχείων.

Εάν εγγραφείτε για Microsoft Network προγραμματιστές (MSDN) ή έχετε το Κιτ προγράμματος οδήγησης συσκευής (DDK) των Windows, το εργαλείο Link.exe μπορεί να χρησιμοποιηθεί για να επιβεβαιώσετε ότι το αρχείο Dbg είναι το ίδιο αρχείο που είχε δημιουργηθεί όταν το πρόγραμμα οδήγησης έχει μεταγλωττιστεί. Το "σήμανση ημερομηνίας ώρας" στο παρακάτω παράδειγμα ταιριάζει με τη "Δημιουργία ώρα" του Netbios.sys στο παραπάνω αποτέλεσμα.

Χρησιμοποιήστε το Link.exe για να ελέγξετε την "χρονική σήμανση ημερομηνίας" το αρχείο Dbg:
ΣΎΝΔΕΣΗ - dump - \symbols\sys\netbios.dbg κεφαλίδες
Η έκδοση Ανατρεπόμενο όχημα δυαδικό αρχείο Microsoft (R) COFF 3.00.5270
Πνευματικά δικαιώματα (C) Microsoft Corp 1992-1995. Με επιφύλαξη κάθε νόμιμου δικαιώματος.

Ένδειξη του αρχείου Netbios.dbg
υπογραφή 4944
0 σημαίες
Μηχάνημα 14C (i386)
306 χαρακτηριστικά
05 Μαΐου Fri σήμανση ημερομηνίας ώρας 2FAAE94F 23:13:19 1995
Άθροισμα ελέγχου 8D0B εικόνας

10000 βάσης εικόνας

70A0 μέγεθος εικόνας
** Διαγραφή περιεχομένων **

Εάν το ! προγράμματα οδήγησης εντολή δημιουργεί όλες τις γραμμές που έχουν την ακόλουθη μορφή, ένα σημαντικό πίνακα της ένδειξης σφαλμάτων είναι κατεστραμμένο. Περαιτέρω ανάλυση της ένδειξης μπορεί να μην είναι δυνατή.
Δεν είναι δυνατή η ανάγνωση του DosHeader στο 0583002a - κατάσταση 00000000
Δεν είναι δυνατή η ανάγνωση του DosHeader στο 0587002a - κατάσταση 00000000
Δεν είναι δυνατή η ανάγνωση του DosHeader στο 0588002a - κατάσταση 00000000
Δεν είναι δυνατή η ανάγνωση του DosHeader στο 058a002a - κατάσταση 00000000
Δεν είναι δυνατή η ανάγνωση του DosHeader στο 058c002a - κατάσταση 00000000

Unassembling μια συνάρτηση

Τα αρχεία συμβόλων ενεργοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων πυρήνα αναφοράς συναρτήσεις και τις καθολικές μεταβλητές με βάση το όνομα. Σημείου ελέγχου μερικές αποσυναρμολογημένο συναρτήσεις για να βεβαιωθείτε ότι φαίνονται σωστές. Πολλές λειτουργίες είναι μεταγλωττιστή βελτιστοποίηση και δεν συμφωνούν απαραίτητα με τα παρακάτω παραδείγματα. Λειτουργίες του μεταγλωττιστή βελτιστοποίηση αναγνωρίζονται από το FPO σε παρένθεση στο όνομα της συνάρτησης.


Λειτουργίες αρχίζουν συνήθως με δύο ebp"ώθησης" ή "mov eax, fs [000000000]." Βασική γνώση της γλώσσας μηχανής και εμπειρία θα σας επιτρέψει να αναγνωρίσει αυτές τις λειτουργίες.
  • Λίστα των φορτωμένων λειτουργικών μονάδων
    x *!
  • Σύμβολα λίστα για μια συγκεκριμένη λειτουργική μονάδα (για παράδειγμα, Ntoskrnl.exe).
    x nt! *
  • Επιλέξτε μια λειτουργία για unassemble σημαίνει ότι δεν το μεταγλωττιστή βελτιστοποίηση.
    u NT! _NtUnlockFile

Καλή σύμβολα

kd> u NT!_NtUnlockFile
u NT!_NtUnlockFile
NT!_NtUnlockFile:
80156bd8 64a100000000 mov eax,fs:[00000000]
80156bde 55 push ebp
80156bdf 8bec mov ebp,esp
80156be1 6aff push 0xff
80156be3 68200d1080 push 0x80100d20
80156be8 68304f1380 push 0x80134f30
80156bed 50 push eax
80156bee 64892500000000 mov fs:[00000000],esp
kd>

Το unassembly της συνάρτησης πρέπει να μοιάζει με το κείμενο ανωτέρω: Ωστόσο, το unassembly μπορεί να αλλάξουν. Εάν το unassembly φαίνεται σωστή, μπορείτε να υποθέσετε ότι τα σύμβολα έχουν φορτωθεί σωστά για αυτήν τη λειτουργική μονάδα.


Τα παρακάτω unassembly αρχίζει με "jnz NT! _NTUnlockFile + 0x22." Προφανώς, στην αρχή μιας συνάρτησης δεν θα ξεκινήσει με μια οδηγία μεταπήδησης. Ελέγξτε ξανά το δέντρο συμβόλων.

Εσφαλμένη σύμβολα

kd> u NT!_NTUnlockFile
u NT!_NTUnlockFile
NT!_NtUnlockFile:
801574a4 7520 jnz NT!_NtUnlockFile+0x22 (801574c6)
801574a6 6a00 push 0x0
801574a8 8d45dc lea eax,[ebp-0x24]
801574ab 50 push eax
801574ac 53 push ebx
801574ad ff356c361480 push dword ptr [NT!_CcNoDelay+0x4 (8014366c)]
801574b3 6a01 push 0x1
801574b5 ff7508 push dword ptr [ebp+0x8]

Σύμβολα του Service Pack

Υπάρχουν φορές όταν είναι δύσκολο να ταιριάζουν με τα σύμβολα με συγκεκριμένη εγκατάσταση. Σε κάποια χρονική στιγμή, μια υπηρεσία μπορεί να έχουν προστεθεί που απαιτείται η αντιγραφή αρχείων από το CD-ROM εγκατάστασης των Windows, όπου αντιγράψατε τα αρχεία που έχουν ενημερωθεί σε service pack. Θα πρέπει να εφαρμόσετε ξανά το service pack και τυχόν δίσκους υποστήριξη τρίτων κατασκευαστών μετά την αλλαγή της εγκατάστασης συστήματος, το οποίο αντιγράφει αρχεία από το CD-ROM εγκατάστασης των Windows. Τα σύμβολα πρέπει να εφαρμόζονται με τη σειρά της εγκατάστασης.

ΠΡΌΣΘΕΤΕΣ ΠΛΗΡΟΦΟΡΊΕΣ

Για να βρείτε τη σειρά πυρήνα Debug πώς να τα άρθρα, αναζητήστε τη λέξη-κλειδί: debugref.

Windbg 2.0.x σύμβολο τεχνικές

Στο πρόγραμμα εντοπισμού σφαλμάτων έκδοση 2.0.x και μεγαλύτερο από τη Microsoft προγράμματα εντοπισμού σφαλμάτων, υπάρχουν βήματα επαλήθευσης πρόσθετο σύμβολο που μπορεί να χρησιμοποιηθεί. Για περισσότερες πληροφορίες, ανατρέξτε στην ακόλουθη τοποθεσία της Microsoft στο Web:
Ιδιότητες

Αναγνωριστικό άρθρου: 148660 - Τελευταία αναθεώρηση: 10 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια