Чем открыть файл.PDB? Что такое расширение файла PDB? Как открыть pdb файл
Сопоставление PDB и исполняемых файлов
- Чулан *
Как бы хорошо не работал отдел тестирования, все же часто продукт уходит пользователю с изрядным количеством ошибок. В зависимости от продукта борьба с этими ошибками ведется по разному: ведение журнала операций, взятие у пользователя проблемного проекта, выезд к пользователю и т.д.
Для борьбы с критическими ошибками, приводящими к вылету, в моей компании используется механизм автоматического снятия дампа памяти и отправки нам на сервер. Каждый дамп подвергается изучению и на основе информации полученной из дампа принимаются дальнейшие решения.
Однако для того, что бы проанализировать дамп наименьшими силами необходимы файлы отладочной информации, в частности PDB-файлы, осуществляющие обратную связь от исполняемого файла к исходникам. В общем виде PDB файлы в моей компании сохраняются в отведенной и доступное всем место.
Однако не так давно случилось так, что PDB-файлы от выпущенной версии были случайно удалены. О том как я восстанавливал отладочную информацию я и хочу рассказать.
Первое что необходимо было сделать это собрать версию из тех же исходников, что не стало проблемой (будем называть эту сборку PDB_сборкой). В результате я получил PDB файлы примерно того же содержания. Примерно, потому что бинарно они не идентичны. Гарантию того, что они будут корректны для сборки у пользователя так же нету, однако опыт отладки подсказывает что большая часть проблем при помощи полученных PDB Можно решить.
Далее мне требовалось найти способ обмануть отладчик Visual Studio и заставить загружать эти PDB (для честности надо сказать что WinDbg может загружать практически куда угодно что угодно. Для этого надо выполнить команду.symopt+0x40). Проблема здесь заключается в том, что для каждой сборки генерируется GUID, который зашивается в глубины всех исполняемых и отладочных файлов. Так же студия при загрузке проверяет отметку времени последней записи в файл, которая должна быть идентична бинарному файлу.
Поиск в интернете меня навел на утилиту ChkMach , которая позволяет подменить GUID.
На деле оказалось что утилита не смогла справиться со всеми моими PDB файлами (если PDB файл размером больше примерно 70 метров утилита отказывается его перепрошивать).
Было решено написать нечто свое, что позволило бы сделать нужные махинации.
Алгоритм получился примерно следующий:
1) Загрузить исполняемый файл из сборки ушедшей пользователю и получить из него GUID. Этот GUID надо будет записать в PDB из PDB_сборки.
2) Загрузить PDB файл из PDB_сборки.
3) Получить GUID зашитый в PDB.
4) Найти все вхождения полученного GUID в PDB и заменить их на GUID полученный в пункте 1.
Я нашел два способа получить GUID из исполняемого файла.
Первый способ - это использование интерфейсов IDia. В Visual Studio (%VSINSTALLDIR%\DIA SDK\Samples\) есть пример использования. У этого способа однако есть проблема. Если для загружаемого исполняемого файла не найден PDB-файл, то исполняемый файл загружен не будет.
Второй способ заключается в том, что бы разбирать структуру исполняемого файла самостоятельно (то есть открыть как обычный бинарный файл и читать, читать и читать). Вот есть статья посвященная поиску сегмента отладочной информации в исполняемом файле, так же есть исходник примера, которым я и пользовался. Исходного кода там получилось достаточно много и здесь его приводить не буду, так что лучше качайте исходник (ссылка в конце статьи).
Что касается пункта 2 и 3, оказалось их крайне легко решить, воспользовавшись интерфейсами IDia.
Bool LoadDataFromPdb(const wchar_t *pdbFileName,
IDiaDataSource **ppSource,
IDiaSession **ppSession,
IDiaSymbol **ppGlobal,
GUID * guid)
CoInitialize(NULL);
Hr = CoCreateInstance(__uuidof(DiaSource),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IDiaDataSource),
(void **) ppSource);
If (FAILED(hr))
{
wprintf(L"CoCreateInstance failed - HRESULT = %08X\n", hr);
Return false;
}
Hr = (*ppSource)->loadDataFromPdb(pdbFileName);
If (FAILED(hr))
{
wprintf(L"loadDataFromPdb failed - HRESULT = %08X\n", hr);
return false;
}
Hr = (*ppSource)->openSession(ppSession);
If (FAILED(hr))
{
wprintf(L"openSession failed - HRESULT = %08X\n", hr);
return false;
}
Hr = (*ppSession)->get_globalScope(ppGlobal);
Return !FAILED((*ppGlobal)->get_guid(guid));
Поиск и замена GUID в файле, я думаю является, достаточно простой задачей, и описывать ее я не буду.
Однако стоит остановиться на одной мелочи.
Объявление структуры GUID выглядит так.
Typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
В силу того, что в конечном виде этот GUID предполагалось писать как массив байтов, необходимо было учесть порядок байт, и как следствие развернуть поля Data1, Data2 и Data3
Вдохновение для статьи и поделки бралось отсюда debuginfo.com
Теги: отладка кода, отладочная информация, pdb, dump
Чем открыть файл pdb?
Расширение pdb с английского языка расшифровывается, как база данных программы. Файлы, созданные в этом формате, используются такими программами, как например, Pegasus, Quicken, также Palm Pilot – программное обеспечение. Данные хранятся в структурированном формате, также открытие таких файлов зачастую может быть произведено только программами, в которых pdb файл был создан.
Существуют несколько вариантов программ, с помощью которых можно открыть файл pdb. Выбор той или иной программы зависит непосредственно от самого файла. Если это формат базы данных, то открыть его можно с помощью Microsoft Visual Studio NET либо Intuit Quicken. Если это формат Palm Desktop, то открыть файл pdb можно с помощью программ LLUSoft PDB Explorer, либо PRODEC Desktop PDB Viewer, либо текстовым редактором. Если это расширение используется базой данной PowerDesigner, то открыть файл pdb можно с помощью программы Sybase PowerDesigner.
Так как в основном это расширение используется для электронных книг, то рассмотрим два основных вида таких форматов. iSilo pdb – это расширение для большинства карманных устройств, отличительная особенность такого формата это высокая степень сжатия текста. Открывается при помощи Adobe Acrobat, который можно скачать на официальном сайте Adobe,и который читает видео, звуковые и текстовые файлы, или при помощи приложения Isilo. PalmDoc – тоже популярный pdb формат, но степень сжатия текста гораздо ниже, графика и гиперссылки не поддерживаются. Открыть можно с помощью большинства программ для электронных книг.
Хотелось бы посоветовать одну из таких программ. Ice Book Reader поддерживает этот формат и скачивается бесплатно. Считается лидером среди подобных программ, поддерживает книжный вид, сохранение книг в библиотеке и чтение вслух.
You"re here because you have a file that has a file extension ending in .pdb. Files with the file extension .pdb can only be launched by certain applications. It"s possible that .pdb files are data files rather than documents or media, which means they"re not meant to be viewed at all.
what is a .pdb file?
A variety of applications are associated with the .pdb file extension. It is used as a program database file type that many applications use such as MS Visual Studio, Pegasus, etc. However, in this format, .pdb files usually cannot be opened by just any application other than the application installed with it. This file extension is also used as a Palm Desktop Database File wherein it is also used by Palm-based PDA devices. These files contain variety of information. They can be spreadsheets, databases, images, etc. .pdb files are also files in the Protein Data Bank File format; a format used when studying structures of protein which is why these files are mostly used by the Research Collaboratory for Structural Bioinformatics. The .pdb file extension is also used as PowerDesigner Database Backup File used by PowerDesigner database wherein these .pdb files refer to data that this database saves as well as they also contain other file references.
how to open a .pdb file?
Launch a .pdb file, or any other file on your PC, by double-clicking it. If your file associations are set up correctly, the application that"s meant to open your .pdb file will open it. It"s possible you may need to download or purchase the correct application. It"s also possible that you have the correct application on your PC, but .pdb files aren"t yet associated with it. In this case, when you try to open a .pdb file, you can tell Windows which application is the correct one for that file. From then on, opening a .pdb file will open the correct application.
applications that open a .pdb file
Microsoft Visual Studio
Microsoft Visual Studio
Microsoft Visual Studio is an integrated development environment (IDE) produced by Microsoft. It has a code editor that supports syntax highlighting and code completion using IntelliSense for not only variables, functions and methods but also language constructs like loops and queries; includes a debugger that works both as a source-level debugger and as a machine-level debugger; includes a host of visual designers to aid in the development of applications and other tools. Visual Studio permits developers to write extensions for Visual Studio to expand its capabilities. These extensions are linked to Visual Studio and extend its functionality. Extensions come in the form of macros, add-ins, and packages. Macros represent repeatable tasks and actions that developers can write programmatically for saving, replaying, and distributing; add-ins gives access to the Visual Studio object model and can interact with the IDE tools; and packages can create designers and other tools, as well as integrate other programming languages.Palm Desktop
Palm Desktop is an application that comes with all Palm Devices. It is a personal information manager that can be used with Microsoft Windows, Mac OS or Mac OS X. It combines the functions of an address book, calendar, a task manager, and a journal (notes). Palm Desktop allows users to sort, edit, view, and back up data from their Palm handhelds to their personal computer. It synchronizes the devices via Palm’s HotSync application. Alternatively, it may also be utilized as a standalone computer program. It comes with various options to send and share data from one user to another. Other additional features include expenses tracking, customization and desktop alarms, among others. Higher version of this software fixes all known bugs of its prior version. Palm Desktop 6.2 works with Windows Vista, Windows XP Home, Windows XP Professional and Windows Media Center.a word of warning
Be careful not to rename the extension on .pdb files, or any other files. This will not change the file type. Only special conversion software can change a file from one file type to another.
Объявление
Формат файлов PDB Database
Формат файлов PDB - стандартный формат баз данных, используемый на КПК Palm, Pegasus, Quicken и др. Этот формат данных позволяет хранить различные типы данных - электронные книги, документы, изображения, карты, таблицы и т.п. - в четко структурированном виде. Очень важно при этом знать, какая программа создала файл PDB, ведь правильно открыть и отобразить его можно только такой программой.
Технические сведения о файлах PDB
Файлы PDB используются языком программирования C++. В большинстве случаев это расширение используется на устройствах PalmPilote. Несмотря на то, что формат позволяет переформатировать текст, у него нет некоторых свойств и функций, которыми обладают современные форматы электронных книг (например, в файлах PDB можно создавать только простейшие таблицы). Формат PDB был разработан для устройств с небольшим объемом памяти Palm в 1990-х гг., и именно поэтому он использует технологию сжатия RLE.
Дополнительная информация о формате PDB
Расширение файла | .pdb |
Категория файлов | |
Связанные программы | ICE Book Reader Palm Reader Microsoft Visual Studio Pegasus Quicken |