Для чого потрібен PDB-файл?
PDB-файли: Що повинен знати кожен розробник
Приклад сценарію PDB:
Що таке PDB-файл?
Більшість розробників повинні знати, що PDB-файли використовуються для допомоги у програмному налагодженні. Але як саме він працює, можливо, нам не знайомо. У цій статті описується зберігання та вміст файлів PDB. Він також описує, як відлагоджувач знаходить PDB-файл, що відповідає binay, і як він знаходить файл вихідного коду, що відповідає binay. Ця стаття для всіх нативних і керованих розробників.
Перш ніж почати, давайте визначимо два терміни: приватна збірка, яка використовується для позначення збірки, створеної на власній машині розробника; Публічна збірка, тобто збірка, згенерована на машині публічної збірки. приватне будівництво відносно просте, бо PDB і Binay знаходяться в одному місці, і зазвичай проблеми стосуються публічного будівництва.
Найважливіше, що потрібно знати всім розробникам — це те, що «PDB-файли так само важливі, як і вихідний код», без яких ви навіть не можете налагодити. Для публічної збірки сервер символів має зберігати всі PDB, а коли користувач повідомляє про помилку, відлагоджувач автоматично може знайти відповідний PDB-файл у binay, і Visual Studio та Windbg знають, як отримати доступ до сервера символів. Перед тим, як зберігати PDB і binay на сервері символів, потрібно також індексувати PDB запуск, тобто асоціювати PDB і джерело.
Наступна частина передбачає, що Symbol Server і Source Server Indexing вже налаштовані. TFS2010 можна зробити так само просто, як індексація вихідного коду та копіювання символічного сервера для нової збірки.
2. Зміст файлу PDB
Офіційно розпочинаючи контент PDB, PDB не є публічно доступним форматом файлу, але Microsoft надає API для отримання даних з PDB.
Рідний PDB C++ містить таку інформацію: * публічні, приватні та статичні функціональні адреси; * Назва та адреса глобальної змінної; * Імена параметрів і локальних змінних і зсув на стеку; * визначення типів класу, структури та даних; * Дані про пропуск вказівника кадру для проходження нативного стеку на x86; * Ім'я та кількість рядків у файлі вихідного коду;
PDB .NET містить лише 2 частини інформації: * Ім'я файлу вихідного коду та кількість рядків; * та назву локальної змінної; * Всі інші дані вже включені у . Метадані NET;
|