Εισαγωγή στο WinDBG - Μέρος 1

Αλεξάντερ Αντίποφ

Το WinDBG είναι ένα εξαιρετικό πρόγραμμα εντοπισμού σφαλμάτων. Μπορεί από προεπιλογή να μην έχει πολύ φιλική προς το χρήστη διεπαφή και να μην έχει μαύρο φόντο, αλλά είναι ένας από τους πιο ισχυρούς και σταθερούς προγράμματος εντοπισμού σφαλμάτων στα Windows αυτή τη στιγμή. Σε αυτό το άρθρο, θα σας καθοδηγήσω στα βασικά του WinDBG, ώστε να ξεκινήσετε με αυτό.


Το WinDBG είναι ένα εξαιρετικό πρόγραμμα εντοπισμού σφαλμάτων. Μπορεί από προεπιλογή να μην έχει πολύ φιλική προς το χρήστη διεπαφή και να μην έχει μαύρο φόντο, αλλά είναι ένας από τους πιο ισχυρούς και σταθερούς προγράμματος εντοπισμού σφαλμάτων στα Windows αυτή τη στιγμή. Σε αυτό το άρθρο, θα σας καθοδηγήσω στα βασικά του WinDBG, ώστε να ξεκινήσετε με αυτό.

Αυτό είναι το πρώτο άρθρο μιας σειράς για το WinDBG. Λίστα όλων των άρθρων που περιλαμβάνονται σε αυτή τη σειρά:

  • Μέρος 1 - εγκατάσταση, διεπαφή, σύμβολα, απομακρυσμένος/τοπικός εντοπισμός σφαλμάτων, σύστημα βοήθειας, λειτουργικές μονάδες, μητρώα.
  • Μέρος 2 - σημεία διακοπής.
  • Μέρος 3 - επιθεώρηση μνήμης, πρόγραμμα εντοπισμού σφαλμάτων βήμα προς βήμα, συμβουλές και κόλπα.

Σε αυτό το άρθρο θα εξετάσουμε την τοποθέτηση και την προσάρτηση σε μια διαδικασία και στα ακόλουθα θα καλύψουμε τα σημεία διακοπής, την πρόοδο και την επιθεώρηση μνήμης.

Εγκατάσταση WinDBG

Σε σύγκριση με τα Windows 7, η διαδικασία εγκατάστασης για το WinDBG στα Windows 8 έχει αλλάξει ελαφρώς. Σε αυτήν την ενότητα, θα εξετάσουμε την εγκατάσταση ενός προγράμματος εντοπισμού σφαλμάτων και για τα δύο λειτουργικά συστήματα.

Εγκατάσταση του WinDBG στα Windows 8

Στα Windows 8, το WinDBG περιλαμβάνεται στο κιτ προγραμμάτων οδήγησης των Windows (WDK). Μπορείτε να εγκαταστήσετε οπτικό στούντιοκαι WDK ή εγκαταστήστε το Debugging Εργαλεία για Windows 8.1" που περιλαμβάνει WinDBG.

Το πρόγραμμα εγκατάστασης θα σας ρωτήσει εάν θέλετε να εγκαταστήσετε το WinDBG τοπικά ή να κάνετε λήψη ολόκληρου του πακέτου ανάπτυξης για άλλο μηχάνημα. Το τελευταίο είναι ουσιαστικά το ισοδύναμο ενός αυτόνομου προγράμματος εγκατάστασης, το οποίο είναι πολύ βολικό εάν θέλετε να εγκαταστήσετε το πακέτο σε άλλα συστήματα στο μέλλον.

Εικόνα 1: Επιλογή του τύπου εγκατάστασης

Στο επόμενο παράθυρο, πρέπει να καταργήσετε την επιλογή όλων των στοιχείων εκτός από τα "Εργαλεία εντοπισμού σφαλμάτων για Windows" και να κάνετε κλικ στο κουμπί "Λήψη".

Μόλις το πρόγραμμα εγκατάστασης ολοκληρώσει την εργασία του, μεταβείτε στον κατάλογο όπου έγινε λήψη του πακέτου (από προεπιλογή είναι c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) και προχωρήστε στη διαδικασία εγκατάστασης.

Εγκατάσταση του WinDBG σε Windows 7 και παλαιότερες εκδόσεις

Για Windows 7 και παλαιότερες εκδόσεις, το WinDBG αποτελεί μέρος του πακέτου "Εργαλεία εντοπισμού σφαλμάτων για Windows", το οποίο περιλαμβάνεται στο SDK των Windows και στο .Net Framework. Θα σας ζητηθεί να κάνετε λήψη του προγράμματος εγκατάστασης και, στη συνέχεια, να επιλέξετε "Εργαλεία εντοπισμού σφαλμάτων για Windows" κατά τη διαδικασία εγκατάστασης.

Κατά την εγκατάσταση, επιλέγω την επιλογή "Εργαλεία εντοπισμού σφαλμάτων" κάτω από τα "Πακέτα με δυνατότητα αναδιανομής" για να δημιουργήσω ένα αυτόνομο πρόγραμμα εγκατάστασης για να διευκολύνω τις επόμενες εγκαταστάσεις.

Εικόνα 2: Επιλογή εγκατάστασης για τη δημιουργία ενός αυτόνομου προγράμματος εγκατάστασης

Μετά την ολοκλήρωση της εγκατάστασης, θα πρέπει να έχετε προγράμματα εγκατάστασης WinDBG για διάφορες πλατφόρμες (στον κατάλογο c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\).

Εικόνα 3: Φάκελος με προγράμματα εγκατάστασης WinDBG για διάφορες πλατφόρμες

Διεπαφή WinDBG

Εικόνα 4: Εμφάνιση WinDBG

Μόλις δεις για πρώτη φορά εμφάνιση WinDGB, θα συνειδητοποιήσετε ότι το πρόγραμμα εντοπισμού σφαλμάτων είναι τρομακτικά απλό. Οι περισσότερες από τις λειτουργίες WinDBG μαθαίνονται κατά τη διεργασία εντοπισμού σφαλμάτων. Αντί να χάνουμε χρόνο στην περιγραφή της διεπαφής, στις επόμενες ενότητες θα καλύψουμε μόνο τα πιο σημαντικά σημεία.

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

Εικόνα 5: Παράθυρο εντολών WinDBG

Σύμβολα

Στις περισσότερες περιπτώσεις, το WinDBG δεν απαιτεί ειδικές ρυθμίσεις και λειτουργεί σωστά αμέσως. Εκτός από ένα σημαντικό πράγμα, που πρέπει να διαμορφωθεί, είναι οι χαρακτήρες . Τα σύμβολα είναι αρχεία που δημιουργούνται μαζί με το εκτελέσιμο αρχείο κατά τη μεταγλώττιση του προγράμματος και περιέχουν πληροφορίες εντοπισμού σφαλμάτων (συναρτήσεις και ονόματα μεταβλητών). Οι πληροφορίες εντοπισμού σφαλμάτων σάς επιτρέπουν να εξερευνήσετε τη λειτουργικότητα μιας εφαρμογής κατά την αποσφαλμάτωση ή την αποσυναρμολόγηση. Πολλά στοιχεία της Microsoft μεταγλωττίζονται με σύμβολα που διανέμονται μέσω του διακομιστή συμβόλων της Microsoft. Με τα υπόλοιπα εκτελέσιμα αρχεία, όλα δεν είναι τόσο ρόδινα - πολύ σπάνια αρχεία με πληροφορίες εντοπισμού σφαλμάτων συνοδεύονται από την εφαρμογή. Στις περισσότερες περιπτώσεις, οι εταιρείες περιορίζουν την πρόσβαση σε τέτοιες πληροφορίες.

Για να διαμορφώσετε το WinDBG ώστε να χρησιμοποιεί το Microsoft Symbol Server, μεταβείτε στην ενότητα File:Symbol File Path και ορίστε τη διαδρομή σε SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Φυσικά, είναι λίγο περίεργο ότι οι αστερίσκοι χρησιμοποιούνται ως οριοθέτες. Αφού ρυθμίσετε τον διακομιστή συμβόλων της Microsoft, τα σύμβολα θα ληφθούν στο φάκελο C:\Symbols.

Εικόνα 6: Ρύθμιση διακομιστή συμβόλων της Microsoft

Το WinDBG θα φορτώσει αυτόματα σύμβολα για δυαδικά αρχεία όταν χρειάζεται. Μπορείτε επίσης να προσθέσετε το δικό σας φάκελο συμβόλων όπως:

SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder

Προσθήκη συμβόλων κατά τον εντοπισμό σφαλμάτων

Εάν χρειάζεται να εισαγάγετε σύμβολα κατά τον εντοπισμό σφαλμάτων, μπορείτε να το κάνετε με το .sympath (το παράθυρο εντολών θα εμφανιστεί όταν κολλήσετε στη διαδικασία). Για παράδειγμα, για να προσθέσετε το φάκελο c:\SomeOtherSymbolFolder, πληκτρολογήστε την ακόλουθη εντολή:

0:025> .sympath+ c:\SomeOtherSymbolFolder
Η διαδρομή αναζήτησης συμβόλων είναι: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
Η διευρυμένη διαδρομή αναζήτησης συμβόλων είναι: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

Είναι καλή ιδέα να φορτώσετε ξανά τα σύμβολα αφού προσθέσετε ή αλλάξετε διαδρομές:

0:025> .reload
Επαναφόρτωση των τρεχουσών μονάδων
................................................................
...............................................

Έλεγχος φορτωμένων συμβόλων

Για να δείτε ποιες μονάδες έχουν φορτωμένα σύμβολα, μπορείτε να χρησιμοποιήσετε την εντολή x*!. Αν και το WinDBG φορτώνει σύμβολα μόνο όπως χρειάζεται, το x*! θα εμφανίσει σύμβολα που μπορούν να φορτωθούν. Μπορείτε να αναγκάσετε τη φόρτωση συμβόλων χρησιμοποιώντας την εντολή ld * (αυτό μπορεί να πάρει λίγο χρόνο και μπορείτε να σταματήσετε αυτή τη διαδικασία μεταβαίνοντας στο Debug:Break).

Τώρα μπορούμε να δούμε τα σύμβολα για κάθε ενότητα.

Εικόνα 8: Λίστα συμβόλων

Εντοπισμός σφαλμάτων μιας τοπικής διαδικασίας

Κατά τον εντοπισμό σφαλμάτων μιας τοπικής διαδικασίας, έχετε δύο επιλογές:

  1. Επισύναψη σε μια διαδικασία που ήδη εκτελείται.
  2. Διαδικασία εκκίνησης μέσω WinDBG.

Κάθε μέθοδος έχει τα δικά της πλεονεκτήματα και μειονεκτήματα. Εάν, ας πούμε, εκτελείτε το πρόγραμμα μέσω του WinDBG, τότε έχετε διαθέσιμες κάποιες ειδικές επιλογές εντοπισμού σφαλμάτων (για παράδειγμα, εντοπισμός σφαλμάτων σωρού) που μπορεί να προκαλέσουν διακοπή λειτουργίας της εφαρμογής. Από την άλλη πλευρά, υπάρχουν επίσης προγράμματα που κολλάνε όταν επισυνάπτετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε αυτά. Ορισμένες εφαρμογές (ειδικά κακόβουλο λογισμικό) ελέγχουν την παρουσία ενός προγράμματος εντοπισμού σφαλμάτων στο σύστημα κατά την εκκίνηση και, κατά συνέπεια, σε αυτήν την περίπτωση είναι λογικό να προσκολλώνται σε μια ήδη εκτελούμενη διαδικασία. Μερικές φορές υπάρχει μια διόρθωση σφαλμάτων μιας υπηρεσίας των Windows που ορίζει ορισμένες παραμέτρους κατά την εκκίνηση, επομένως για να απλοποιηθεί η διαδικασία εντοπισμού σφαλμάτων, είναι επίσης καλύτερο να συνδέσετε μια διαδικασία που εκτελείται αντί να ξεκινήσετε την υπηρεσία μέσω ενός προγράμματος εντοπισμού σφαλμάτων. Μερικοί άνθρωποι ισχυρίζονται ότι η εκτέλεση μιας διαδικασίας μέσω ενός προγράμματος εντοπισμού σφαλμάτων έχει σοβαρό αντίκτυπο στην απόδοση. Με λίγα λόγια, δοκιμάστε και τα δύο και επιλέξτε αυτό που σας ταιριάζει καλύτερα. Εάν για κάποιο λόγο προτιμάτε μια συγκεκριμένη μέθοδο, μοιραστείτε τις σκέψεις σας στα σχόλια!

Ξεκινώντας μια διαδικασία

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

Η έναρξη της διαδικασίας δεν είναι δύσκολη. Μεταβείτε στο "File:Open Executable" και επιλέξτε το εκτελέσιμο αρχείο που θέλετε να διορθώσετε. Μπορείτε επίσης να παρέχετε ορίσματα ή να ορίσετε τον κατάλογο έναρξης:

Εικόνα 9: Επιλογή εκτελέσιμου για εντοπισμό σφαλμάτων

Σύνδεση διαδικασίας

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

Για να επισυνάψετε μια διαδικασία που ήδη εκτελείται, μεταβείτε στο "Αρχείο: Επισύναψη σε διεργασία" και, στη συνέχεια, επιλέξτε το PID ή το όνομα της διαδικασίας. Θυμηθείτε ότι πρέπει να έχετε τα κατάλληλα δικαιώματα για να κολλήσετε στη διαδικασία.

Εικόνα 10: Επιλογή διαδικασίας για σύνδεση

Εάν, μετά τη σύνδεση, η εφαρμογή έχει αναστείλει την εργασία της, μπορείτε να χρησιμοποιήσετε τη λειτουργία "Μη επενδυτική" επιλέγοντας το κατάλληλο πλαίσιο.

Εντοπισμός σφαλμάτων μιας απομακρυσμένης διαδικασίας

Μερικές φορές μπορεί να χρειαστεί να κάνετε εντοπισμό σφαλμάτων σε μια διαδικασία σε ένα απομακρυσμένο σύστημα. Θα ήταν πολύ πιο βολικό να χειριστείτε αυτήν την εργασία με έναν τοπικό εντοπισμό σφαλμάτων αντί να χρησιμοποιήσετε μια εικονική μηχανή ή RDP. Ή ίσως κάνετε εντοπισμό σφαλμάτων στη διαδικασία LoginUI.exe, η οποία είναι διαθέσιμη μόνο όταν το σύστημα είναι κλειδωμένο. Σε περιπτώσεις όπως αυτή, μπορείτε να χρησιμοποιήσετε την τοπική έκδοση του WinDBG και να επισυνάψετε διεργασίες από απόσταση. Για την επίλυση αυτών των προβλημάτων, υπάρχουν δύο πιο κοινές μέθοδοι.

Υπάρχουσες συνεδρίες εντοπισμού σφαλμάτων

Εάν έχετε ήδη ξεκινήσει τον εντοπισμό σφαλμάτων του προγράμματος τοπικά (επισυνάπτοντας ή εκκινώντας μια διαδικασία μέσω του WinDBG), μπορείτε να εισαγάγετε μια συγκεκριμένη εντολή και το WinDBG θα ξεκινήσει έναν "ακροατή" (ακρόαση) στον οποίο μπορεί να συνδεθεί ο απομακρυσμένος εντοπισμός σφαλμάτων. Για να το κάνετε αυτό, χρησιμοποιήστε την εντολή .server:

Διακομιστής tcp:port=5005

Αφού εκτελέσετε την παραπάνω εντολή, ενδέχεται να δείτε μια προειδοποίηση όπως αυτή:

Εικόνα 11: Προειδοποιητικό μήνυμα που μπορεί να εμφανιστεί μετά την εκτέλεση της εντολής για τη δημιουργία ενός "ακροατή"

Στη συνέχεια, το WinDBG θα αναφέρει ότι ο διακομιστής εκτελείται:

0:005> .server tcp:port=5005
0: -Remote tcp:Port=5005,Server=USER-PC

Τώρα μπορείτε να συνδεθείτε από έναν απομακρυσμένο κεντρικό υπολογιστή σε μια ήδη υπάρχουσα περίοδο λειτουργίας εντοπισμού σφαλμάτων μεταβαίνοντας στο "Αρχείο:Σύνδεση σε απομακρυσμένη περίοδο λειτουργίας" και εισάγοντας κάτι σαν αυτό στο πεδίο κειμένου: tcp:Port=5005,Server=192.168.127.138

Εικόνα 12: Απομακρυσμένη σύνδεσηστη συνεδρία εντοπισμού σφαλμάτων

Μετά τη σύνδεση, θα λάβετε επιβεβαίωση στον απομακρυσμένο πελάτη:


ο διακομιστής ξεκίνησε. Ο πελάτης μπορεί να συνδεθεί με οποιαδήποτε από αυτές τις γραμμές εντολών
0: -Remote tcp:Port=5005,Server=USER-PC
MACHINENAME\User (tcp 192.168.127.138:13334) συνδεδεμένος τη Δευτέρα 16 Δεκεμβρίου 09:03:03 2013

και μήνυμα τοπική έκδοσηπρόγραμμα εντοπισμού σφαλμάτων:

MACHINENAME\User (tcp 192.168.127.138:13334) συνδεδεμένος τη Δευτέρα 16 Δεκεμβρίου 09:03:03 2013

Δημιουργήστε έναν απομακρυσμένο διακομιστή

Μπορείτε επίσης να δημιουργήσετε έναν ξεχωριστό διακομιστή WinDBG, να συνδεθείτε σε αυτόν απομακρυσμένα και να επιλέξετε μια διαδικασία για εντοπισμό σφαλμάτων. Αυτό μπορεί να γίνει χρησιμοποιώντας το αρχείο dbgsrv.exe όπου σκοπεύετε να εντοπίσετε σφάλματα διεργασιών. Για να ξεκινήσετε έναν τέτοιο διακομιστή, εκτελέστε την ακόλουθη εντολή:

dbgsrv.exe -t tcp:port=5005

Εικόνα 13: Εκκίνηση απομακρυσμένου διακομιστή

Και πάλι, μπορεί να λάβετε μια προειδοποίηση ασφαλείας που πρέπει να αποδεχτείτε:

Εικόνα 14: Μήνυμα ασφαλείας που μπορεί να εμφανιστεί κατά την εκκίνηση του διακομιστή εντοπισμού σφαλμάτων

Μπορείτε να συνδεθείτε στον διακομιστή εντοπισμού σφαλμάτων εάν μεταβείτε στο αρχείο "File: Connect to Remote Stub" και εισαγάγετε την ακόλουθη γραμμή στο πεδίο κειμένου: tcp:Port=5005,Server=192.168.127.138

Εικόνα 15: Σύνδεση στον διακομιστή εντοπισμού σφαλμάτων

Μετά τη σύνδεση, δεν θα λαμβάνετε σήματα που έχετε συνδέσει, αλλά εάν μεταβείτε στο "Αρχείο: Επισύναψη σε διεργασία", θα δείτε μια λίστα διεργασιών διακομιστή εντοπισμού σφαλμάτων (όπου εκτελείται το dbgsrv.exe). Τώρα μπορείτε να κολλήσετε στη διαδικασία σαν να το κάνατε τοπικά.

Σύστημα βοήθειας

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

Μπορείτε επίσης να λάβετε πληροφορίες βοήθειας για μια συγκεκριμένη εντολή. Για παράδειγμα, για να λάβετε βοήθεια σχετικά με την εντολή .reload, χρησιμοποιήστε την ακόλουθη εντολή:

windbg> .hh .reload

Ή απλώς μεταβείτε στην ενότητα "Βοήθεια:Περιεχόμενα".

Ενότητες

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

Μόλις συνδεθεί στη διαδικασία, το WinDBG θα εμφανίσει αυτόματα τις φορτωμένες μονάδες. Για παράδειγμα, παρακάτω είναι οι μονάδες μετά τη σύνδεση στο calc.exe:

Microsoft (R) Windows Debugger Έκδοση 6.12.0002.633 X86
Πνευματικά δικαιώματα (γ) Microsoft Corporation. Ολα τα δικαιώματα διατηρούνται.

*** αναμονή με επισύναψη σε εκκρεμότητα
Η διαδρομή αναζήτησης συμβόλων είναι: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Η εκτελέσιμη διαδρομή αναζήτησης είναι:
ModLoad: 00a70000 00b30000 C:\Windows\system32\calc.exe
ModLoad: 77630000 7776c000 C:\Windows\SYSTEM32\ntdll.dll
ModLoad: 77550000 77624000 C:\Windows\system32\kernel32.dll
ModLoad: 75920000 7596a000 C:\Windows\system32\KERNELBASE.dll
ModLoad: 76410000 77059000 C:\Windows\system32\SHELL32.dll
ModLoad: 77240000 772ec000 C:\Windows\system32\msvcrt.dll
ModLoad: 76300000 76357000 C:\Windows\system32\SHLWAPI.dll
ModLoad: 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
ModLoad: 75fa0000 76069000 C:\Windows\system32\USER32.dll
ModLoad: 777b0000 777ba000 C:\Windows\system32\LPK.dll
ModLoad: 774b0000 7754d000 C:\Windows\system32\USP10.dll
ModLoad: 73110000 732a0000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_
6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
ModLoad: 75a80000 75bdc000 C:\Windows\system32\ole32.dll
ModLoad: 76360000 76401000 C:\Windows\system32\RPCRT4.dll
ModLoad: 777c0000 77860000 C:\Windows\system32\ADVAPI32.dll
ModLoad: 75be0000 75bf9000 C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76270000 762ff000 C:\Windows\system32\OLEAUT32.dll
ModLoad: 74590000 745d0000 C:\Windows\system32\UxTheme.dll
ModLoad: 74710000 748ae000 C:\Windows\WinSxS\x86_microsoft.windows.common-
ModLoad: 703d0000 70402000 C:\Windows\system32\WINMM.dll
ModLoad: 74c80000 74c89000 C:\Windows\system32\VERSION.dll
ModLoad: 77770000 7778f000 C:\Windows\system32\IMM32.DLL
ModLoad: 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
ModLoad: 74130000 7422b000 C:\Windows\system32\WindowsCodecs.dll
ModLoad: 74260000 74273000 C:\Windows\system32\dwmapi.dll
ModLoad: 756d0000 756dc000 C:\Windows\system32\CRYPTBASE.dll
ModLoad: 75e60000 75ee3000 C:\Windows\system32\CLBCatQ.DLL
ModLoad: 6ef10000 6ef4c000 C:\Windows\system32\oleacc.dll

Αργότερα στη διαδικασία εντοπισμού σφαλμάτων, μπορείτε να εμφανίσετε ξανά αυτήν τη λίστα με την εντολή lmf:

0:005>lmf
όνομα ενότητας έναρξης τέλους
00a70000 00b30000 calc C:\Windows\system32\calc.exe
6ef10000 6ef4c000 oleacc C:\Windows\system32\oleacc.dll
703d0000 70402000 WINMM C:\Windows\system32\WINMM.dll
73110000 732a0000 gdiplus C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_
1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
74130000 7422b000 WindowsCodecs C:\Windows\system32\WindowsCodecs.dll
74260000 74273000 dwmapi C:\Windows\system32\dwmapi.dll
74590000 745d0000 UxTheme C:\Windows\system32\UxTheme.dll
74710000 748ae000 COMCTL32 C:\Windows\WinSxS\x86_microsoft.windows.common-
controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\COMCTL32.dll
74c80000 74c89000 ΕΚΔΟΣΗ C:\Windows\system32\VERSION.dll
756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
75be0000 75bf9000 sechost C:\Windows\SYSTEM32\sechost.dll
75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

Μπορείτε επίσης να μάθετε τη διεύθυνση λήψης για μια συγκεκριμένη ενότητα χρησιμοποιώντας την εντολή "lmf m":

0:005> lmf m kernel32
όνομα ενότητας έναρξης τέλους
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

Μπορείτε επίσης να λάβετε πληροφορίες σχετικά με την κεφαλίδα εικόνας μιας συγκεκριμένης μονάδας χρησιμοποιώντας την επέκταση !dh (το θαυμαστικό υποδεικνύει μια επέκταση):

0:005> !dh kernel32

Τύπος αρχείου:DLL
ΤΙΜΕΣ ΚΕΦΑΛΗΣ ΑΡΧΕΙΟΥ
Μηχάνημα 14C (i386)
4 αριθμός τμημάτων
4A5BDAAD σφραγίδα ημερομηνίας ώρας Δευτ. 13 Ιουλίου 21:09:01 2009

0 δείκτης αρχείου στον πίνακα συμβόλων
0 αριθμός συμβόλων
Μέγεθος E0 ​​της προαιρετικής κεφαλίδας
2102 χαρακτηριστικά
Εκτελέσιμα
Μηχανή λέξεων 32 bit
DLL

ΠΡΟΑΙΡΕΤΙΚΑ ΤΙΜΕΣ ΚΕΦΑΛΗΣ
10Β μαγεία#
Έκδοση σύνδεσης 9.00
Κωδικός μεγέθους C4600
Μέγεθος C800 αρχικοποιημένων δεδομένων
0 μέγεθος μη αρχικοποιημένων δεδομένων
510C5 διεύθυνση του σημείου εισόδου
1000 βασικός κωδικός
----- νέος -----
77550000 βάση εικόνας
Ευθυγράμμιση τομής 1000
200 στοίχιση αρχείων
3 υποσύστημα (Windows CUI)
Έκδοση λειτουργικού συστήματος 6.01
Έκδοση εικόνας 6.01
Έκδοση υποσυστήματος 6.01
Εικόνα μεγέθους D4000
Επικεφαλίδες μεγέθους 800
D5597 άθροισμα ελέγχου
00040000 μέγεθος αποθέματος στοίβας
00001000 μέγεθος δέσμευσης στοίβας
00100000 μέγεθος αποθέματος σωρού
00001000 μέγεθος δέσμευσης σωρού
140 χαρακτηριστικά DLL
δυναμική βάση
Συμβατό με NX
B4DA8 [A915] διεύθυνση του καταλόγου εξαγωγών
BF6C0 [ 1F4] διεύθυνση του Καταλόγου Εισαγωγών
C7000 [ 520] διεύθυνση του καταλόγου πόρων
0 [ 0] διεύθυνση του καταλόγου εξαιρέσεων
0 [ 0] διεύθυνση του καταλόγου ασφαλείας
Διεύθυνση C8000 [B098] του Base Relocation Directory
C5460 [ 38] διεύθυνση του καταλόγου εντοπισμού σφαλμάτων
0 [ 0] διεύθυνση του καταλόγου περιγραφής
0 [ 0] διεύθυνση Ειδικού Καταλόγου
0 [ 0] διεύθυνση του καταλόγου αποθήκευσης νημάτων
816B8 [ 40] διεύθυνση του Load Configuration Directory
278 [ 408] διεύθυνση του Καταλόγου Δεσμευμένων Εισαγωγών
1000 [DE8] διεύθυνση του καταλόγου Εισαγωγής πίνακα διευθύνσεων
0 [ 0] διεύθυνση του Καταλόγου Καθυστέρησης Εισαγωγής
0 [ 0] διεύθυνση του καταλόγου κεφαλίδων COR20
0 [ 0] διεύθυνση του δεσμευμένου καταλόγου

ΚΕΦΑΛΙΑ ΕΝΟΤΗΤΑΣ #1
.όνομα κειμένου
Εικονικό μέγεθος C44C1
1000 εικονικές διευθύνσεις
Μέγεθος ακατέργαστων δεδομένων C4600
800 δείκτης αρχείου σε ανεπεξέργαστα δεδομένα

0 αριθμός μετεγκαταστάσεων
0 αριθμός αριθμών γραμμής
60000020 σημαίες
Κώδικας
(δεν έχει καθοριστεί στοίχιση)
Εκτελέστε την ανάγνωση

Κατάλογοι εντοπισμού σφαλμάτων (2)
Πληκτρολογήστε Μέγεθος δείκτη διεύθυνσης
cv 25 c549c c4c9c Μορφή: RSDS, οδηγός, 2, kernel32.pdb
(10) 4 c5498 c4c98

ΚΕΦΑΛΙΑ ΕΝΟΤΗΤΑΣ #2
.όνομα δεδομένων
Εικονικό μέγεθος FEC
Εικονική διεύθυνση C6000
Μέγεθος E00 ακατέργαστων δεδομένων
C4E00 δείκτης αρχείου σε ανεπεξέργαστα δεδομένα
0 δείκτης αρχείου στον πίνακα μετεγκατάστασης
0 δείκτης αρχείου προς αριθμούς γραμμής
0 αριθμός μετεγκαταστάσεων
0 αριθμός αριθμών γραμμής
C0000040 σημαίες
αρχικοποιημένα δεδομένα
(δεν έχει καθοριστεί στοίχιση)
Διαβάζω γράφω

ΚΕΦΑΛΙΑ ΕΝΟΤΗΤΑΣ #3
Όνομα .rsrc
εικονικό μέγεθος 520
Εικονική διεύθυνση C7000
Μέγεθος 600 ακατέργαστων δεδομένων
C5C00 δείκτης αρχείου σε ανεπεξέργαστα δεδομένα
0 δείκτης αρχείου στον πίνακα μετεγκατάστασης
0 δείκτης αρχείου προς αριθμούς γραμμής
0 αριθμός μετεγκαταστάσεων
0 αριθμός αριθμών γραμμής
40000040 σημαίες
αρχικοποιημένα δεδομένα
(δεν έχει καθοριστεί στοίχιση)
Μόνο για ανάγνωση

ΚΕΦΑΛΙΑ ΕΝΟΤΗΤΑΣ #4
.relocname
Εικονικό μέγεθος B098
Εικονική διεύθυνση C8000
Μέγεθος ακατέργαστων δεδομένων B200
C6200 δείκτης αρχείου σε ανεπεξέργαστα δεδομένα
0 δείκτης αρχείου στον πίνακα μετεγκατάστασης
0 δείκτης αρχείου προς αριθμούς γραμμής
0 αριθμός μετεγκαταστάσεων
0 αριθμός αριθμών γραμμής
42000040 σημαίες
αρχικοποιημένα δεδομένα
Απορρίπτεται
(δεν έχει καθοριστεί στοίχιση)
Μόνο για ανάγνωση

Μηνύματα και εξαιρέσεις

Μετά την επισύναψη σε μια διαδικασία, εμφανίζεται πρώτα μια λίστα λειτουργικών μονάδων και στη συνέχεια ενδέχεται να εμφανιστούν άλλα μηνύματα. Για παράδειγμα, όταν συνδέουμε το calc.exe, το WinDBG ορίζει αυτόματα ένα σημείο διακοπής (το οποίο είναι απλώς ένας δείκτης που χρησιμοποιείται για τη διακοπή της εφαρμογής). Οι πληροφορίες για το σημείο διακοπής εμφανίζονται στην οθόνη:

(da8.b44): Εξαίρεση εντολής διαλείμματος - κωδικός 80000003 (πρώτη ευκαιρία)

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

Μητρώα

Μετά την εμφάνιση μηνυμάτων και εξαιρέσεων, το πρόγραμμα εντοπισμού σφαλμάτων εξάγει την κατάσταση των καταχωρητών του επεξεργαστή. Οι καταχωρητές είναι ειδικές μεταβλητές εντός του επεξεργαστή που αποθηκεύουν μικρά κομμάτια πληροφοριών ή παρακολουθούν την κατάσταση κάποιου στοιχείου στη μνήμη. Ο επεξεργαστής μπορεί να επεξεργαστεί τις πληροφορίες σε αυτούς τους καταχωρητές πολύ γρήγορα. Αυτό είναι πολύ πιο γρήγορο από το να λαμβάνετε πληροφορίες για το λεωφορείο από τη μνήμη RAM κάθε φορά.

Μετά τη σύνδεση στο calc.exe, το WinDBG εμφανίζει αυτόματα πληροφορίες σχετικά με τα ακόλουθα μητρώα:

eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246

Αργότερα, μπορείτε να αντιγράψετε ξανά αυτές τις πληροφορίες χρησιμοποιώντας την εντολή r:

0:005>r
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!DbgBreakPoint:
77663540 cc int 3

Αν θέλουμε να πάρουμε την τιμή ενός συγκεκριμένου καταχωρητή, μπορούμε να εκτελέσουμε την ακόλουθη εντολή:

0:005> r eax
eax=7ffd9000

Πληροφορίες μπορούν να ληφθούν ταυτόχρονα από διάφορα μητρώα ως εξής:

0:005> r eax,ebp
eax=7ffd9000 ebp=02affdc8

Δείκτης στην οδηγία

Η τελευταία εντολή αφορά οδηγίες εκτέλεσης. Εδώ, εμφανίζονται επίσης πληροφορίες, όπως στην περίπτωση της εντολής r, για το τι περιέχει τον καταχωρητή EIP. Το EIP είναι ένα μητρώο που περιέχει την τοποθεσία επόμενη οδηγίανα εκτελεστεί από τον επεξεργαστή. Αυτό που εμφανίζει το WinDBG είναι το ισοδύναμο της εντολής u eip L1, μετά την οποία το WinDBG μεταβαίνει στη διεύθυνση που καθορίζεται στον καταχωρητή EIP, μετατρέπει αυτήν την ενότητα σε κώδικα συναρμολόγησης και την εμφανίζει στην οθόνη.

ntdll!DbgBreakPoint:
77663540 cc int 3

να κρατήσουμε επαφή

Στα επόμενα άρθρα, θα δούμε πώς να χρησιμοποιήσετε το WinDBG στη μάχη: σημεία διακοπής, βηματικός εντοπισμός σφαλμάτων και προβολή μνήμης. Μην αλλάζετε! J.

Για να προσδιορίσετε τις αιτίες των μπλε οθονών (BSOD), απαιτείται ανάλυση της ένδειξης αποθήκευσης μνήμης. Στη συντριπτική πλειονότητα των περιπτώσεων, αρκεί ένα minidump, το οποίο δημιουργείται από το σύστημα σε περίπτωση κρίσιμων σφαλμάτων.
Αυτό το άρθρο περιέχει βήμα προς βήμα οδηγίεςγια την εγκατάσταση και τη διαμόρφωση του WinDBG - ένα ισχυρό εργαλείο εντοπισμού σφαλμάτων που σας επιτρέπει να προσδιορίσετε την πραγματική αιτία του BSOD.

Βήμα 1 — Ρύθμιση εγγραφής αποθήκευσης μικρής μνήμης

Βήμα 2 — Εγκατάσταση του WinDBG

Για να αναλύσετε τα σημεία ένδειξης σφαλμάτων μνήμης, θα χρειαστεί να εγκαταστήσετε το πρόγραμμα εντοπισμού σφαλμάτων WinDBG, το οποίο περιλαμβάνεται στο SDK των Windows. Κατά τη στιγμή της γραφής, οι πιο πρόσφατες διαθέσιμες εκδόσεις του Windows SDK είναι:

  • Windows 10 SDK (λήψη διαδικτυακού προγράμματος εγκατάστασης)
  • Windows 8.1 SDK (λήψη διαδικτυακού προγράμματος εγκατάστασης)

Βήμα 3 — Αντιστοίχιση αρχείων .dmp στο WinDBG

Αντιστοιχίστε τα αρχεία σας .dmp στο WinDBG για να διευκολύνετε την ανάγνωση και την ανάλυση των ενδείξεων μνήμης. Αυτό θα σας επιτρέψει να ανοίξετε αρχεία ένδειξης σφαλμάτων από τον Explorer απευθείας στο WinDBG, παρακάμπτοντας την προκαταρκτική εκκίνησή του.


Βήμα 4 — Ρύθμιση του διακομιστή συμβόλων για λήψη αρχείων συμβόλων εντοπισμού σφαλμάτων


Η εγκατάσταση και η αρχική διαμόρφωση του WinDBG έχει πλέον ολοκληρωθεί. Για να αλλάξετε την εμφάνισή του, μπορείτε να μεταβείτε στο μενού θέα- ρυθμίσεις γραμματοσειράς που θα βρείτε επιλέγοντας το στοιχείο Γραμματοσειράκαι ρυθμίσεις παραθύρου κονσόλας Επιλογές.

Τη στιγμή μιας κρίσιμης αποτυχίας, το λειτουργικό σύστημα Windows σταματά να λειτουργεί και εμφανίζεται μπλε οθόνηθάνατος (BSOD). Περιεχόμενο μνήμη τυχαίας προσπέλασηςκαι όλες οι πληροφορίες σχετικά με το σφάλμα που προέκυψε εγγράφονται στο αρχείο σελιδοποίησης. Στο επόμενο Εκκίνηση των Windowsδημιουργείται μια ένδειξη σφαλμάτων με πληροφορίες εντοπισμού σφαλμάτων με βάση τα αποθηκευμένα δεδομένα. Δημιουργείται μια καταχώριση ανεπανόρθωτου σφάλματος στο αρχείο καταγραφής συμβάντων συστήματος.

Προσοχή!Δεν δημιουργείται ένδειξη σφάλματος εάν το υποσύστημα δίσκου έχει αποτύχει ή κρίσιμο σφάλμαπροέκυψε στο αρχικό στάδιο της φόρτωσης των Windows.

Τύποι απορρίψεων σφαλμάτων των Windows

Χρησιμοποιώντας το παράδειγμα του τρέχοντος λειτουργικού συστήματος Windows 10 ( Windows Server 2016) εξετάστε τους κύριους τύπους ενδείξεων μνήμης που μπορεί να δημιουργήσει το σύστημα:

  • Mini memory dump (Μικρή ένδειξη μνήμης)(256 KB). Αυτός ο τύπος αρχείου περιλαμβάνει έναν ελάχιστο όγκο πληροφοριών. Περιέχει μόνο το μήνυμα σφάλματος BSOD, πληροφορίες σχετικά με τα προγράμματα οδήγησης, τις διεργασίες που ήταν ενεργές τη στιγμή της συντριβής και ποια διεργασία ή νήμα πυρήνα προκάλεσε τη συντριβή.
  • Απόθεση μνήμης πυρήνα. Τυπικά μικρό, το ένα τρίτο της ποσότητας φυσικής μνήμης. Η ένδειξη μνήμης πυρήνα είναι πιο λεπτομερής από την minidump. Περιέχει πληροφορίες για προγράμματα οδήγησης και προγράμματα σε λειτουργία πυρήνα, περιλαμβάνει εκχωρημένη μνήμη Πυρήνας των Windowsκαι το επίπεδο αφαίρεσης υλικού (HAL), καθώς και τη μνήμη που εκχωρείται σε προγράμματα οδήγησης και άλλα προγράμματα σε λειτουργία πυρήνα.
  • Πλήρης αποθήκευση μνήμης. Το μεγαλύτερο σε μέγεθος και απαιτεί μνήμη ίση με τη μνήμη RAM του συστήματός σας συν το 1 MB που απαιτείται από τα Windows για τη δημιουργία αυτού του αρχείου.
  • Αυτόματη απόθεση μνήμης. Αντιστοιχεί σε μια ένδειξη μνήμης πυρήνα ως προς τις πληροφορίες. Διαφέρει μόνο στο πόσο χώρο χρησιμοποιεί για τη δημιουργία του αρχείου ένδειξης σφαλμάτων. Αυτός ο τύπος αρχείου δεν υπήρχε στα Windows 7. Προστέθηκε στα Windows 8.
  • Ενεργή μνήμη. Αυτός ο τύπος φιλτράρει στοιχεία που δεν μπορούν να προσδιορίσουν την αιτία μιας αποτυχίας συστήματος. Αυτό προστέθηκε στα Windows 10 και είναι ιδιαίτερα χρήσιμο εάν εκτελείτε μια εικονική μηχανή ή εάν το σύστημά σας είναι κεντρικός υπολογιστής Hyper-V.

Πώς να ενεργοποιήσετε τη δημιουργία ένδειξης σφαλμάτων μνήμης στα Windows;

Χρησιμοποιώντας Win + Pause, ανοίξτε το παράθυρο ρυθμίσεων συστήματος, επιλέξτε " Πρόσθετες ρυθμίσεις συστήματος» (Προηγμένες ρυθμίσεις συστήματος). Στην καρτέλα " Επιπροσθέτως" (Για προχωρημένους), ενότητα "" (Εκκίνηση και ανάκτηση), κάντε κλικ στο κουμπί " Επιλογές" (Ρυθμίσεις). Στο παράθυρο που ανοίγει, διαμορφώστε τις ενέργειες σε περίπτωση αποτυχίας του συστήματος. Επιλέξτε το πλαίσιο ελέγχου " Γράψτε συμβάντα σε syslog » (Γράψτε ένα συμβάν στο αρχείο καταγραφής συστήματος), επιλέξτε τον τύπο ένδειξης που θα δημιουργηθεί όταν το σύστημα διακοπεί. Εάν στο πλαίσιο ελέγχου " Αντικαταστήστε το υπάρχον αρχείο ένδειξης σφαλμάτων» (Αντικατάσταση οποιουδήποτε υπάρχοντος αρχείου) επιλέξτε το πλαίσιο, το αρχείο θα αντικαθίσταται σε κάθε σφάλμα. Είναι καλύτερα να καταργήσετε την επιλογή αυτού του πλαισίου, τότε θα έχετε περισσότερες πληροφορίες για ανάλυση. Απενεργοποιήστε επίσης αυτόματη επανεκκίνησησύστημα (Αυτόματη επανεκκίνηση).

Στις περισσότερες περιπτώσεις, μια μικρή ένδειξη μνήμης θα είναι αρκετή για την ανάλυση της αιτίας του BSOD.

Τώρα, εάν παρουσιαστεί BSOD, μπορείτε να αναλύσετε το αρχείο ένδειξης σφαλμάτων και να βρείτε την αιτία των αποτυχιών. Ένα minidump αποθηκεύεται από προεπιλογή στο φάκελο %systemroot%\minidump. Για να αναλύσετε το αρχείο ένδειξης σφαλμάτων, συνιστώ να χρησιμοποιήσετε το πρόγραμμα WinDBG(Microsoft Kernel Debugger).

Εγκατάσταση του WinDBG στα Windows

Χρησιμότητα WinDBGσυμπεριλαμβανεται σε " Windows 10 SDK» (Windows 10 SDK). .

Το αρχείο καλείται winsdksetup.exe, μέγεθος 1,3 MB.

Εκτελέστε την εγκατάσταση και επιλέξτε εάν θα εγκαταστήσετε το πακέτο σε αυτόν τον υπολογιστή ή θα το κατεβάσετε για εγκατάσταση σε άλλους υπολογιστές. Εγκαταστήστε το πακέτο στον τοπικό υπολογιστή.

Μπορείτε να εγκαταστήσετε ολόκληρο το πακέτο, αλλά για να εγκαταστήσετε μόνο το εργαλείο εντοπισμού σφαλμάτων επιλέξτε Εργαλεία εντοπισμού σφαλμάτων για Windows.

Μόλις εγκατασταθούν, οι συντομεύσεις WinDBG μπορούν να βρεθούν στο μενού έναρξης.

Ρύθμιση της συσχέτισης των αρχείων .dmp με το WinDBG

Για να ανοίξετε αρχεία ένδειξης σφαλμάτων με ένα απλό κλικ, αντιστοιχίστε την επέκταση .dmp στο βοηθητικό πρόγραμμα WinDBG.

  1. Ανοίξτε μια γραμμή εντολών ως διαχειριστής και εκτελέστε τις εντολές για ένα σύστημα 64-bit: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    για σύστημα 32 bit:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. Ως αποτέλεσμα, οι τύποι αρχείων: .DMP, .HDMP, .MDMP, .KDMP, .WEW θα αντιστοιχιστούν στο WinDBG.

Ρύθμιση διακομιστή συμβόλων εντοπισμού σφαλμάτων στο WinDBG

Τα σύμβολα εντοπισμού σφαλμάτων (σύμβολα εντοπισμού σφαλμάτων ή αρχεία συμβόλων) είναι μπλοκ δεδομένων που δημιουργούνται κατά τη διαδικασία μεταγλώττισης ενός προγράμματος μαζί με ένα εκτελέσιμο αρχείο. Τέτοια μπλοκ δεδομένων περιέχουν πληροφορίες για ονόματα μεταβλητών, που ονομάζονται συναρτήσεις, βιβλιοθήκες κ.λπ. Αυτά τα δεδομένα δεν χρειάζονται κατά την εκτέλεση του προγράμματος, αλλά χρήσιμα κατά την αποσφαλμάτωση του. Τα στοιχεία της Microsoft μεταγλωττίζονται με σύμβολα που διανέμονται μέσω του διακομιστή συμβόλων της Microsoft.

Ρυθμίστε το WinDBG για χρήση του Microsoft Symbol Server:

  • Ανοίξτε το WinDBG.
  • Μεταβείτε στο μενού αρχείο –> Διαδρομή αρχείου συμβόλων;
  • Γράψτε μια συμβολοσειρά που περιέχει τη διεύθυνση URL για τη λήψη συμβόλων εντοπισμού σφαλμάτων από τον ιστότοπο της Microsoft και το φάκελο για την αποθήκευση της προσωρινής μνήμης: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols Στο παράδειγμα, γίνεται λήψη της προσωρινής μνήμης στον φάκελο E:\Sym_WinDBG, μπορείτε να καθορίσετε οποιοδήποτε.
  • Μην ξεχάσετε να αποθηκεύσετε τις αλλαγές στο μενού αρχείο–>Αποθήκευση χώρου εργασίας.

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

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols

Εάν δεν υπάρχει σύνδεση στο Διαδίκτυο, κατεβάστε πρώτα το πακέτο συμβόλων από τον πόρο των Windows Symbol Packages.

Ανάλυση crash dump στο WinDBG

Το πρόγραμμα εντοπισμού σφαλμάτων WinDBG ανοίγει το αρχείο ένδειξης σφαλμάτων και πραγματοποιεί λήψη των απαραίτητων συμβόλων για τον εντοπισμό σφαλμάτων από έναν τοπικό φάκελο ή από το Διαδίκτυο. Κατά τη διάρκεια αυτής της διαδικασίας, δεν μπορείτε να χρησιμοποιήσετε το WinDBG. Στο κάτω μέρος του παραθύρου (στη γραμμή εντολών του προγράμματος εντοπισμού σφαλμάτων) εμφανίζεται η επιγραφή Ο εντοπισμός σφαλμάτων δεν είναι συνδεδεμένος.

Οι εντολές εισάγονται στη γραμμή εντολών που βρίσκεται στο κάτω μέρος του παραθύρου.

Το πιο σημαντικό πράγμα που πρέπει να προσέξετε είναι ο κωδικός σφάλματος, ο οποίος αναγράφεται πάντα δεκαεξαδική τιμήκαι μοιάζει με 0xXXXXXXXXX(υποδεικνύεται σε μία από τις επιλογές - STOP:, 07/02/2019 0008F, 0x8F). Στο παράδειγμά μας, ο κωδικός σφάλματος είναι 0x139.

Το πρόγραμμα εντοπισμού σφαλμάτων σας ζητά να εκτελέσετε την εντολή! analyse -v, απλώς τοποθετήστε το δείκτη του ποντικιού πάνω από τον σύνδεσμο και κάντε κλικ. Σε τι χρησιμεύει αυτή η εντολή;

  • Εκτελεί μια προκαταρκτική ανάλυση της ένδειξης μνήμης και παρέχει λεπτομερείς πληροφορίεςγια να ξεκινήσει η ανάλυση.
  • Αυτή η εντολή θα εμφανίσει τον κωδικό STOP και το συμβολικό όνομα του σφάλματος.
  • Εμφανίζει τη στοίβα κλήσεων των εντολών που οδήγησαν στη συντριβή.
  • Επιπλέον, εδώ εμφανίζονται σφάλματα διεύθυνσης IP, διαδικασίας και καταχώρησης.
  • Η ομάδα μπορεί να παρέχει έτοιμες συστάσεις για την επίλυση του προβλήματος.

Τα κύρια σημεία που πρέπει να προσέξεις κατά την ανάλυση μετά την εκτέλεση της εντολής !analyze -v (η καταχώριση δεν έχει ολοκληρωθεί).

1: kd> !analyze -v


* *
*Ανάλυση ελέγχου σφαλμάτων*
* *
*****************************************************************************
Συμβολικό όνομα του σφάλματος STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Περιγραφή του σφάλματος (Ένα στοιχείο του πυρήνα έχει καταστρέψει μια κρίσιμη δομή δεδομένων. Αυτή η καταστροφή θα μπορούσε ενδεχομένως να επιτρέψει σε έναν εισβολέα να αναλάβει τον έλεγχο αυτού του μηχανήματος):

Ένα στοιχείο του πυρήνα έχει καταστρέψει μια κρίσιμη δομή δεδομένων. Η διαφθορά θα μπορούσε ενδεχομένως να επιτρέψει σε έναν κακόβουλο χρήστη να αποκτήσει τον έλεγχο αυτού του μηχανήματος.
Ορίσματα σφάλματος:

Επιχειρήματα:
Arg1: 0000000000000003, μια LIST_ENTRY έχει καταστραφεί (δηλαδή διπλή κατάργηση).
Arg2: ffffd0003a20d5d0, Διεύθυνση του πλαισίου παγίδας για την εξαίρεση που προκάλεσε τον έλεγχο σφαλμάτων
Arg3: ffffd0003a20d528, Διεύθυνση της εγγραφής εξαίρεσης για την εξαίρεση που προκάλεσε τον έλεγχο σφαλμάτων
Arg4: 0000000000000000, δεσμευμένο
Λεπτομέρειες εντοπισμού σφαλμάτων:
------------------

Ο μετρητής δείχνει πόσες φορές το σύστημα συνετρίβη με παρόμοιο σφάλμα:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

Κωδικός σφάλματος STOP σε συντομευμένη μορφή:

BUGCHECK_STR: 0x139

Η διαδικασία που διακόπηκε (όχι απαραίτητα η αιτία του σφάλματος, απλώς αυτή η διαδικασία εκτελούσε στη μνήμη τη στιγμή της συντριβής):

PROCESS_NAME: sqlservr.exe

Αποκρυπτογράφηση κωδικού σφάλματος: Το σύστημα εντόπισε υπερχείλιση buffer στοίβας σε αυτήν την εφαρμογή, η οποία μπορεί να επιτρέψει σε έναν εισβολέα να αναλάβει τον έλεγχο αυτής της εφαρμογής.

ERROR_CODE: (NTSTATUS) 0xc0000409 - Το σύστημα εντόπισε υπέρβαση ενός buffer που βασίζεται σε στοίβα σε αυτήν την εφαρμογή. Αυτή η υπέρβαση θα μπορούσε ενδεχομένως να επιτρέψει σε έναν κακόβουλο χρήστη να αποκτήσει τον έλεγχο αυτής της εφαρμογής.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Το σύστημα εντόπισε υπέρβαση ενός buffer που βασίζεται σε στοίβα σε αυτήν την εφαρμογή. Αυτή η υπέρβαση θα μπορούσε ενδεχομένως να επιτρέψει σε έναν κακόβουλο χρήστη να αποκτήσει τον έλεγχο αυτής της εφαρμογής.

Τελευταία κλήση στη στοίβα:

LAST_CONTROL_TRANSFER: από fffff8040117d6a9 σε fffff8040116b0a0

Στοίβα κλήσεων τη στιγμή της αποτυχίας:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`5KE8Bxeck!
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2KiBxpacktch!
fffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`000000000 00000000000000000000000
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`0000006fffff804`0000006ffff804`000006fffff804`000006fffff804`000006fffff804!
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000
ffffd000`3a20d990 fffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`000000000 000000eb`a0cf1380!
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`000000000 0000000000 0000000000 00000
000000ee'f25ed2b8 00000000'00000000: 00000000'00000000 00000000'000000000 0000000000000000000

Η ενότητα του κώδικα όπου παρουσιάστηκε το σφάλμα:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: Ιδιοκτήτης μηχανήματος

Το όνομα της λειτουργικής μονάδας στον πίνακα αντικειμένων πυρήνα. Εάν ο αναλυτής μπόρεσε να εντοπίσει ένα προβληματικό πρόγραμμα οδήγησης, το όνομα εμφανίζεται στα πεδία MODULE_NAME και IMAGE_NAME:

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd > lmvm nt
Περιηγηθείτε στην πλήρη λίστα λειτουργικών μονάδων
Φορτωμένο αρχείο εικόνας συμβόλων: ntkrnlmp.exe
Αρχείο εικόνας αντιστοιχισμένης μνήμης: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Διαδρομή εικόνας: ntkrnlmp.exe
Όνομα εικόνας: ntkrnlmp.exe
Εσωτερικό Όνομα: ntkrnlmp.exe
Αρχικό όνομα αρχείου: ntkrnlmp.exe
Έκδοση προϊόντος: 6.3.9600.18946
Έκδοση αρχείου: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Στο παραπάνω παράδειγμα, η ανάλυση έδειξε το αρχείο πυρήνα ntkrnlmp.exe. Όταν η ανάλυση ένδειξης σφαλμάτων μνήμης δείχνει ένα πρόγραμμα οδήγησης συστήματος (για παράδειγμα, win32k.sys) ή ένα αρχείο πυρήνα (για παράδειγμα, ntkrnlmp.exe στο παράδειγμά μας), είναι πολύ πιθανό δεδομένο αρχείοδεν είναι η αιτία του προβλήματος. Πολύ συχνά αποδεικνύεται ότι το πρόβλημα βρίσκεται στο πρόγραμμα οδήγησης της συσκευής, Ρυθμίσεις BIOSή δυσλειτουργία εξοπλισμού.

Εάν δείτε ότι το BSOD οφείλεται σε πρόγραμμα οδήγησης τρίτου μέρους, το όνομά του θα εμφανίζεται στις τιμές MODULE_NAME και IMAGE_NAME.

Για παράδειγμα:

Διαδρομή εικόνας: \SystemRoot\system32\drivers\cmudaxp.sys
Όνομα εικόνας: cmudaxp.sys

Ανοίξτε τις ιδιότητες του αρχείου προγράμματος οδήγησης και ελέγξτε την έκδοσή του. Στις περισσότερες περιπτώσεις, το πρόβλημα με τα προγράμματα οδήγησης λύνεται με την ενημέρωση τους.

Αυτοί οι τύποι αστοχιών σχετίζονται συνήθως με ένα αποτυχημένο πρόγραμμα οδήγησης που μπορεί να είναι δύσκολο να εντοπιστεί. Ωστόσο, το βελτιωμένο σύστημα παρακολούθησης σφαλμάτων Windows Vista(και όχι μόνο στα Vista!) μπορεί συχνά να σας οδηγήσει σε ένα προβληματικό αρχείο. Ως αποτέλεσμα, οι περισσότεροι άνθρωποι σταματούν να προσπαθούν μανιωδώς να εργαστούν σε έναν ασταθή υπολογιστή, αποθηκεύοντας έγγραφα με παρανοϊκή κανονικότητα και ελπίζοντας για το καλύτερο.

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

Κατεβάστε μόνοι σας ένα εργαλείο εντοπισμού σφαλμάτων

Μπορείτε να κάνετε λήψη των Windows Debugging Tools απευθείας από τον ιστότοπο της Microsoft. Το πρόγραμμα λειτουργεί με πολλά λειτουργικά συστήματα, ξεκινώντας από τα Windows NT 4 και τελειώνοντας με τα Windows 2008, επομένως δεν θα πρέπει να έχετε κανένα πρόβλημα με αυτό. Ναι, δεν μπορούμε να πούμε ότι είναι σταθερό στα Windows 7 RC, αλλά σύμφωνα με τις δοκιμές μας εξακολουθεί να λειτουργεί. Επομένως, ακόμη και μια προσπάθεια διάγνωσης ενός προβλήματος από τα Windows 7 RC μπορεί να είναι επιτυχής.

Διαμορφώστε το σύστημά σας

Κατά τη διάρκεια σφαλμάτων, ο υπολογιστής σας χρειάζεται να δημιουργήσει ενδείξεις ένδειξης μνήμης που αργότερα θα χρησιμεύσει ως πηγή πληροφοριών για το πρόγραμμα εντοπισμού σφαλμάτων. Ως εκ τούτου, είναι σημαντικό τα Windows να έχουν ρυθμιστεί ώστε να δημιουργούν dumps. Για να προσαρμόσετε το λειτουργικό σας σύστημα, κάντε κλικ κάντε δεξί κλικτοποθετήστε το ποντίκι πάνω από τον υπολογιστή σας και επιλέξτε Ιδιότητες. Στη συνέχεια, κάντε κλικ στην καρτέλα Advanced System Settings, σε αυτήν βρείτε την υποενότητα Startup and Recovery Settings και βεβαιωθείτε ότι η επιλογή Write debugging information έχει οριστεί σε Kernel memory dump ) ή Complete memory dump.

Στη συνέχεια, κάντε κλικ στο Έναρξη, μεταβείτε στα Προγράμματα (Όλα τα προγράμματα), επιλέξτε Εργαλεία εντοπισμού σφαλμάτων και εκτελέστε το WinDbg. Στο πρόγραμμα, μεταβείτε στο μενού Αρχείο και επιλέξτε Symbol File Path ... Στη συνέχεια, γράψτε την ακόλουθη γραμμή στο παράθυρο που ανοίγει:

SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

Το τελευταίο καθορίζει τη διαδρομή προς τα ειδικά δεδομένα - τα λεγόμενα "σύμβολα" (σύμβολα), τα οποία μπορούν να βοηθήσουν το εργαλείο εντοπισμού σφαλμάτων στον εντοπισμό του αρχείου που έχει διακοπεί.

Αφού εισαγάγετε τη συμβολοσειρά, κάντε κλικ στο κουμπί OK. Αργότερα, όταν εργάζεστε με το πρόγραμμα εντοπισμού σφαλμάτων, αυτή η γραμμή θα προκαλέσει τη λήψη των συμβόλων από το msdl.microsoft.com και την αποθήκευση στο φάκελο c:\symbols.

Λύστε το πρόβλημά σας

Τώρα περιμένετε για άλλη μια αποτυχία μπλε οθόνης και την επακόλουθη ολοκλήρωση της επανεκκίνησης του υπολογιστή. Στη συνέχεια, εκτελέστε ξανά το WinDbg (οι χρήστες Vista πρέπει να εκτελέσουν το πρόγραμμα ως διαχειριστής), κάντε κλικ στο μενού Αρχείο, επιλέξτε Open Crash Dump, ανοίξτε το αρχείο \Windows\MEMORY.DMP και το πρόγραμμα θα αρχίσει αμέσως να το αναλύει.

Δυστυχώς, το WinDbg παρέχει ελάχιστες πληροφορίες σχετικά με το τι κάνει, οπότε μπορεί να πιστεύετε ότι το πρόγραμμα έχει κολλήσει. Ωστόσο, περιμένετε. Κατανοήστε, η ανάλυση, για παράδειγμα, 4 GB μνήμης δεν είναι πολύ ισχυρός υπολογιστήςμπορεί να πάρει κάποιο χρόνο, έως και ώρες. Επομένως, να είστε υπομονετικοί, αλλά μάλλον αφήστε την ανάλυση μια νύχτα.

Ωστόσο, συνήθως το αποτέλεσμα επιτυγχάνεται μέσα σε λίγα λεπτά. Αυτό αποδεικνύεται από τη γραμμή Ανάλυσης ελέγχου σφαλμάτων που λέει κάτι σαν "Πιθανώς προκαλείται από: UACReplace.sys". Μεταφρασμένο στα Ρωσικά, αυτό σημαίνει ότι το πρόβλημα πιθανώς προκαλείται από το αρχείο UACReplace.sys. Εισαγάγετε το στη γραμμή αναζήτησης, για παράδειγμα, στο Google και θα μάθετε την πραγματική του προέλευση. Συγκεκριμένα, εάν ανήκει σε ένα από τα προγράμματα που εγκαταστήσατε ή εγκατεστημένο πρόγραμμα οδήγησης, τότε μπορείτε απλώς να προσπαθήσετε να το ενημερώσετε ή αυτόν. Ίσως αυτό θα λύσει τα προβλήματά σας.

Πρέπει να πω ότι κατά καιρούς το WinDbg δεν μπορεί να ονομάσει καθόλου το αρχείο ή απλώς επιλέγει ένα από τα DLL των Windows. Εάν αυτό συνέβη σε εσάς, κάντε απλώς κλικ στο παράθυρο εντολών πάνω από τη γραμμή κατάστασης και πληκτρολογήστε την εντολή:

Μετά από αυτό πατήστε Enter. Αυτό θα σας παρέχει μια πιο λεπτομερή αναφορά που μπορεί να περιέχει πληροφορίες σχετικά με πιθανούς λόγουςτα προβλήματά σου.

Αν αυτή τη φορά δεν είστε τυχεροί, μην απελπίζεστε. Ο εντοπισμός σφαλμάτων είναι αρκετά δύσκολος, ακόμη και για ειδικούς. Επομένως, απλώς κλείστε το WinDbg και εκτελέστε ξανά τον αναλυτή μετά το επόμενο σφάλμα. Ίσως αυτό να σας δώσει περισσότερες πληροφορίες. Καλή τύχη!

Εργαλεία εντοπισμού σφαλμάτων για Windows- Εργαλεία για τον εντοπισμό σφαλμάτων του κώδικα των λειτουργικών συστημάτων Windows. Είναι ένα σύνολο ελεύθερα διανεμημένων προγραμμάτων από τη Microsoft που έχουν σχεδιαστεί για τον εντοπισμό σφαλμάτων σε λειτουργία χρήστη και κώδικα λειτουργίας πυρήνα: εφαρμογές, προγράμματα οδήγησης, υπηρεσίες, λειτουργικές μονάδες πυρήνα. Η εργαλειοθήκη περιλαμβάνει προγράμματα εντοπισμού σφαλμάτων κονσόλας και GUI, βοηθητικά προγράμματα για εργασία με σύμβολα, αρχεία, διαδικασίες, βοηθητικά προγράμματα για απομακρυσμένο εντοπισμό σφαλμάτων. Η εργαλειοθήκη περιέχει βοηθητικά προγράμματα με τα οποία μπορείτε να βρείτε τις αιτίες των αστοχιών σε διάφορα στοιχεία του συστήματος. Εργαλεία εντοπισμού σφαλμάτων για Windowsαπό μια συγκεκριμένη στιγμή δεν είναι διαθέσιμα για λήψη με τη μορφή αυτόνομης διανομής και αποτελούν μέρος του Windows SDK (Windows Software Development Kit). Το Windows SDK, με τη σειρά του, είναι διαθέσιμο ως μέρος του Συνδρομητικού Προγράμματος MSDN ή μπορεί να ληφθεί ελεύθερα ως ξεχωριστή διανομή από το msdn.microsoft.com. Σύμφωνα με τους προγραμματιστές, το πιο πρόσφατο και καλύτερο τρέχουσα έκδοσηΤα Εργαλεία εντοπισμού σφαλμάτων για Windows περιέχονται στο SDK των Windows.

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

Ας δούμε τώρα σε τι χρησιμεύουν συγκεκριμένα τα Εργαλεία εντοπισμού σφαλμάτων Microsoft Windows:

  • Εντοπισμός σφαλμάτων τοπικές εφαρμογές, υπηρεσίες (υπηρεσίες), προγράμματα οδήγησης και πυρήνας.
  • Εντοπισμός σφαλμάτων μέσω δικτύου απομακρυσμένες εφαρμογές, υπηρεσίες (υπηρεσίες), προγράμματα οδήγησης και πυρήνας.
  • Αποσφαλμάτωση εφαρμογών που εκτελούνται σε πραγματικό χρόνο.
  • Αναλύστε τα αρχεία ένδειξης μνήμης των εφαρμογών, του πυρήνα και του συστήματος στο σύνολό του.
  • Εργασία με συστήματα που βασίζονται σε αρχιτεκτονικές x86/x64/Itanium.
  • Εντοπισμός σφαλμάτων σε προγράμματα λειτουργίας χρήστη και πυρήνα.

Διατίθενται οι ακόλουθες εκδόσεις των Εργαλείων εντοπισμού σφαλμάτων για Windows: 32-bit x86, Intel Itanium, 64-bit x64. Χρειαζόμαστε δύο από αυτά: x86 ή x64.

Υπάρχουν διάφοροι τρόποι εγκατάστασης των Εργαλείων εντοπισμού σφαλμάτων για Windows, σε αυτό το άρθρο θα εξετάσουμε μόνο τους κύριους:

  • Εγκατάσταση μέσω web installer.
  • Εγκατάσταση εργαλείων εντοπισμού σφαλμάτων για Windows από το Windows SDK ISO.
  • Εγκατάσταση εργαλείων εντοπισμού σφαλμάτων για Windows απευθείας από τα πακέτα dbg_amd64.msi /dbg_x86.msi.

Παραμένει ασαφές σε ποιο σημείο, γιατί πρέπει να εγκαταστήσω εργαλεία εντοπισμού σφαλμάτων σε έναν υπολογιστή; Συχνά, εξάλλου, βρίσκεστε αντιμέτωποι με μια κατάσταση όπου παρέμβαση σε περιβάλλον εργασίαςάκρως ανεπιθύμητο! Και ακόμη περισσότερο, καθώς η εγκατάσταση ενός νέου προϊόντος, δηλαδή η πραγματοποίηση αλλαγών στο μητρώο / αρχεία συστήματος, μπορεί να είναι εντελώς απαράδεκτη. Παραδείγματα είναι οι κρίσιμοι διακομιστές. Γιατί οι προγραμματιστές δεν εξετάζουν τις φορητές εκδόσεις εφαρμογών που δεν απαιτούν εγκατάσταση;
Από έκδοση σε έκδοση, η διαδικασία εγκατάστασης του πακέτου Εργαλείων εντοπισμού σφαλμάτων για Windows υφίσταται κάποιες αλλαγές. Ας μεταβούμε τώρα κατευθείαν στη διαδικασία εγκατάστασης και ας δούμε τους τρόπους με τους οποίους μπορεί να εγκατασταθεί η εργαλειοθήκη.

Εγκατάσταση εργαλείων εντοπισμού σφαλμάτων για Windows χρησιμοποιώντας το πρόγραμμα εγκατάστασης Web

Μεταβείτε στη σελίδα Αρχείο Windows SDK και βρείτε μια ενότητα που ονομάζεται Windows 10 και κάτω από το στοιχείο "Windows 10 SDK (10586) και Microsoft Windows 10 Mobile Device Emulator (έκδοση 10586.11)".

Κάντε κλικ σε ένα στοιχείο ΕΓΚΑΤΑΣΤΑΣΗ SDK. Αφού κάνετε κλικ, κατεβάστε και εκτελέστε το αρχείο sdksetup.exe, το οποίο ξεκινά τη διαδικασία Ηλεκτρονικές εγκαταστάσεις Windows SDK. Στο αρχικό στάδιο, το πρόγραμμα εγκατάστασης θα ελέγξει εάν η πιο πρόσφατη έκδοση του πακέτου .NET Framework είναι εγκατεστημένη στο σύστημα (επί του παρόντος είναι 4.5). Εάν το πακέτο λείπει, η εγκατάσταση θα προσφερθεί και ο σταθμός θα επανεκκινηθεί όταν ολοκληρωθεί. Αμέσως μετά την επανεκκίνηση, στο στάδιο της εξουσιοδότησης χρήστη, η διαδικασία εγκατάστασης ξεκινά απευθείας με το Windows SDK.

Συχνά, κατά την επιλογή όλων των στοιχείων του πακέτου χωρίς εξαίρεση, ενδέχεται να προκύψουν σφάλματα κατά τη διαδικασία εγκατάστασης. Σε αυτή την περίπτωση, συνιστάται η επιλεκτική εγκατάσταση εξαρτημάτων, το ελάχιστο απαιτούμενο σύνολο.

Αφού ολοκληρωθεί η εγκατάσταση των Εργαλείων εντοπισμού σφαλμάτων για Windows, η θέση των αρχείων εντοπισμού σφαλμάτων με αυτήν τη μέθοδο εγκατάστασης θα είναι η εξής:

  • Εκδόσεις 64-bit: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • Εκδόσεις 32 bit: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* όπου το x.x είναι μια συγκεκριμένη έκδοση του κιτ ανάπτυξης.
Παρατηρήσαμε ότι στις εκδόσεις 8 και νεότερες, οι διαδρομές εγκατάστασης είναι αισθητά διαφορετικές από τις κλασικές για όλους ΠΡΟΗΓΟΥΜΕΝΕΣ ΕΚΔΟΣΕΙΣεργαλεία εντοπισμού σφαλμάτων;

Ένα τεράστιο συν αυτή τη μέθοδοΗ εγκατάσταση του Debigging Tools για Windows είναι η εγκατάσταση εκδόσεων των εργαλείων εντοπισμού σφαλμάτων για όλες τις αρχιτεκτονικές ταυτόχρονα.

Εγκατάσταση εργαλείων εντοπισμού σφαλμάτων για Windows από το Windows SDK ISO

Αυτή η μέθοδος περιλαμβάνει την εγκατάσταση των Εργαλείων εντοπισμού σφαλμάτων για Windows χρησιμοποιώντας την πλήρη εικόνα εγκατάστασης του Windows SDK (Software Developers Kit). Μέχρι μια συγκεκριμένη ώρα, κατεβάστε εικόνα isoγια το κατάλληλο σύστημα, μπορείτε να επισκεφτείτε τη σελίδα Αρχείο SDK των Windows. Ωστόσο, αυτή τη στιγμή, μπορείτε να λάβετε μια εικόνα ISO του SDK εκτελώντας το πρόγραμμα εγκατάστασης web sdksetup.exe και επιλέγοντας το στοιχείο Κατεβάστε το κιτ ανάπτυξης λογισμικού των Windowsστο παράθυρο έναρξης του προγράμματος εγκατάστασης:

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

Αντίστοιχα, στη σελίδα πρέπει να επιλέξετε το απαιτούμενο κιτ διανομής, για μένα (και νομίζω για πολλούς) αυτή τη στιγμή είναι "Windows SDK για Windows 7 και .NET Framework 4" και λίγο πιο κάτω κάντε κλικ στον σύνδεσμο "Λήψη Εικόνα ISO DVD".

Όταν εργάζεστε με τον ιστότοπο msdn.microsoft.com, σας συμβουλεύω να χρησιμοποιήσετε περιηγητής διαδυκτίουΕξερευνήστε γιατί τα ανταγωνιστικά προϊόντα δεν λειτουργούν!

Κατά συνέπεια, είναι απαραίτητο να επιλέξετε μόνο όπως είναι απαραίτητο. Συνήθως το bit των εργαλείων εντοπισμού σφαλμάτων για Windows είναι το ίδιο με το bit του συστήματος. Τα δοκιμαστικά μου συστήματα είναι ως επί το πλείστον 64-bit, επομένως στις περισσότερες περιπτώσεις κατεβάζω την εικόνα για το σύστημα 64-bit GRMSDKX_EN_DVD.iso .
Στη συνέχεια, μετά τη λήψη της εικόνας, πρέπει να εργαστούμε με κάποιο τρόπο με την υπάρχουσα εικόνα ISO. Ο παραδοσιακός τρόπος είναι, φυσικά, η εγγραφή ενός CD, αλλά αυτή είναι μια μάλλον μακρά και μερικές φορές δαπανηρή μέθοδος. Προτείνω τη χρήση δωρεάν βοηθητικών προγραμμάτων για τη δημιουργία συσκευών εικονικού δίσκου στο σύστημα. Προσωπικά, προτιμώ να χρησιμοποιώ το πρόγραμμα DEAMON Tools Lite για αυτό το σκοπό. Κάποιος μπορεί να έχει άλλες προτιμήσεις, πιο άμεσες ή ελαφριές χρησιμότητα, σε γεύση και χρώμα, όπως λένε.. Μετά την εγκατάσταση DAEMON Tools Lite, απλώς κάνω διπλό κλικ στο αρχείο εικόνας GRMSDKX_EN_DVD.iso και έχω ένα νέο εικονικό CD στο σύστημά μου:

Στη συνέχεια, κάνω διπλό κλικ για να ενεργοποιηθεί η αυτόματη φόρτωση και να εκτελεστεί εγκατάσταση των Windows SDK:

Όταν έρθει η σειρά για την επιλογή των στοιχείων που θα εγκατασταθούν από τη λίστα, απενεργοποιούμε απολύτως όλες τις επιλογές εκτός από αυτές που επισημαίνονται στο στιγμιότυπο οθόνης. Αυτό θα μας βοηθήσει να αποφύγουμε περιττά λάθη τώρα.


Σωστά, το στιγμιότυπο οθόνης δείχνει δύο επιλογές: "Windows Performance Toolkit" και "Εργαλεία εντοπισμού σφαλμάτων για Windows". Επιλέξτε και τα δύο, γιατί το Windows Performance Toolkit σίγουρα θα σας φανεί χρήσιμο στη δουλειά σας! Περαιτέρω, αφού κάνετε κλικ στο κουμπί "Επόμενο", η εγκατάσταση συνεχίζεται στην κανονική λειτουργία. Και στο τέλος θα δείτε την επιγραφή "Η εγκατάσταση ολοκληρώθηκε".
Μετά την ολοκλήρωση της εγκατάστασης, οι κατάλογοι εργασίας του κιτ Εργαλείων εντοπισμού σφαλμάτων για Windows θα είναι οι εξής:

  • Για την έκδοση x86:
  • Για την έκδοση x64:

Αυτό ολοκληρώνει την εγκατάσταση των Εργαλείων εντοπισμού σφαλμάτων για Windows.

Εγκατάσταση εργαλείων εντοπισμού σφαλμάτων για Windows μέσω αρχείου .msi

Σε περίπτωση προβλημάτων κατά την εγκατάσταση των Εργαλείων εντοπισμού σφαλμάτων για Windows με τους δύο προηγούμενους τρόπους, έχουμε ακόμα έναν, τον πιο αξιόπιστο και δοκιμασμένο στο χρόνο, που βοήθησε, ας πούμε, περισσότερες από μία φορές. Κάποτε, πριν από την ενσωμάτωση στο Windows SDK, τα Εργαλεία εντοπισμού σφαλμάτων για Windows ήταν διαθέσιμα ως ξεχωριστό πρόγραμμα εγκατάστασης .msi, το οποίο μπορεί να βρεθεί ακόμα, αλλά ήδη στα έγκατα της διανομής του SDK των Windows. Εφόσον διαθέτουμε ήδη μια εικόνα ISO του Windows SDK, δεν μπορούμε να την προσαρτήσουμε στο σύστημα, αλλά απλώς να την ανοίξουμε χρησιμοποιώντας το γνωστό αρχειοθέτημα WinRAR ή οποιοδήποτε άλλο προϊόν που λειτουργεί με τα περιεχόμενα των δίσκων ISO.

Αφού ανοίξουμε την εικόνα, πρέπει να πάμε στον κατάλογο "Setup" που βρίσκεται στη ρίζα και στη συνέχεια να επιλέξουμε έναν από τους καταλόγους:

  • Για να εγκαταστήσετε την έκδοση 64-bit: \Setup\WinSDKDebuggingTools_amd64και αποσυσκευάστε το αρχείο dbg_amd64.msi από αυτόν τον κατάλογο.
  • Για να εγκαταστήσετε την έκδοση 32-bit: \Setup\WinSDKDebuggingTools και αποσυσκευάστε το αρχείο dbg_x86.msi από αυτόν τον κατάλογο.

Μετά την ολοκλήρωση της εγκατάστασης, οι κατάλογοι εργασίας του κιτ Εργαλείων εντοπισμού σφαλμάτων για Windows θα είναι οι εξής:

  • Για την έκδοση x86: C:\Program Files (x86)\Debugging Tools for Windows (x86)
  • Για την έκδοση x64: C:\Program Files\Debugging Tools for Windows (x64)

Σε αυτό το σημείο, η εγκατάσταση των Εργαλείων εντοπισμού σφαλμάτων για Windows μπορεί να θεωρηθεί ολοκληρωμένη.

Επιπλέον πληροφορίες

Δεν ξέρω με τι συνδέεται, ίσως με την απροσεξία μου, αλλά μετά την εγκατάσταση των Εργαλείων εντοπισμού σφαλμάτων για Windows, το πρόγραμμα εγκατάστασης δεν ορίζει τη διαδρομή προς τον κατάλογο με τον εντοπισμό σφαλμάτων στη μεταβλητή Path system path. Αυτό επιβάλλει ορισμένους περιορισμούς στην εκτέλεση διαφόρων εργασιών εντοπισμού σφαλμάτων απευθείας από την κονσόλα. Επομένως, ελλείψει μονοπατιού, ο ίδιος γράφω στο παράθυρο Μεταβλητές Περιβάλλοντοςδιαδρομή προς τα εργαλεία εντοπισμού σφαλμάτων:

  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

* Στην περίπτωσή σας, οι διαδρομές ενδέχεται να διαφέρουν τόσο λόγω της χρήσης ενός λειτουργικού συστήματος διαφορετικού bit όσο και λόγω της χρήσης ενός SDK διαφορετικής έκδοσης.

Τα βοηθητικά προγράμματα του πακέτου Εργαλεία εντοπισμού σφαλμάτων για Windows μπορούν να λειτουργήσουν ως φορητές εφαρμογές, απλώς αντιγράψτε από σύστημα εργασίαςκατάλογος Microsoft Windows Performance Toolkitκαι χρησιμοποιήστε το ως φορητή έκδοση σε διακομιστή παραγωγής. Αλλά μην ξεχάσετε να λάβετε υπόψη τη χωρητικότητα του συστήματος !! Ακόμα κι αν έχετε κάνει μια πλήρη εγκατάσταση του πακέτου σε ένα κρίσιμο σύστημα, τότε μπορείτε να ξεκινήσετε να εργάζεστε αμέσως μετά την εγκατάσταση, δεν απαιτείται επανεκκίνηση.

Εργαλεία εντοπισμού σφαλμάτων για Windows

Και τώρα, τέλος, εδώ είναι η σύνθεση των Εργαλείων εντοπισμού σφαλμάτων για Windows:

Αρχείο Σκοπός
adplus.doc Τεκμηρίωση για το βοηθητικό πρόγραμμα ADPlus.
adplus.exe Μια εφαρμογή κονσόλας που αυτοματοποιεί την εργασία του προγράμματος εντοπισμού σφαλμάτων cdb για τη δημιουργία ενδείξεων, αρχείων καταγραφής για μία ή περισσότερες διεργασίες.
agestore.exe Ένα βοηθητικό πρόγραμμα για την αφαίρεση παρωχημένων αρχείων από την αποθήκευση που χρησιμοποιείται από τον διακομιστή συμβόλων ή τον διακομιστή πηγής.
breakin.exe Ένα βοηθητικό πρόγραμμα που σας επιτρέπει να στείλετε έναν προσαρμοσμένο συνδυασμό διακοπής στις διεργασίες, παρόμοιο με το πάτημα CTRL+C.
cdb.exe Εντοπιστής σφαλμάτων κονσόλας λειτουργίας χρήστη.
convertstore.exe Βοηθητικό πρόγραμμα μετατροπής χαρακτήρων από 2 σε 3 επίπεδα.
dbengprx.exe Ripiter (διακομιστής μεσολάβησης) για απομακρυσμένο εντοπισμό σφαλμάτων.
dbgpc.exe Ένα βοηθητικό πρόγραμμα για την εμφάνιση πληροφοριών σχετικά με την κατάσταση μιας κλήσης RPC.
dbgsrv.exe Η διαδικασία διακομιστή που χρησιμοποιείται για απομακρυσμένο εντοπισμό σφαλμάτων.
dbh.exe Ένα βοηθητικό πρόγραμμα για την εμφάνιση πληροφοριών σχετικά με τα περιεχόμενα ενός αρχείου συμβόλων.
dumpchk.exe Βοηθητικό πρόγραμμα επαλήθευσης απόρριψης. Βοηθητικό πρόγραμμα για γρήγορος έλεγχοςαρχείο dump.
dumpexam.exe Ένα βοηθητικό πρόγραμμα για την ανάλυση μιας ένδειξης αποθήκευσης μνήμης. Το αποτέλεσμα εξάγεται στο %SystemRoot%\MEMORY.TXT .
gflags.exe Συντάκτης σημαιών παγκόσμιου συστήματος. Το βοηθητικό πρόγραμμα διαχειρίζεται τα κλειδιά μητρώου και άλλες ρυθμίσεις.
i386kd.exe Περιτύλιγμα για κδ. Αυτό ονομαζόταν κάποτε το kd για συστήματα που βασίζονται στα Windows NT/2000 για μηχανές x86; Μάλλον έφυγε για λόγους συμβατότητας.
ia64kd.exe Περιτύλιγμα για κδ. Αυτό ονομαζόταν κάποτε το kd για συστήματα βασισμένα στα Windows NT/2000 για μηχανές ia64; Μάλλον έφυγε για λόγους συμβατότητας.
kd.exe Εντοπιστής σφαλμάτων κονσόλας σε λειτουργία πυρήνα.
kdbgctrl.exe Εργαλείο διαχείρισης εντοπισμού σφαλμάτων πυρήνα. Βοηθητικό πρόγραμμα για τη διαχείριση και τη διαμόρφωση της σύνδεσης εντοπισμού σφαλμάτων πυρήνα.
kdsrv.exe Διακομιστής σύνδεσης για KD. Το βοηθητικό πρόγραμμα είναι μια μικρή εφαρμογή που εκτελείται και περιμένει για απομακρυσμένες συνδέσεις. Το kd εκτελείται σε έναν πελάτη και συνδέεται με αυτόν τον διακομιστή για απομακρυσμένο εντοπισμό σφαλμάτων. Τόσο ο διακομιστής όσο και ο πελάτης πρέπει να προέρχονται από το ίδιο συγκρότημα εργαλείων εντοπισμού σφαλμάτων.
kill.exe Βοηθητικό πρόγραμμα τερματισμού διαδικασιών.
list.exe Ένα βοηθητικό πρόγραμμα για την εμφάνιση των περιεχομένων ενός αρχείου στην οθόνη. Αυτό το μικροσκοπικό βοηθητικό πρόγραμμα συνδυάστηκε με έναν σκοπό - την προβολή μεγάλων αρχείων κειμένου ή αρχείων καταγραφής. Καταλαμβάνει λίγο χώρο στη μνήμη, καθώς φορτώνει το κείμενο σε μέρη.
logger.exe Ένα μικροσκοπικό πρόγραμμα εντοπισμού σφαλμάτων που μπορεί να λειτουργήσει μόνο με μία διαδικασία. Το βοηθητικό πρόγραμμα εισάγει το logexts.dll στο χώρο διεργασίας, ο οποίος καταγράφει όλες τις κλήσεις συναρτήσεων και άλλες ενέργειες του προγράμματος που εξετάζεται.
logviewer.exe Ένα βοηθητικό πρόγραμμα για την προβολή αρχείων καταγραφής γραμμένων από το πρόγραμμα εντοπισμού σφαλμάτων logger.exe.
ntsd.exe Microsoft NT Symbolic Debugger (NTSD). Ένα πρόγραμμα εντοπισμού σφαλμάτων που είναι πανομοιότυπο με το cdb, εκτός από το ότι δημιουργεί ένα παράθυρο κειμένου κατά την εκκίνηση. Όπως το cdb, το ntsd είναι ικανό να διορθώνει τόσο τις εφαρμογές της κονσόλας όσο και τις εφαρμογές γραφικών.
pdbcopy.exe Ένα βοηθητικό πρόγραμμα για την αφαίρεση ιδιωτικών συμβόλων από ένα αρχείο συμβόλων, τον έλεγχο των δημόσιων συμβόλων που περιλαμβάνονται σε ένα αρχείο συμβόλων.
remote.exe Βοηθητικό πρόγραμμα για απομακρυσμένο εντοπισμό σφαλμάτων και απομακρυσμένο έλεγχο οποιουδήποτε προγράμματος εντοπισμού σφαλμάτων κονσόλας KD, CDB και NTSD. Σας επιτρέπει να εκτελείτε όλα αυτά τα προγράμματα εντοπισμού σφαλμάτων κονσόλας από απόσταση.
rtlist.exe Απομακρυσμένο πρόγραμμα προβολής εργασιών. Το βοηθητικό πρόγραμμα χρησιμοποιείται για την εμφάνιση μιας λίστας τρέχουσες διαδικασίεςμέσω της διαδικασίας διακομιστή DbgSrv.
symchk.exe Ένα βοηθητικό πρόγραμμα για τη λήψη συμβόλων από τον διακομιστή συμβόλων της Microsoft και τη δημιουργία μιας τοπικής προσωρινής μνήμης συμβόλων.
symstore.exe Βοηθητικό πρόγραμμα για τη δημιουργία δικτύου ή τοπική αποθήκευσηχαρακτήρες (2-tier/3-tier). Ο χώρος αποθήκευσης συμβόλων είναι ένας εξειδικευμένος κατάλογος στο δίσκο που είναι κατασκευασμένος σύμφωνα με μια συγκεκριμένη δομή και περιέχει σύμβολα. Στον ριζικό κατάλογο των συμβόλων, δημιουργείται μια δομή υποφακέλου με ονόματα πανομοιότυπα με τα ονόματα των στοιχείων. Με τη σειρά του, καθένας από αυτούς τους υποφακέλους περιέχει ένθετους υποφακέλους με ειδικά ονόματα που λαμβάνονται με κατακερματισμό δυαδικών αρχείων. Το βοηθητικό πρόγραμμα symstore σαρώνει φακέλους στοιχείων και προσθέτει νέα στοιχεία στο χώρο αποθήκευσης συμβόλων όπου οποιοσδήποτε πελάτης μπορεί να τα ανακτήσει. Το symstore λέγεται ότι χρησιμοποιείται για τη λήψη συμβόλων από τον χώρο αποθήκευσης 0 επιπέδων και την τοποθέτηση τους στον χώρο αποθήκευσης 2 επιπέδων/3 επιπέδων.
tlist.exe Προβολή εργασιών. Ένα βοηθητικό πρόγραμμα για την καταχώριση όλων των διεργασιών που εκτελούνται.
umdh.exe Βοηθητικό πρόγραμμα σωρού απόρριψης λειτουργίας χρήστη. Ένα βοηθητικό πρόγραμμα για την ανάλυση σωρών μιας επιλεγμένης διαδικασίας. Σας επιτρέπει να εμφανίζετε διάφορες επιλογές για το σωρό.
usbview.exe Προβολή USB. βοηθητικό πρόγραμμα για προβολή συσκευές USBσυνδεδεμένο σε υπολογιστή.
vmdemux.exe Αποπολυπλέκτης εικονικής μηχανής. Δημιουργεί πολλαπλούς αγωγούς με όνομα για μία μόνο σύνδεση COM. Τα κανάλια χρησιμοποιούνται για τον εντοπισμό σφαλμάτων σε διάφορα στοιχεία της εικονικής μηχανής
windbg.exe Λειτουργία χρήστη και εντοπισμός σφαλμάτων πυρήνα με GUI.