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

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

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

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

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

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

Πώς να ενεργοποιήσετε την απόρριψη μνήμης στα Windows;

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

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

Τώρα, όταν εμφανίζεται ένα BSOD, μπορείτε να αναλύσετε το αρχείο ένδειξης σφαλμάτων και να βρείτε την αιτία της αποτυχίας. Το mini dump αποθηκεύεται στον φάκελο %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Διακομιστής συμβόλων:

  • Ανοίξτε το 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: , 02/07/2019 0008F, 0x8F). Στο παράδειγμά μας, ο κωδικός σφάλματος είναι 0x139.

Το πρόγραμμα εντοπισμού σφαλμάτων προσφέρει να εκτελέσει την εντολή!analyze -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 0000000000000000000000 xd 0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`0000006Ffff804`000006ffff804`000006Fffff804`000006ffffc 0
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`000000004 00000000`00000000 ffffd000`3a20d9d8S fffe001`0a34nt60:S34nt60000000000000 9
ffffd000`3a20d990 fffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`000000000 000000eb`a0cf1380!
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`000000000 000000000000000 0 x 13
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`000000000`000000000 5 307da

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

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

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

στις 22 Ιουνίου 2010

Παλαιότερα το Windbg ήταν διαθέσιμο ξεχωριστά για λήψη. Αλλά για τις πιο πρόσφατες εκδόσεις, η Microsoft το διατηρεί ως μέρος του Windows SDK. Βρείτε τους παρακάτω συνδέσμους λήψης.

Windows 10

Μπορείτε να κατεβάσετε την τελευταία έκδοση του Windbg για Windows 7 από τον σύνδεσμο https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Windows 7

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

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

Αφού κάνετε την εγκατάσταση, μπορείτε να βρείτε το πρόγραμμα στο μενού Έναρξη -> Όλα τα προγράμματα -> Εργαλεία εντοπισμού σφαλμάτων για Windows -> Windbg

Παρουσιάζοντας το 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). Μπορείτε να εγκαταστήσετε το Visual Studio και το WDK ή να εγκαταστήσετε το πακέτο Debugging Tools for 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 Symbol Server, τα σύμβολα θα ληφθούν στο φάκελο C:\Symbols.

Εικόνα 6: Ρύθμιση του Microsoft Symbol Server

Το 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

Τώρα μπορείτε να συνδεθείτε από έναν απομακρυσμένο κεντρικό υπολογιστή σε μια υπάρχουσα περίοδο λειτουργίας εντοπισμού σφαλμάτων μεταβαίνοντας στο "File:Connect to a Remote Session" και εισάγοντας κάτι σαν το ακόλουθο στο πεδίο κειμένου: 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: Μήνυμα ασφαλείας που μπορεί να εμφανιστεί κατά την εκκίνηση διακομιστή εντοπισμού σφαλμάτων

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

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

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

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

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

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

windbg> .hh .reload

Ή απλώς μεταβείτε στην ενότητα Help:Contents.

Ενότητες

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

Μόλις συνδεθεί στη διαδικασία, το 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 777ba000 LPK 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] διεύθυνση του Bound Import Directory
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
.reloc όνομα
Εικονικό μέγεθος 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.

Εργαλεία εντοπισμού σφαλμάτων για 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 από ISO εικόνα των Windows SDK.
  • Εγκατάσταση εργαλείων εντοπισμού σφαλμάτων για Windows απευθείας από τα πακέτα dbg_amd64.msi / dbg_x86.msi.

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

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

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

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

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

Αφού ολοκληρωθεί η εγκατάσταση των Εργαλείων εντοπισμού σφαλμάτων για 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 και νεότερες, οι διαδρομές εγκατάστασης είναι αισθητά διαφορετικές από τις κλασικές για όλους ΠΡΟΗΓΟΥΜΕΝΕΣ ΕΚΔΟΣΕΙΣΕργαλεία εντοπισμού σφαλμάτων;

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

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

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

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

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

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

Κατά συνέπεια, είναι απαραίτητο να επιλέξετε αποκλειστικά ανάλογα με την ανάγκη. Συνήθως, το 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 σίγουρα θα σας φανεί χρήσιμο στη δουλειά σας! Στη συνέχεια, αφού κάνετε κλικ στο κουμπί "Επόμενο", η εγκατάσταση συνεχίζεται ως συνήθως. Και στο τέλος θα δείτε την επιγραφή "Η εγκατάσταση ολοκληρώθηκε".
Μετά την ολοκλήρωση της εγκατάστασης, οι κατάλογοι εργασίας του πακέτου Debugging Tools for Windows θα είναι οι εξής:

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

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

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

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

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

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

Μετά την ολοκλήρωση της εγκατάστασης, οι κατάλογοι εργασίας του πακέτου Debugging Tools for Windows θα είναι οι εξής:

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

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

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

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

  • 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-tier σε 3-tier.
dbengprx.exe Repeater (διακομιστής μεσολάβησης) για απομακρυσμένο εντοπισμό σφαλμάτων.
dbgrpc.exe Ένα βοηθητικό πρόγραμμα για την εμφάνιση πληροφοριών κατάστασης κλήσης RPC.
dbgsrv.exe Διαδικασία διακομιστή που χρησιμοποιείται για απομακρυσμένο εντοπισμό σφαλμάτων.
dbh.exe Ένα βοηθητικό πρόγραμμα για την εμφάνιση πληροφοριών σχετικά με τα περιεχόμενα ενός αρχείου συμβόλων.
dumpchk.exe Βοηθητικό πρόγραμμα ελέγχου απόρριψης. Ένα βοηθητικό πρόγραμμα για τον γρήγορο έλεγχο ενός αρχείου ένδειξης σφαλμάτων.
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 Βοηθητικό πρόγραμμα dump heap σε λειτουργία χρήστη. Ένα βοηθητικό πρόγραμμα για την ανάλυση σωρών της επιλεγμένης διαδικασίας. Σας επιτρέπει να εμφανίζετε διάφορες παραμέτρους για το σωρό.
usbview.exe USB Viewer. Ένα βοηθητικό πρόγραμμα για την προβολή συσκευών USB που είναι συνδεδεμένες σε υπολογιστή.
vmdemux.exe Αποπολυπλέκτης εικονικής μηχανής. Δημιουργεί πολλούς επώνυμους σωλήνες για μία σύνδεση COM. Τα κανάλια χρησιμοποιούνται για τον εντοπισμό σφαλμάτων διαφόρων στοιχείων εικονικής μηχανής
windbg.exe Λειτουργία χρήστη και εντοπισμός σφαλμάτων πυρήνα με GUI.

Να εντοπίσουμε τα αίτια μπλε οθόνες(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 ολοκληρώθηκαν. Για να αλλάξετε την εμφάνισή του, μπορείτε να μεταβείτε στο μενού Θέα- θα βρείτε τις ρυθμίσεις γραμματοσειράς επιλέγοντας Γραμματοσειράκαι τις ρυθμίσεις του παραθύρου της κονσόλας Επιλογές.




Μπλουζα