מהו קובץ PDB?
קובץ עם סיומת .pdb הוא קובץ מסד נתונים של תוכנית המכיל מידע איתור באגים עבור קובץ הפעלה מהידור (EXE/DLL). קובצי PDB נוצרים על ידי מהדרים של Microsoft כאשר תוכנית יישום מורכבת במצב ניפוי באגים. הנוכחות של קובץ PDB יכולה לעזור בהנדסה לאחור של קובץ הפעלה מכיוון שהוא מכיל מידע משמעותי על כל הסמלים של המודולים. מסיבה זו קבצים אלה נשמרים בנפרד מקובץ ההפעלה הסופי. DgbHelp API של מיקרוסופט יכול לפתוח קובץ PDB כדי לקבל מידע כגון ציבורים וייצוא, סמלים גלובליים, סמלים מקומיים, סוג נתונים, קבצי מקור ומספרי שורות.
פורמט קובץ PDB
PDB הוא פורמט הקובץ הקנייני של מיקרוסופט ועדיין לא תועד רשמית בשום מקום. עם זאת, תיעוד התחלה זמין כאן וניתן לעיין בו.
זרמי PDB
קבצי PDB מורכבים מזרמים מרובים כאשר כל זרם פועל כקובץ בודד וירטואלי ומכיל מידע. כותבי קבצי PDB יכולים לכתוב לקבצים אלה והקובץ מסתיים רק לאחר מתן commit מפורש. מהדר יכול להמשיך לכתוב לקובץ PDB אך לבצע commit רק אם כל קוד המשתמש יתבצע בהצלחה. קובץ PDB מורכב מהזרמים הבאים:
מס’ זרם | תוכן | תיאור קצר |
---|---|---|
1 | Pdb (כותרת) | מידע על גרסה, ומידע לחיבור PDB זה ל-EXE |
2 | Tpi (מנהל סוג) | כל הסוגים המשמשים בקובץ ההפעלה. |
3 | Dbi (מידע על ניפוי באגים) | מחזיק תרומות מקטע, ורשימת ‘מודים’ |
4 | מפת שם | מחזיק שולחן מחרוזת מגובב |
4-(n+4) | n Mod’s (מידע על מודול) | כל זרם Mod מכיל סמלים ומספרי שורות עבור קומפילנד אחד |
n+4 | hash סמל גלובלי | אינדקס המאפשר חיפוש בסמלים גלובליים לפי שם |
n+5 | hash סמל ציבורי | אינדקס המאפשר חיפוש בסמלים ציבוריים לפי כתובות |
n+6 | רשומות סמל | רישומי סמלים בפועל של סמלים גלובליים וציבוריים |
n+7 | הקלד hash | Hash בשימוש על ידי זרם TPI. |
כל זרם בקובץ PDB מורכב ממספר עמודים שאינם בהכרח ממוספרים ברציפות.
כותרת PDB
קובץ PDB קיים עם Header המורכב מחתימה לזיהוי ואימות הפורמט הספציפי. אורך החתימה תלוי בפורמט PDB. הכותרת עשויה להיות ארוכה מעמוד בודד.
מטא נתונים של PDB
המטא-נתונים של PDB אחראים לזהות את כל זרמי הרכיבים, תוך מתן אורך ורצף העמודים עבור כל זרם. פקודות ניתנות לזרמים ברצף; מתחיל ב-0. יש גם זרם שורש לא מסודר, המכיל חלק מהמטא נתונים.