Τι είναι ένα αρχείο PDB;
Ένα αρχείο με επέκταση .pdb είναι ένα αρχείο βάσης δεδομένων προγράμματος που περιέχει πληροφορίες εντοπισμού σφαλμάτων για ένα μεταγλωττισμένο εκτελέσιμο αρχείο (EXE/DLL). Τα αρχεία PDB δημιουργούνται από τους Microsoft Compilers όταν ένα πρόγραμμα εφαρμογής μεταγλωττίζεται σε λειτουργία εντοπισμού σφαλμάτων. Η παρουσία αρχείου PDB μπορεί να βοηθήσει στην αντίστροφη μηχανική ενός εκτελέσιμου αρχείου καθώς περιέχει σημαντικές πληροφορίες για όλα τα σύμβολα των λειτουργικών μονάδων. Αυτός είναι ο λόγος που αυτά τα αρχεία διατηρούνται χωριστά από το τελικό εκτελέσιμο αρχείο. Το [DgbHelp API] της Microsoft (https://learn.microsoft.com/en-us/windows/win32/debug/dbghelp-functions) μπορεί να ανοίξει ένα αρχείο PDB για να λάβει πληροφορίες όπως δημόσια και εξαγωγές, καθολικά σύμβολα, τοπικά σύμβολα, πληκτρολογήστε δεδομένα, αρχεία προέλευσης και αριθμούς γραμμών.
Μορφή αρχείου PDB
Το PDB είναι η ιδιόκτητη μορφή αρχείου της Microsoft και δεν έχει τεκμηριωθεί επίσημα πουθενά ακόμα. Ωστόσο, μια αρχική τεκμηρίωση είναι διαθέσιμη εδώ και μπορεί να γίνει αναφορά.
Ροές PDB
Τα αρχεία PDB αποτελούνται από πολλαπλές ροές όπου κάθε ροή λειτουργεί ως εικονικό μεμονωμένο αρχείο και περιέχει πληροφορίες. Οι συντάκτες αρχείων PDB μπορούν να γράψουν σε αυτά τα αρχεία και το αρχείο οριστικοποιείται μόνο αφού εκδοθεί μια ρητή δέσμευση. Ένας μεταγλωττιστής μπορεί να συνεχίσει να γράφει σε ένα αρχείο PDB αλλά να δεσμεύει μόνο εάν όλος ο κώδικας χρήστη μεταγλωττιστεί με επιτυχία. Ένα αρχείο PDB αποτελείται από τις ακόλουθες ροές:
Αριθμός ροής | Περιεχόμενα | Σύντομη περιγραφή |
---|---|---|
1 | Pdb (κεφαλίδα) | Πληροφορίες έκδοσης και πληροφορίες για τη σύνδεση αυτού του PDB στο EXE |
2 | Tpi (Διαχείριση τύπων) | Όλοι οι τύποι που χρησιμοποιούνται στο εκτελέσιμο. |
3 | Dbi (Πληροφορίες εντοπισμού σφαλμάτων) | Διατηρεί συνεισφορές ενότητας και λίστα “Mods” |
4 | NameMap | Κρατάει έναν κατακερματισμένο πίνακα συμβολοσειρών |
4-(n+4) | n Mod’s (Πληροφορίες ενότητας) | Κάθε ροή Mod περιέχει σύμβολα και αριθμούς γραμμών για ένα compiland |
n+4 | Παγκόσμιος κατακερματισμός συμβόλων | Ένα ευρετήριο που επιτρέπει την αναζήτηση σε καθολικά σύμβολα με βάση το όνομα |
n+5 | Κατακερματισμός δημόσιου συμβόλου | Ένα ευρετήριο που επιτρέπει την αναζήτηση σε δημόσια σύμβολα κατά διευθύνσεις |
n+6 | Εγγραφές συμβόλων | Πραγματικές εγγραφές συμβόλων παγκόσμιων και δημόσιων συμβόλων |
n+7 | Πληκτρολογήστε hash | Κατακερματισμός που χρησιμοποιείται από τη ροή TPI. |
Κάθε ροή σε ένα αρχείο PDB αποτελείται από πολλές σελίδες που δεν είναι απαραίτητα διαδοχικές αριθμημένες.
Κεφαλίδα PDB
Ένα αρχείο PDB έχει μια κεφαλίδα που αποτελείται από μια υπογραφή για τον προσδιορισμό και την επικύρωση της συγκεκριμένης μορφής. Το μήκος της υπογραφής εξαρτάται από τη μορφή ΠΣΠ. Η κεφαλίδα μπορεί να είναι μεγαλύτερη από μία σελίδα.
Μεταδεδομένα ΠΣΠ
Τα μεταδεδομένα PDB είναι υπεύθυνα για την αναγνώριση όλων των ροών στοιχείων, δίνοντας το μήκος και τη σειρά των σελίδων για κάθε ροή. Οι παραγγελίες δίνονται σε ροές διαδοχικά. ξεκινώντας με 0. Υπάρχει επίσης ένα μη διατεταγμένο ριζικό ρεύμα, το οποίο περιέχει μερικά από τα μεταδεδομένα.