aspose.info
TH

รูปแบบไฟล์ PDB - ไฟล์ฐานข้อมูลโปรแกรม

อัปเดตเมื่อ

ไฟล์ PDB คืออะไร??

ไฟล์ที่มีนามสกุล .pdb คือไฟล์ฐานข้อมูลของโปรแกรมที่มีข้อมูลการดีบักสำหรับโปรแกรมที่คอมไพล์แล้ว (EXE/DLL) ไฟล์ PDB ถูกสร้างขึ้นโดย Microsoft Compilers เมื่อโปรแกรมแอปพลิเคชันถูกคอมไพล์ในโหมดดีบัก การมีไฟล์ PDB สามารถช่วยในการทำวิศวกรรมย้อนกลับไฟล์ปฏิบัติการได้ เนื่องจากไฟล์ดังกล่าวมีข้อมูลที่สำคัญเกี่ยวกับสัญลักษณ์ทั้งหมดของโมดูล ด้วยเหตุนี้ไฟล์เหล่านี้จึงถูกแยกออกจากไฟล์ปฏิบัติการขั้นสุดท้าย DgbHelp API ของ Microsoft สามารถเปิดไฟล์ PDB เพื่อรับข้อมูล เช่น การเผยแพร่และการส่งออก สัญลักษณ์ส่วนกลาง สัญลักษณ์ท้องถิ่น พิมพ์ข้อมูล ไฟล์ต้นฉบับ และหมายเลขบรรทัด

รูปแบบไฟล์ PDB

PDB เป็นรูปแบบไฟล์ที่เป็นกรรมสิทธิ์ของ Microsoft และยังไม่มีการบันทึกไว้อย่างเป็นทางการในที่ใดๆ อย่างไรก็ตาม เอกสารเริ่มต้นมีให้ ที่นี่ และอ้างอิงได้

สตรีม PDB

ไฟล์ PDB ประกอบด้วยหลายสตรีมโดยแต่ละสตรีมทำหน้าที่เป็นไฟล์เสมือนแต่ละไฟล์และมีข้อมูล ตัวเขียนไฟล์ PDB สามารถเขียนไปยังไฟล์เหล่านี้ได้ และไฟล์จะเสร็จสิ้นหลังจากมีการคอมมิตที่ชัดเจนเท่านั้น คอมไพเลอร์สามารถเขียนไฟล์ PDB ต่อไปได้ แต่คอมไพล์เฉพาะเมื่อโค้ดผู้ใช้ทั้งหมดคอมไพล์สำเร็จ ไฟล์ PDB ประกอบด้วยสตรีมต่อไปนี้:

Stream No.สารบัญคำอธิบายสั้นๆ
1Pdb (ส่วนหัว)ข้อมูลเวอร์ชัน และข้อมูลเพื่อเชื่อมต่อ PDB นี้กับ EXE
2Tpi (ตัวจัดการประเภท)ทุกประเภทที่ใช้ในการปฏิบัติการ
3Dbi (ข้อมูลการแก้ไขจุดบกพร่อง)ระงับส่วนสนับสนุน และรายการของ ‘Mods’
4NameMapถือตารางสตริงที่แฮช
4-(น+4)n Mod’s (ข้อมูลโมดูล)สตรีม Mod แต่ละรายการมีสัญลักษณ์และหมายเลขบรรทัดสำหรับหนึ่งคอมไพแลนด์
n+4แฮชสัญลักษณ์ส่วนกลางดัชนีที่อนุญาตให้ค้นหาในสัญลักษณ์ส่วนกลางตามชื่อ
n+5แฮชสัญลักษณ์สาธารณะดัชนีที่อนุญาตให้ค้นหาในสัญลักษณ์สาธารณะตามที่อยู่
n+6บันทึกสัญลักษณ์บันทึกสัญลักษณ์จริงของสัญลักษณ์สากลและสาธารณะ
n+7พิมพ์แฮชแฮชที่ใช้โดยสตรีม TPI

แต่ละสตรีมในไฟล์ PDB ประกอบด้วยหน้าหลายหน้าซึ่งไม่จำเป็นต้องเรียงลำดับหมายเลข

ส่วนหัว PDB

ไฟล์ PDB มีส่วนหัวที่ประกอบด้วยลายเซ็นสำหรับการระบุและตรวจสอบความถูกต้องของรูปแบบเฉพาะ ความยาวของลายเซ็นขึ้นอยู่กับรูปแบบ PDB ส่วนหัวอาจยาวกว่าหนึ่งหน้า

ข้อมูลเมตาของ PDB

ข้อมูลเมตาของ PDB มีหน้าที่จดจำสตรีมคอมโพเนนต์ทั้งหมด โดยให้ความยาวและลำดับของหน้าสำหรับแต่ละสตรีม คำสั่งจะถูกส่งไปยังสตรีมอย่างต่อเนื่อง เริ่มต้นด้วย 0 นอกจากนี้ยังมีรูทสตรีมที่ไม่ได้เรียงลำดับซึ่งมีข้อมูลเมตาบางส่วน

อ้างอิง

ดูเพิ่มเติม